Raspberry Pi không hỗ trợ boot từ phân vùng GPT trong khi MBR chỉ hỗ trợ các ổ đĩa có dung lượng đến 2TB. Vì vậy phải đi vòng bằng Hibrid partition table để boot từ ổ đĩa trên 2TB.
Bước 1: Nếu chứ có gdisk thì cài đặt.
apt install gdisk
Dùng gdisk tạo phân vùng boot và các phân vùng khác theo nhu cầu, thí dụ OS, Swap, Data. Phân vùng boot của PiOS cần 256MB.
Bước 2: Dùng gdisk để đổi phân vùng boot sang dạng MBR FAT32 thay vì GPT, giả sử thuộc ổ đĩa /dev/sdg (Chú ý các trả lời màu)
root # gdisk /dev/sdg GPT fdisk (gdisk) version 1.0.6 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT.
Command (? for help): r Recovery/transformation command (? for help): h WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one, just hit the Enter key at the below prompt and your MBR partition table will be untouched. Type from one to three GPT partition numbers, separated by spaces, to be added to the hybrid MBR, in sequence: 1 Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): n Creating entry for GPT partition #1 (MBR partition #1) Enter an MBR hex code (default 83): 0c Set the bootable flag? (Y/N): n Unused partition space(s) found. Use one to protect more partitions?(Y/N): n Recovery/transformation command (? for help): o Disk size is 7814037164 sectors (3.6 TiB) MBR disk identifier: 0x00000000 MBR partitions: Number Boot Start Sector End Sector Status Code 1 2048 206847 primary 0x0C 2 1 2047 primary 0xEE Recovery/transformation command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdg. The operation has completed successfully.
Bước 3: Xong rồi! rsync /boot /và / vào /dev/sdg1 và /dev/sdg2, sau đó sửa các file cmdline.txt ở sdg1 và fstab ở sdg2
Chú ý
- Thứ tự các lệnh: r, h, 1, n, 0c, n, n, o, w, y
- Không cần xóa phân vùng 0xEE, nó chỉ là phân vùng đệm để bảo đảm phân vùng 0x0C không bị xóa.
- Nếu sau này vì lý do nào đó dùng parted trên ổ đĩa thì partition boot có thể không còn boot được, khi đó phải lập lại bước 2 như trên.
- Thông thường HDD cần đạt số vòng quay, điện áp… cần thiết mới có thể hoạt động. Chúng ta có thể bảo RPi chờ một lúc trước khi đọc start.elf, bằng cách thêm vào cuối file /boot/config.txt
boot_delay=6