- GRUB2 cho phép bạn linh hoạt lựa chọn phiên bản kernel nào sẽ khởi động mặc định, bằng cách sử dụng chỉ mục menu hoặc tên mục chính xác.
- Việc sử dụng các nhánh linux-generic, HWE và edge đòi hỏi phải kiểm soát GRUB để tránh sự không ổn định khi cài đặt các kernel mới hơn.
- Việc chỉnh sửa tệp /etc/default/grub và tạo lại cấu hình bằng lệnh update-grub là bước cơ bản để sửa lỗi hoặc khôi phục kernel mặc định.
- Việc gỡ bỏ các nhân hệ điều hành xung đột và duy trì ít nhất một nhánh ổn định đảm bảo hệ thống vẫn có thể khởi động và an toàn.

Lựa chọn phiên bản nhân hệ điều hành nào sẽ khởi động mặc định trong Linux. Đây không chỉ là đặc điểm riêng của những quản trị viên tỉ mỉ: trong nhiều trường hợp, đó là sự khác biệt giữa việc có một hệ thống ổn định và việc gặp phải các sự cố, xung đột với trình điều khiển đồ họa hoặc lỗi phần cứng mới. Điều này đặc biệt đúng với Ubuntu và các bản phân phối dựa trên Debian khác, nơi các nhánh chung, HWE và các bản phân phối khác cùng tồn tại. phiên bản thử nghiệmViệc kiểm soát GRUB2 gần như là bắt buộc.
Khi bạn cài đặt nhiều lõi xử lý song song, GRUB2 luôn cố gắng khởi động với nhân hệ điều hành mới nhất hiện có.Điều đó thường không sao, nhưng nếu bạn buộc phải quay lại phiên bản trước đó do lỗi phần mềm hoặc trình điều khiển bị lỗi, bạn cần cho GRUB biết mục nào sẽ được sử dụng làm mặc định. Trong bài viết này, chúng ta sẽ xem xét chi tiết và không vòng vo cách thực hiện điều này một cách an toàn và lâu dài, những điểm khác biệt bạn cần lưu ý với các nhánh HWE mới và cách kết hợp nó với các thủ thuật hữu ích khác liên quan đến GRUB2.
Ubuntu hỗ trợ những phiên bản kernel nào và tại sao bạn lại muốn thay đổi chúng?
Ubuntu duy trì song song một số dòng nhân hệ điều hành.Được thiết kế cho các tình huống khác nhau. Hiểu rõ những gì bạn đã cài đặt là bước đầu tiên trước khi động chạm vào bất cứ thứ gì trong GRUB2, vì điều đó sẽ quyết định những mục nào bạn thấy trong menu khởi động và mục nào bạn muốn sử dụng làm mặc định.
Một mặt là nhánh cổ điển linux-genericĐây là nhân hệ điều hành thường được cài đặt sẵn trên các máy chủ và hệ thống mà tính ổn định là yếu tố tối quan trọng. Đây là những nhân hệ điều hành có tuổi thọ cao, được kiểm tra kỹ lưỡng, và trong các phiên bản LTS như Ubuntu 22.04, chúng thường tương ứng với các dòng như 5.15.x. Triết lý của chúng rất rõ ràng: ít sự cố bất ngờ hơn, ít lỗi hơn sau khi cập nhật.
Máy tính để bàn Ubuntu cũng cung cấp Các nhân HWE (Kích hoạt phần cứng)Các nhánh này được cài đặt, ví dụ, bằng các lệnh như sau: sudo apt cài đặt linux-generic-hwe-22.04 và chúng nhắm đến các phiên bản kernel mới hơn, chẳng hạn như dòng 6.5.x trong trường hợp Ubuntu 22.04 LTS, với mục đích hỗ trợ phần cứng hiện đại chưa tồn tại khi phiên bản LTS ban đầu được phát hành.
Nếu bạn cần tiến thêm một bước nữa, cũng có biến thể này. hwe-edgeđược thiết kế như chi nhánh "tiên phong" o Tối tânNó được cài đặt bằng các lệnh như sau: sudo apt install linux-generic-hwe-22.04-edge Nó thường bao gồm cả các nhân hệ điều hành mới hơn (ví dụ: 6.7.x trong chính Ubuntu 22.04). Điều này giúp hỗ trợ phần cứng rất hiện đại, nhưng đổi lại là khả năng gặp phải lỗi, sự không ổn định hoặc hành vi bất thường cao hơn.
Mặc dù hệ thống chỉ chạy một nhân hệ điều hành tại một thời điểm.Hình ảnh của các lõi cổ đại được lưu giữ trong /boot Nó giống như một hợp đồng bảo hiểm nhân thọ. Nếu bản cập nhật khiến máy tính của bạn không thể sử dụng được, khả năng khởi động vào phiên bản cũ hơn có thể cứu vãn tình thế. Vấn đề là một khi bạn cài đặt nhân hệ điều hành mới hơn, Ubuntu sẽ có xu hướng khởi động vào nhân đó mỗi lần, và việc gỡ cài đặt mà không thể khởi động vào nhân khác có thể rất phiền phức.
Tạm thời chọn một nhân hệ điều hành khác từ menu GRUB2.
Trước khi bắt đầu chỉnh sửa tập tin, điều đáng nhớ là: GRUB2 đã cho phép bạn tự chọn một nhân hệ điều hành khác khi khởi động.Nếu bạn có thể tiếp cận trực tiếp với máy tính và bàn phím được kết nối, bạn thường không cần thêm bất cứ thứ gì khác để thử phiên bản xem trước.
Trong Ubuntu, khi bật máy, Bạn có thể hiển thị menu GRUB2 bằng cách giữ phím Shift. Trong giai đoạn khởi động ban đầu. Trong các hệ thống BIOS truyền thống, nó hoạt động tốt; trong UEFI, thường chỉ cần GRUB hiển thị menu mặc định là đủ, nhưng ý tưởng vẫn giống nhau: để xem danh sách các hệ thống và tùy chọn.
Trong menu đó, bạn thường sẽ thấy mục đầu tiên thuộc loại Ubuntu, đây là chương trình khởi động nhân hệ điều hành được cài đặt gần nhất, tiếp theo là một menu con có tên là Các tùy chọn nâng cao cho Ubuntu (Tùy chọn nâng cao). Trong menu phụ này, tất cả các phiên bản kernel khả dụng đều được liệt kê, mỗi phiên bản đều có chế độ bình thường và chế độ phục hồi.
Nếu bạn gặp sự cố với phiên bản kernel mới nhất, Thông thường, người ta sẽ vào phần "Tùy chọn nâng cao cho Ubuntu". và chọn phiên bản cũ hơn (ví dụ: Ubuntu, with Linux 5.15.0-94-generic) thay vì phiên bản 6.x mới nhất. Sau khi khởi động thành công với phiên bản đó, bạn có thể gỡ cài đặt các kernel xung đột và tạo lại cấu hình bằng sudo update-grub.
Tất nhiên, giải pháp thủ công này có một nhược điểm: Nó chỉ hoạt động nếu bạn có thể tương tác với GRUB.Trên các máy chủ không có bàn phím, máy tính từ xa hoặc môi trường mà bạn không thấy bảng điều khiển khởi động, bạn cần một phương pháp cố định để cho GRUB biết phương thức nhập liệu nào sẽ luôn được sử dụng, mà không cần hỏi bạn mỗi khi khởi động.
Liệt kê tất cả các nhân hệ điều hành mà GRUB2 biết.
Để thiết lập kernel mặc định một cách đáng tin cậy, Trước tiên, bạn cần biết GRUB2 thực sự đã cấu hình những mục menu nào.Chỉ nhìn vào các gói đã cài đặt thôi là chưa đủ, vì vị trí của chúng trong menu có thể thay đổi khi thêm hoặc xóa nhân hệ điều hành.
GRUB2 tạo menu chính của nó trong tệp tin /boot/grub/grub.cfgMặc dù không nên chỉnh sửa thủ công (vì nó sẽ bị ghi đè khi bạn chạy chương trình). Cập nhật-Grub.Vâng, bạn có thể đọc nó để trích xuất thông tin. Một lệnh rất hữu ích để liệt kê các mục là:
grep -Ei 'submenu|menuentry ' /boot/grub/grub.cfg | sed -re «s/(.? )'(+)'.*/\1 \2/»
Lệnh này Nó sẽ trả về danh sách tất cả các mục và menu con. Những thông báo xuất hiện khi khởi động, tương tự như sau:
menuentry Ubuntu
submenu Advanced options for Ubuntu
menuentry Ubuntu, with Linux 6.7.0-15-generic
menuentry Ubuntu, with Linux 6.7.0-15-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-94-generic
menuentry Ubuntu, with Linux 5.15.0-94-generic (recovery mode)
menuentry Ubuntu, with Linux 5.15.0-92-generic
menuentry Ubuntu, with Linux 5.15.0-92-generic (recovery mode)
menuentry Memory test (memtest86+.elf)
menuentry Memory test (memtest86+.bin, serial console)
menuentry MS-DOS 5.x/6.x/Win3.1 (on /dev/sdf1)
Kết quả đầu tiên thường là "Ubuntu" với nhân hệ điều hành hiện đại nhất.Và trong menu phụ "Tùy chọn nâng cao", tất cả các phiên bản đã cài đặt sẽ xuất hiện, được sắp xếp từ mới nhất đến cũ nhất. Trong ví dụ của chúng tôi, nếu bạn muốn luôn khởi động với Ubuntu, with Linux 5.15.0-94-genericMục đó sẽ nằm trong menu phụ nâng cao, chứ không phải menu chính.
Chọn một kernel cụ thể theo vị trí trong menu (chỉ mục GRUB_DEFAULT)
Một hình thức cổ điển của Chỉ định nhân hệ điều hành mà GRUB2 muốn khởi động theo mặc định. Thao tác này bao gồm việc chỉ định chỉ mục (vị trí) của mục nhập, hoặc thậm chí là tổ hợp "menu con > mục nhập" khi phiên bản mong muốn nằm trong "Tùy chọn nâng cao cho Ubuntu".
Tệp điều khiển điều này là / etc / default / grubTrước khi thực hiện bất kỳ thay đổi nào, bạn nên tạo bản sao lưu nhanh để phòng trường hợp cần khôi phục lại trạng thái trước đó. Bạn có thể thực hiện việc này bằng lệnh:
sudo cp / etc / default / grub /etc/default/grub.bak
Tiếp theo, hãy chỉnh sửa nó bằng trình soạn thảo yêu thích của bạn, ví dụ như Nano:
sudo nano / etc / default / grub
Bên trong bạn sẽ thấy một dòng như thế này. GRUB_DEFAULT=0Điều này cho thấy mục đầu tiên trong menu chính (chỉ số 0) sẽ được sử dụng. Nếu nhân hệ điều hành bạn muốn sử dụng nằm trong menu phụ "Tùy chọn nâng cao".Bạn có thể yêu cầu GRUB vào menu con đó và chọn một vị trí cụ thể bằng cách sử dụng cú pháp sau: submenú>entrada.
Theo ví dụ trước, nếu "Tùy chọn nâng cao cho Ubuntu" là tùy chọn số 1 trong menu chính và trong menu con đó, "Ubuntu, với Linux 5.15.0-94-generic" là tùy chọn thứ ba (tính từ số 0 và bỏ qua các chế độ phục hồi), bạn có thể viết như sau:
GRUB_DEFAULT="1>3"
Nguyên lý rất đơn giản, nhưng bạn phải chú ý đến các chỉ số.Cấp độ đầu tiên đề cập đến vị trí của menu con trong menu chính, và cấp độ thứ hai đề cập đến vị trí của mục đó trong menu con. Ngoài ra, hãy nhớ rằng các mục "chế độ phục hồi" thường được sắp xếp so le, vì vậy các tùy chọn thông thường sử dụng số lẻ và các tùy chọn phục hồi sử dụng số chẵn.
Sau khi bạn đã thay đổi GRUB_DEFAULT, lưu tập tin (trong Nano, Ctrl + O và sau đó Ctrl + X) và áp dụng các thay đổi bằng cách tạo lại cấu hình GRUB với:
sudo update-grub
Đằng sau cái này, khởi động lại hệ thống bằng sudo reboot và sau khi khởi động, nó sẽ kiểm tra xem nhân hệ điều hành nào đã được tải bằng lệnh:
uname-a
Ví dụ, kết quả sẽ hiển thị cho bạn như sau: Linux ... 5.15.0-94-generic ... cho biết rằng bạn hiện đang sử dụng phiên bản bạn đã thiết lập bằng cách sử dụng các chỉ mục trong GRUB_DEFAULT.
Hãy sử dụng tên mục menu thay vì chỉ mục (chế độ "đã lưu").
Phương pháp lập chỉ mục có một vấn đề lớn: Vị trí các thành phần sẽ thay đổi khi bạn cài đặt hoặc gỡ cài đặt nhân hệ điều hành.Điều đó có nghĩa là việc cập nhật nhân hệ điều hành có thể khiến... 1>3 Đừng nhắm mục tiêu vào đúng nhân hệ điều hành, đó chính xác là điều bạn muốn tránh nếu muốn có sự ổn định lâu dài.
GRUB2 cung cấp một giải pháp thay thế mạnh mẽ hơn nhiều: Sử dụng chính xác tên của mục menu làm mục mặc định.Theo cách này, miễn là mục nhập đó tồn tại trong grub.cfgNó sẽ tiếp tục được chọn ngay cả khi các phiên bản mới được thêm vào phía trên hoặc phía dưới nó trong danh sách.
Ý tưởng chung là như sau: thứ nhất Bạn tìm tên đầy đủ của món ăn trong thực đơn mà bạn muốn.như nó xuất hiện trong /boot/grub/grub.cfg (ví dụ Ubuntu, with Linux 6.8.0-60-generic), và sau đó bạn cấu hình GRUB để sử dụng nó như mục đã lưu mặc định.
Để tìm tên chính xác, bạn có thể mở tệp cấu hình bằng trình soạn thảo hoặc trình xem, ví dụ:
sudo nano /boot/grub/grub.cfg
Khi vào trong, Sử dụng tổ hợp phím Ctrl+W trong Nano để tìm kiếm chuỗi ký tự tương ứng với phiên bản kernel. điều đó khiến bạn quan tâm (ví dụ: "6.8.0-60-generic"). Theo hướng như sau: menuentry Bạn sẽ thấy tiêu đề đầy đủ, đại loại như:
menuentry 'Ubuntu, with Linux 6.8.0-60-generic' ...
Giờ đây, thay vì chơi với các chỉ số, Bạn có thể hướng dẫn GRUB sử dụng tên đó làm lựa chọn đã lưu.Quy trình thông thường bao gồm việc thực thi các lệnh như sau:
sudo grub-set-default «Ubuntu, with Linux 6.8.0-60-generic»
Lệnh này định nghĩa mục được chỉ định là mục được coi là "mặc định đã lưu". Để xác nhận rằng nó đã được áp dụng chính xác, bạn có thể kiểm tra tệp môi trường GRUB:
sudo grub-editenv list
Bạn sẽ thấy một dòng như thế này:
saved_entry=Ubuntu, with Linux 6.8.0-60-generic
Cũng có khả năng, tùy thuộc vào cấu hình trước đó, Tùy chọn GRUB_DEFAULT=saved đang được sử dụng. en /etc/default/grubđiều này cho GRUB biết luôn sử dụng cái cuối cùng mục đã lưu đã được thiết lập. Trong bất kỳ trường hợp nào, trong khi saved_entry Nếu nó phù hợp với nhân hệ điều hành bạn mong muốn, bạn sẽ tiếp tục khởi động phiên bản đó một cách tự động.
Sau khi áp dụng những thay đổi này, Tạo lại tệp cấu hình bằng sudo update-grubKhởi động lại hệ thống và xác nhận lại bằng uname-a Bạn đã bắt đầu với phiên bản được định nghĩa là mặc định.
Thay đổi nhân hệ điều hành Ubuntu sang một phiên bản cụ thể (cài đặt và hạ cấp)
Trong nhiều trường hợp, bạn không chỉ muốn chọn một nhân hệ điều hành được cài đặt sẵn, mà còn muốn lựa chọn nhiều hơn thế. chuyển đổi từ phiên bản hiện tại sang một phiên bản cụ thểNguyên nhân có thể là do ứng dụng của bạn yêu cầu, do trình điều khiển chỉ hỗ trợ một dòng máy nhất định, hoặc do bản cập nhật gần đây đã làm hỏng một nửa hệ thống của bạn.
Bước đầu tiên luôn phải là Hãy biết bạn hiện đang sử dụng nhân hệ điều hành nào.Để làm điều này, bạn có thể sử dụng các lệnh như sau:
uname-r
O tốt:
uname-a
Kết quả trả về sẽ tương tự như sau:
Linux web 6.8.0-85-generic #85~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC ... x86_64 GNU/Linux
Khi bạn đã biết mình đang ở đâu, bước tiếp theo là... Kiểm tra xem có những nhân hệ điều hành nào có sẵn trong kho lưu trữ.Trong môi trường Ubuntu/Debian, việc này thường được thực hiện bằng cách truy vấn các gói. linux-image Tìm kiếm trong kho lưu trữ, lọc theo phiên bản bạn quan tâm. Sau khi tìm thấy phiên bản cụ thể, bạn có thể cài đặt trực tiếp bằng apt hoặc tự biên dịch (xem phần hướng dẫn). Cách tìm kiếm cấu hình trong `make menuconfig`), tùy theo sở thích của bạn.
Ví dụ, nếu bạn muốn đi xuống từ 6.8.0-85-chung a 6.8.0-60-chungBạn sẽ cài đặt gói tương ứng bằng lệnh thích hợp, xác nhận bằng "S" khi apt Nó sẽ hỏi bạn có muốn tiếp tục cài đặt hay không. Sau khi quá trình hoàn tất, Khi đó, bạn sẽ có phiên bản nhân hệ điều hành đó để khởi động.Tuy nhiên, GRUB sẽ tiếp tục chọn phiên bản mới nhất cho đến khi bạn thay đổi cài đặt như đã hướng dẫn.
Sau khi cài đặt nhân hệ điều hành mong muốn, khởi động lại máy tính Bạn có thể gán nó làm mặc định bằng một trong các phương pháp trên (theo chỉ số hoặc theo tên), tùy thuộc vào phương pháp nào thuận tiện và hiệu quả hơn trong trường hợp của bạn.
Chọn một nhân hệ điều hành cụ thể từ menu phụ "Tùy chọn nâng cao" làm mặc định.
Trong các bản phân phối như Ubuntu 22 và 24, khi thêm một phiên bản kernel thấp hơn phiên bản hiện tại, Phiên bản đó không được đặt làm mục chính.nhưng được thêm vào menu phụ Các tùy chọn nâng cao cho UbuntuDo đó, ngay cả khi bạn cài đặt phiên bản 6.8.0-60 thấp hơn phiên bản 6.8.0-85, khi khởi động lại, hệ thống vẫn sẽ khởi động với phiên bản 85.
Đối với GRUB2 tự động chọn phiên bản bạn muốn từ menu phụ.Bạn cần biết vị trí chính xác của nó. Một lần nữa, lệnh liệt kê... menuentry y submenu Nó giúp bạn thấy được cấu trúc và thứ tự số mà GRUB sẽ sử dụng.
Hãy tưởng tượng rằng sau khi chạy lệnh liệt kê, bạn phát hiện ra rằng nhân hệ điều hành mục tiêu của bạn (ví dụ: "Ubuntu, với Linux 6.8.0-60-generic") xuất hiện ở vị trí thứ tư trong menu con "Tùy chọn nâng cao", và menu con này là menu đầu tiên sau mục chính. Trong trường hợp đó, tổ hợp chỉ số, bắt đầu từ số không, sẽ là... 1> 2 (menu con ở vị trí 1, mục ở vị trí 2 trong menu con đó).
Trong tập tin /etc/default/grubSau đó, bạn sẽ thay đổi dòng này:
GRUB_DEFAULT=0
bởi:
GRUB_DEFAULT="1>2"
Sau khi lưu các thay đổi và chạy, hãy thực hiện. sudo update-grub, Lần khởi động tiếp theo, nhân hệ điều hành đó sẽ được tự động chọn. trong mục "Tùy chọn nâng cao", mà không cần phải vào menu phụ thủ công mỗi lần.
Sau khi khởi động lại, bạn có thể kiểm tra xem mọi thứ đã diễn ra tốt đẹp chưa bằng cách uname-r o uname-a, xác minh rằng phiên bản kernel đang hoạt động là phiên bản bạn đã thiết lập thông qua GRUB_DEFAULT.
Gỡ cài đặt các kernel HWE và edge rồi quay lại nhánh ổn định.
Khi bạn đã có Khởi động hệ thống với nhân ổn định từ nhánh linux-generic. (Ví dụ: dòng 5.15.x trên Ubuntu 22.04 LTS), bước tiếp theo hợp lý nếu các nhân HWE hoặc edge gây ra sự cố cho bạn là làm sạch các nhánh đó của hệ thống.
Để gỡ cài đặt các gói meta HWE, bạn có thể sử dụng lệnh sau: apt thanh trừng Với ký tự đại diện bao phủ toàn bộ nhánh, ví dụ như:
sudo apt purge linux-generic-hwe-22.04*
Sau khi gỡ bỏ các gói meta đó, có lẽ bạn sẽ muốn... Ngoài ra, hãy xóa các ảnh chụp màn hình của các nhân hệ điều hành hiện đại mà bạn không còn cần nữa.Ví dụ, nếu bạn muốn loại bỏ tất cả các phiên bản kernel cao hơn 6.x và chỉ giữ lại phiên bản 5.x, bạn có thể sử dụng lệnh như sau:
sudo apt purge linux-image-6*
Loại gỡ bỏ này loại bỏ các gói ảnh kernel có tên bắt đầu bằng "linux-image-6", vì vậy bạn nên xem xét kỹ những gì mình sắp gỡ cài đặt trước khi xác nhận. Đừng quên rằng Bạn phải duy trì ít nhất một nhánh ổn định và hoạt động tốt., thông thường linux-genericvì nếu không có nó, hệ thống có thể hết các nhân hệ điều hành có thể khởi động.
Sau khi thực hiện bất kỳ thao tác dọn dẹp nhân hệ thống nào, điều này là rất cần thiết. Cập nhật cấu hình GRUB để ngừng tham chiếu đến các mục không còn tồn tại.Nếu không, bạn có thể gặp các tùy chọn menu trỏ đến các nhân đã bị xóa. Để tạo lại tệp cấu hình, hãy sử dụng:
sudo update-grub
Nếu bạn muốn đảm bảo nhánh chung vẫn được cài đặt, bạn có thể buộc cài đặt nó bằng lệnh sau:
sudo apt install linux-generic
Trong hầu hết các trường hợp, nó sẽ thông báo rằng phần mềm đã được cài đặt, nhưng cách này giúp bạn xác minh rằng gói meta đã tồn tại và bạn sẽ tiếp tục nhận được các bản cập nhật bảo mật và sửa lỗi cho phiên bản ổn định đó.
Bước cuối cùng, nếu bạn đã thay đổi GRUB_DEFAULT để sử dụng chỉ mục hoặc tên cụ thể nhằm khắc phục các vấn đề với HWE/edge, Bạn có thể khôi phục nó về giá trị mặc định. (thông thường 0) chỉnh sửa lại /etc/default/grub:
sudo nano / etc / default / grub
Và kết thúc dòng như sau:
GRUB_DEFAULT="0"
Sau đó lưu lại và chạy. sudo update-grub và khởi động lại với sudo reboot để hệ thống khởi động bình thường với nhân hệ điều hành mới nhất từ nhánh đó. linux-generic mà bạn đã cài đặt.
Tóm lại, việc kiểm soát kernel nào được khởi động bằng GRUB2 trở thành một công cụ cơ bản cho bất kỳ người dùng Ubuntu, Debian hoặc các bản phân phối dựa trên Debian nào không muốn phụ thuộc vào bản cập nhật mới nhất. Bằng cách kết hợp việc cài đặt các phiên bản cụ thể, sử dụng "Tùy chọn nâng cao", lựa chọn theo chỉ mục hoặc theo tên menu, và việc làm sạch các nhánh có vấn đề.Bạn có thể điều chỉnh nhân hệ thống cho phù hợp với nhu cầu thực tế của mình: độ ổn định vững chắc trên máy chủ, khả năng tương thích tối đa trên thiết bị hiện đại, hoặc sự kết hợp có tính toán giữa cả hai trong môi trường máy tính để bàn, nơi bạn không muốn mạo hiểm việc sử dụng hàng ngày của mình với một nhân hệ điều hành thử nghiệm.
Người viết đam mê về thế giới byte và công nghệ nói chung. Tôi thích chia sẻ kiến thức của mình thông qua viết lách và đó là những gì tôi sẽ làm trong blog này, cho bạn thấy tất cả những điều thú vị nhất về tiện ích, phần mềm, phần cứng, xu hướng công nghệ, v.v. Mục tiêu của tôi là giúp bạn điều hướng thế giới kỹ thuật số một cách đơn giản và thú vị.




