» » Cài đặt Grub2 cho USB, ổ cứng (HDD), ổ cứng di động (HDDBox)

Cài đặt Grub2 cho USB, ổ cứng (HDD), ổ cứng di động (HDDBox)

Grub2 (GRand Unified Bootloader) là một bootloader đa năng. Bạn có thể dễ dàng cài đặt Grub2 cho USB, ổ cứng (HDD) và ổ cứng di động (HDDBox).

Cài đặt Grub2

Grub2 có thể dễ dàng được cài đặt trên USB, ổ cứng (HDD) và ổ cứng di động (HDDBox).

Giới thiệu

Grub2 là gì? Cũng như các bootloader khác, Grub2 là một bộ nạp khởi động là chương trình phần mềm đầu tiên chạy khi máy tính khởi động. Nó có trách nhiệm kiểm soát tải và chuyển sang hệ điều hành hạt nhân phần mềm (như Hurd hoặc Linux). Các hạt nhân, lần lượt, khởi tạo các phần còn lại của hệ điều hành (ví dụ như GNU).

Grub2 đã thay thế những gì trước đây được biết đến như là GRUB (tức là phiên bản 0.9x), sau đó trở thành GRUB Legacy. GRUB Legacy không còn được phát triển . Đối với những sự khác biệt giữa GRUB Legacy và GRUB, xem tài liệu về Grub Legacy.

Grub2 là một bootloader thông dụng nhất trên các bản phân phối Linux. Ngoài ra, còn có một số bootloader khác như Syslinux và Grub4dos nhưng các tính năng của chúng thì quá hạn chế so với Grub2.

Xem video về cách cài đặt Grub2 cho USB, ổ cứng (HDD), ổ cứng di động (HDDBox).

Tính năng quan trọng

Dưới đây là một số tính năng quan trọng mà Grub2 mang lại:

  1. Hỗ trợ cả hai chế độ UEFI và Legacy.
  2. Hỗ trợ ổ đĩa kiểu MBR, GPT và nhiều kiểu khác nữa.
  3. Ổ đĩa kiểu GPT vẫn được hỗ trợ để boot vào chế độ Legacy BIOS với ổ cứng kiểu Hybrid MBR.

Grub2 còn hỗ trợ rất nhiều tính năng khác, mà một trong rất nhiều tính năng quan trọng đó có lẽ là boot tập tin ISO của hầu hết các bản phân phối Linux.

Trường hợp

Có nhiều trường hợp khiến bạn phải lựa chọn một trong rất nhiều phương pháp để cài đặt Grub2 cho thiết bị đĩa của bạn. Ở đây mình sẽ đưa ra một số trường hợp thường gặp để bạn có thể tham khảo:

  1. Để boot vào chế độ UEFI, bạn cần phải tạo ít nhất một phân vùng FAT32. Nhưng bạn không thể lưu các tập tin có kích thước lớn hơn 4Gb trên một phân vùng FAT32, bạn cần một phân vùng NTFS, exFAT… Vì vậy, nếu bạn muốn hỗ trợ UEFI và có thể lưu tập tin lớn hơn 4Gb, hãy tạo ra 2 phân vùng FAT32 và NTFS hay exFAT…
  2. Để một ổ đĩa GPT hỗ trợ cả hai chế độ Legacy BIOS và UEFI, bạn cần phải tạo một phân vùng có dung lượng từ 1Mb đến 4Mb, không cần định dạng (unformatted) và gắn Flags là bios_grub.

Chuẩn bị

Grub2 sẽ được cài đặt trên USB, ổ cứng hoặc ổ cứng di động của bạn chỉ với một vài dòng lệnh. Bạn cần phải có một máy tính chạy hệ điều hành Ubuntu, hoặc cài đặt Ubuntu trên máy ảo VirtualBox, hoặc cài đặt Grub2 từ đĩa Ubuntu Live CD… Có thể sử dụng các HĐH Linux khác nếu bạn biết các lệnh tương ứng.

Phân vùng USB hoặc ổ cứng

Trước khi cài đặt Grub2, có thể bạn sẽ cần phải phân vùng lại USB hoặc ổ cứng của bạn để đáp ứng nhu cầu. Bạn có thể sử dụng bất kỳ công cụ nào mà bạn muốn, ở đây bạn nên sử dụng Gparted là phù hợp nhất.

Sử dụng lệnh sau để cài đặt Gparted nếu nó chưa được cài đặt:

sudo apt-get install gparted

Tìm và mở ứng dụng Gparted và tiến hành phân vùng ổ đĩa theo yêu cầu mà bạn cần sử dụng để cài đặt Grub2.

Đối với ổ đĩa có kích thước lớn hơn 2TB, bạn nên phân vùng ổ đĩa ở kiểu GPT. Để một ổ đĩa GPT hỗ trợ cả hai chế độ Legacy BIOS và UEFI, bạn cần phải tạo một phân vùng có dung lượng từ 1Mb đến 4Mb, không cần định dạng (unformatted) và gắn Flags là bios_grub.

Ngược lại, nếu ổ đĩa có kích thước nhỏ hơn 2TB, bạn nên phân vùng ổ đĩa ở kiểu MBR. Để hỗ trợ chế độ UEFI, bạn cần phải tạo một phân vùng FAT32 và tốt hơn nữa là gắn Flags cho phân vùng đó là esp nếu bạn đang dùng kiểu GPT.

Phân vùng ổ đĩa bằng Gparted

Bạn có thể dễ dàng phân vùng ổ đĩa bằng Gparted.

Để định dạng lại toàn bộ ổ đĩa, thực hiện các bước sau:

  1. Chọn ổ cứng mà bạn muốn thao tác ở góc phía trên, bên phải.
  2. Chọn Device và tiếp tục chọn Create Partition Table.
  3. Ở mục Select new partition table type, chọn gpt cho kiểu GPT và msdos cho kiểu MBR.
  4. Nhấn Apply để tiếp tục. Toàn bộ dữ liệu và các phân vùng hiện có sẽ bị xóa, bạn nên cân nhắc trước khi thực hiện.
  5. Tạo thêm các phân vùng như bạn muốn.

Để gắn Flags cho phân vùng, bạn chỉ cần nhấn chuột phải vào phân vùng đó và chọn Manage Flags.

Lưu ý: một số dòng máy không nhận dạng được phân vùng FAT32 trên USB nếu nó bị ẩn. Vì vậy nếu đây là trường hợp của bạn, bạn hãy tạo phân vùng FAT32 ở đầu tiên.

Xác định phân vùng

Để xác định tên thiết bị của các phân vùng, bạn có thể xem trong ứng dụng Gparted, Disks hoặc sử dụng lệnh sudo blkid.

Đối với ứng dụng Gparted, bạn có thể xem tên thiết bị phân vùng ở cột Partition như hình trên. Đối với ứng dụng Disks, tên thiết bị sẽ nằm ở mục Device. Nếu bạn sử dụng lệnh sudo blkid, tên thiết bị sẽ nằm ở đầu mỗi dòng và trước dấu hai chấm.

Mount phân vùng

Các phân vùng trên Windows được gắn dưới tên một ổ đĩa, ví dụ C, D, E, F… Còn trên Linux, các phân vùng được gắn (mount) dưới một thư mục, ví dụ /mnt, /media/mountpoint

Bạn có thể mount các phân vùng vào các thư mục có sẵn, hoặc tạo mới các thư mục để mount. Để tạo thêm các thư mục mới, sử dụng các lệnh sau:

sudo mkdir /mnt/efi
sudo mkdir /mnt/boot

Ở trên mình sẽ tạo thêm hai thư mục để mount hai phân vùng FAT32 (UEFI) và NTFS (Data). Nếu bạn đang dùng USB chỉ có một phân vùng, bạn có thể chỉ cần tạo một thư mục hoặc mount trực tiếp vào /mnt.

Mount các phân vùng bằng cách sử dụng lệnh sau:

sudo mount /dev/sdb1 /mnt/efi
sudo mount /dev/sdb2 /mnt/boot

Ở lệnh trên, mình sẽ mount phân vùng /dev/sdb1 vào thư mục /mnt/efi và mount phân vùng /dev/sdb2 vào thư mục /mnt/boot. Bạn cần phải khai báo thông tin phù hợp cho bạn.

Nếu ổ đĩa của bạn chỉ có một phân vùng duy nhất hoặc bạn muốn sử dụng UEFI và Data trên cùng một phân vùng, bạn chỉ cần mount một phân vùng.

Cài đặt gói ứng dụng Grub2 và các gói cần thiết

Sử dụng lệnh sau để cài đặt gói ứng dụng Grub2 và các gói cần thiết khác như grub-efi-amd64-signed. Gói grub-efi-amd64-signed sẽ hỗ trợ Grub2 vượt qua Secure Boot trên UEFI.

sudo apt install grub-efi-ia32-bin grub-efi-amd64-bin grub-pc-bin grub2-common grub-efi-amd64-signed

Vậy là bạn đã hoàn thành các bước để chuẩn bị cài đặt Grub2 lên ổ đĩa của bạn. Cuối cùng bạn có thể cài đặt Grub2 lên USB hoặc ổ cứng hoặc bất kỳ một thiết bị đĩa nào mà bạn muốn.

Cài đặt Grub2

Sau khi đã chuẩn bị các bước ở trên, bây giờ bạn có thể cài đặt Grub2  bằng cách sử dụng lệnh grub-install. Một số bản Linux khác sử dụng lệnh grub2-install để thay thế grub-install. Bạn hoàn toàn có thể thực hiện các lệnh này trên một hệ điều hành Linux khác qua các lệnh tương ứng.

Grub2 hỗ trợ nhiều trên nhiều nền tảng như i386-efi (UEFI 32 bit), x86_64-efi (UEFI 64 bit) và i386-pc (Legacy BIOS). Ở đây mình sẽ cài Grub2 để hỗ trợ trên 3 nền tảng này.

Sử dụng lệnh này để biết thêm chi tiết:

sudo grub-install --help

Cài đặt Grub2 i386-efi:

sudo grub-install --removable --no-nvram --no-uefi-secure-boot \
     --efi-directory=/mnt/efi --boot-directory=/mnt/boot/Boot \
     --target=i386-efi

Cài đặt Grub2 x86_64-efi:

sudo grub-install --removable --no-nvram --no-uefi-secure-boot \
     --efi-directory=/mnt/efi --boot-directory=/mnt/boot/Boot \
     --target=x86_64-efi

Cài đặt Grub2 i386-pc:

sudo grub-install --boot-directory=/mnt/boot/Boot \
     --target=i386-pc /dev/sdb

Các modules của Grub2 sẽ được load trong tập tin cấu hình, hoặc nếu bạn muốn nhúng sẵn các modules mà không cần phải load thủ công, vui lòng khai báo thông số --modules. Danh sách modules có trong các thư mục tương ứng.

Ví dụ để có thể nhận dạng ổ cứng kiểu GPT, bạn cần phải load modules part_gpt trong tập tin cấu hình bằng cách khai báo insmod part_gpt. Hoặc cài đặt sẵn modules này cho Grub2 mà không cần phải load thủ công, sử dụng lệnh sau:

sudo grub-install --removable --no-nvram --no-uefi-secure-boot \
     --efi-directory=/mnt/efi --boot-directory=/mnt/boot/Boot \
     --target=x86_64-efi --modules=part_gpt

Kết quả xuất ra:

Installing for i386-efi platform.
Installation finished. No error reported.

Installing for x86_64-efi platform.
Installation finished. No error reported.

Installing for i386-pc platform.
Installation finished. No error reported.

Giải thích các lệnh trên:

  1. --removable: cần khai báo thông số này nếu bạn đang cài đặt Grub2 trên một thiết bị tháo rời như USB, ổ cứng di động (HDDBox), thậm chí là ổ cứng.
  2. --boot-directory: cài đặt Grub2 vào thư mục Boot, trên phân vùng /dev/sdb2 được mount ở thư mục /mnt/boot.
  3. --efi-directory: cài Grub2 UEFI vào thư mục gốc, trên phân vùng /dev/sdb1 được mount ở thư mục /mnt/efi.
    Trình cài đặt sẽ tạo ra các tập tin cần thiết như bootx64.efi, bootia32.efi, grubx64.efi và grub.efi trong thư mục /EFI/BOOT/. Nếu thông số --uefi-secure-boot được khai báo, một số tập tin khác như MokManager.efi sẽ được tạo ra.
    Mặc định, BIOS sẽ boot vào 2 tập tin /EFI/BOOT/bootx64.efi (64 bit) và /EFI/BOOT/bootia32.efi (32 bit). Nên bạn cần phải khai báo thông số --efi-directory là thư mục gốc của phân vùng, nghĩa là thư mục mà bạn đã mount phân vùng EFI.
  4. --target: khai báo nền tảng.
  5. /dev/sdb: đây là tên thiết bị đĩa của bạn. Thông số này cần được khai báo nếu thông số --target là i386-pc, nghĩa là khi cài đặt Grub2 cho nền tảng Legacy BIOS.

Vậy là bạn đã hoàn thành việc cài đặt Grub2 lên ổ đĩa của bạn.

Unmount các phân vùng đã mount bằng các lệnh sau:

sudo umount /mnt/efi
sudo umount /mnt/boot

Tiếp theo bạn cần cấu hình cho Grub2 cũng như thêm các menu cần thiết cho bạn.

Cấu hình

Mặc định, Grub2 sẽ không được kèm theo tập tin cấu hình trong và sau khi cài đặt. Bạn cần phải cấu hình cho Grub2 trước khi có thể nhìn thấy màn hình Grub2 với các menu.

Tập tin cấu hình mặc định của Grub2 là grub.cfg và nằm trong thư mục grub, thư mục grub sẽ nằm trong thư mục mà bạn đã khai báo lúc cài đặt. Ở đây mình đã cài đặt Grub2 với thông số --boot-directory=/mnt/boot/Boot, vì vậy mình sẽ đặt tập tin grub.cfg theo đường dẫn /Boot/grub/grub.cfg.

Nếu bạn không biết tạo tập tin cấu hình, bạn có thể tải tập tin grub.cfg và chép vào đường dẫn /Boot/grub/grub.cfg. Sau đó tạo tập tin custom.cfg trong cùng thư mục và chép các menu của bạn vào đó.

Bây giờ bạn có thể thử nghiệm Grub2 bằng cách khởi động lại máy và boot vào USB hoặc ổ cứng (HDD) hoặc ổ cứng di động (HDDBox) mà bạn đã cài Grub2. Để test boot mà không cần khởi động lại máy, hãy boot trên máy ảo VirtualBox.

Grub2 không chỉ hỗ trợ trên Linux mà bạn cũng có thể cài đặt Grub2 trên Windows.

Chúc bạn thành công. Nếu bạn có bất kỳ thắc mắc, hãy để lại bình luận ở dưới nhé!

Thích hoặc chia sẽ bài này