Khởi động Ubuntu từ USB

Vật liệu cần:

  • SD card đã cài PiOS hay một OS chạy trên RPi nào đó
  • USB/HDD đã flash Ubuntu
  • RPi đã cập nhật EEPROM để có thể khởi động từ USB

Khởi động từ SD card đã cài PiOS, rồi sau đó gắn USB/HDD vào RPi

Chúng ta sẽ sao chép cơ chế boot USB từ PiOS sang Ubuntu OS.

Giả sử USB/HDD gắn vào RPi có tên thiết bị là /dev/sda

Kiểm tra các partition bằng lệnh

lsblk

Output tương tự như sau:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 119.2G  0 disk 
├─sda1        8:1    0   256M  0 part 
└─sda2        8:2    0   2.8G  0 part 
mmcblk0     179:0    0  59.5G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0  59.2G  0 part /
  • mmcblk0 là thẻ nhớ SD card chứa PiOS
  • sda là USB/HDD chứa Ubuntu OS

Mount các partition sda1, sda2 để chuẩn bị chuyển boot sang

sudo mkdir /mnt/{boot,writable}
sudo mount /dev/sda1 /mnt/boot
sudo mount /dev/sda2 /mnt/writable

Kết quả của lệnh lsblk giờ tương tự như sau:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 119.2G  0 disk 
├─sda1        8:1    0   256M  0 part /mnt/boot
└─sda2        8:2    0   2.8G  0 part /mnt/writable
mmcblk0     179:0    0  59.5G  0 disk 
├─mmcblk0p1 179:1    0   256M  0 part /boot
└─mmcblk0p2 179:2    0  59.2G  0 part /

Chạy các lệnh sau để chuyển cơ chế boot từ USB của PiOS sang Ubuntu OS

wget https://raw.githubusercontent.com/TheRemote/Ubuntu-Server-raspi4-unofficial/master/BootFix.sh
chmod +x BootFix.sh
sudo ./BootFix.sh

Cuối cùng là dọn dẹp

sudo umount /mnt/{boot,writable}
rmdir /mnt/{boot,writable}

Bây giờ có thể bỏ thẻ nhớ ra và khời động Ubuntu bằng USB/HDD

Chú thích

  • Ubuntu nhận dạng đĩa theo label (system-boot writable), tuy nhiên vẫn có thể dùng PARTUUID như cũ
# Ubuntu, kiểu label
LABEL=writable          /                 ext4    defaults    0    1
LABEL=system-boot       /boot/firmware    vfat    defaults    0    1

# Ubuntu, kiều PARTUUID
PARTUUID=3ba4435d-02    /                 ext4    defaults    0    1
PARTUUID=3ba4435d-01    /boot/firmware    vfat    defaults    0    1

Nếu dùng PARTUUID thì phải sửa đổi trong file /boot/firmware/cmdline.txt

net.ifnames=0 dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=3ba4435d-02
 rootfstype=ext4 elevator=deadline rootwait fixrtc
  • system-boot được mount từ /boot/firmware không phải từ /boot như trong RaspiOS. Tuy ghi nhầm vẫn có thể boot được nhưng khi update OS sẽ gây lỗi.
  • Nội dung partition boot sẽ thay đổi trong quá trình boot, các file hệ thống sẽ được dời vào thư mục firmware
  • Raspberry Pi Imager có thể tạo khởi động từ USB, nhưng cơ chế đó dành cho PiOS chứ không dành cho Ubuntu

Leave a Comment

Filed under Software

Comments are closed.