Cài đặt Ubuntu Server 20.04 khởi động bằng SSD trên Raspberry Pi 4

Raspberry Pi 18 Tháng Ba, 2021 195 lượt xem

Mặc định hiện tại trên Raspberry Pi 4 chưa hổ trợ chính thức khởi động boot bằng các nguồn dử liệu từ cổng USB, mà chỉ hổ trợ cổng SD. Nhưng vì tốc độ và sự tối ưu thì việc hổ trợ boot hệ điều hành bằng SSD là rất cần thiết.

Những thứ chúng ta cần chuẩn bị để có thể sử dụng được chức năng này bao gồm:

Quẩy thôi nào

Đầu tiên, tôi xin nói rằng quy trình này có thể được áp dụng cho bất kỳ hệ điều hành ARM nào chứ không chỉ Ubuntu Server.

1- Ghi hệ điều hành Raspberry trên thẻ SD bằng BalenaEtcher.

1 HJzSnhzBGlhMc0lshd0O2w
BalenaEtcher định dạng thẻ SDCard với Raspberry OS Image

2- Ghi Máy chủ Ubuntu trên Đĩa SSD bằng BalenaEtcher.

3- Khởi động Raspberry Pi của bạn bằng Thẻ SD (hiện tại không cắm đĩa USB). Nếu bạn muốn truy cập Raspberry Pi của mình từ ssh, đừng quên thêm tệp ‘ssh’ vào phân vùng khởi động.

1 55nlEtED2NosdTq5ZyUGlA
Thêm tệp ssh để cho phép truy cập ssh vào Raspberry Pi của bạn

4- Trong trường hợp của tôi, tôi đang truy cập Raspberry Pi của mình qua ssh (tên người dùng mặc định: pi và mật khẩu: raspberry, đừng quên thay đổi chúng sau khi đăng nhập 😛) .192.168.0.4 là địa chỉ mâm xôi của tôi.

1 Biry2WQWxAdaQBbbhDVrnw

5- Bây giờ chúng ta hãy nâng cấp hệ thống:

Bạn nhớ đăng nhập với root để chạy các lệnh dưới đây không phát sinh lỗi nhé.

sudo apt update && sudo apt full-upgrade -y

Thao tác này sẽ nâng cấp hệ thống và tất cả các ứng dụng đã cài đặt.
6- Chỉnh sửa tệp rpi-eeprom-update và thay thế trạng thái phát hành chương trình cơ sở bằng giá trị ‘beta’:

sudo nano /etc/default/rpi-eeprom-update
1 8xHFIiBI0DtExrsGfKFFjQ

7- hiện tại các bản beta bootloader đang được cập nhật liên tục, trong lần này mình đã test bản 2020–07–31 và chạy ổn định. Các bản mới hơn mình chưa thử nên bạn nếu muốn có thể thử qua nhé.

cd /lib/firmware/raspberrypi/bootloader/beta/
rpi-eeprom-update -d -f pieeprom-2020-07-31.bin

Sau khi lệnh rpi-eeprom-update kết thúc, hãy chạy lệnh reboot để khởi động lại Pi.

8- Sau khi khởi động lại, bạn có thể xác minh rằng eeprom đã được cập nhật thành công bằng cách thực hiện lệnh này và xác minh rằng bạn có phiên bản cuối cùng:

vcgencmd bootloader_version
1 9EhctXvKPV9HdRODadCvrQ

9- Bây giờ, cắm đĩa SSD vào Raspberry Pi và gắn kết các phân vùng của nó.

a- chúng ta hãy tìm tên của đĩa bằng cách thực thi

lsblk
1 84Dz3uERhrviXoVYX7j0Iw
  • /dev/sda1: phân vùng khởi động trên SSD.
  • /dev/sda2: phân vùng chính trên SSD.

b- hãy gắn chúng vào /mnt/boot (phân vùng khởi động) và /mnt/major (phân vùng chính)

sudo mkdir /mnt/boot && sudo mount /dev/sda1 /mnt/boot
sudo mkdir /mnt/principal && sudo mount /dev/sda2 /mnt/principal

10- Bây giờ chúng ta sẽ sao chép nội dung (các tệp * .dat & * .elf) của phân vùng / boot vào / mnt / boot.

cd /mnt/boot
sudo cp /boot/*.elf /mnt/boot/ 
sudo sudo cp /boot/*.dat /mnt/boot/

11- hãy giải nén tệp vmlinuz trên phân vùng khởi động

cd /mnt/boot
zcat vmlinuz > vmlinux

12- Cập nhật phần [pi4] trên tệp config.txt (nằm trên / mnt / boot) như sau:

nano /mnt/boot/config.txt

Thêm các dòng tiếp theo và lưu tệp.

dtoverlay=vc4-fkms-v3d 
boot_delay 
kernel=vmlinux 
initramfs initrd.img followkernel

13- Bây giờ chúng ta sẽ thêm một tập lệnh để tự động giải nén Kernel trong phân vùng khởi động. Vào thư mục /mnt/boot/ bằng lệnh

cd /mnt/boot/

Và tạo 1 file với tên là auto_decompress_kernel bằng lệnh

nano auto_decompress_kernel

Copy nội dung dưới đây và dán vào file mới tạo

#!/bin/bash -e
# auto_decompress_kernel script
#Set Variables 
BTPATH=/boot/firmware 
CKPATH=$BTPATH/vmlinuz 
DKPATH=$BTPATH/vmlinux  
#Check if compression needs to be done. 
if [ -e $BTPATH/check.md5 ]; then  
   if md5sum --status --ignore-missing -c $BTPATH/check.md5; then
      echo -e "\e[32mFiles have not changed, Decompression not needed\e[0m"  
      exit 0  
   else 
      echo -e "\e[31mHash failed, kernel will be compressed\e[0m"  
   fi 
fi
#Backup the old decompressed kernel 
mv $DKPATH $DKPATH.bak  
if [ ! $? == 0 ]; then  
   echo -e "\e[31mDECOMPRESSED KERNEL BACKUP FAILED!\e[0m"  
   exit 1 
else  
   echo -e "\e[32mDecompressed kernel backup was successful\e[0m" 
fi  
#Decompress the new kernel 
echo "Decompressing kernel: "$CKPATH".............."  
zcat $CKPATH > $DKPATH  
if [ ! $? == 0 ]; then  
   echo -e "\e[31mKERNEL FAILED TO DECOMPRESS!\e[0m"  
   exit 1 
else  
   echo -e "\e[32mKernel Decompressed Succesfully\e[0m" 
fi  
#Hash the new kernel for checking 
md5sum $CKPATH $DKPATH > $BTPATH/check.md5  
if [ ! $? == 0 ]; then  
   echo -e "\e[31mMD5 GENERATION FAILED!\e[0m"  
else 
   echo -e "\e[32mMD5 generated Succesfully\e[0m" 
fi  
#Exit 
exit 0

Ấn Ctrl + O và ấn Enter để lưu lại, sau đó ấn Ctrl + X để thoát

Chạy lệnh sau để phân quyền file mới tạo

chmod +x auto_decompress_kernel

14- Truy cập thư mục /mnt/principal/etc/apt/apt.conf.d/ với câu lệnh

cd /mnt/principal/etc/apt/apt.conf.d/

Tạo file 999_decompress_rpi_kernel với câu lệnh

nano 999_decompress_rpi_kernel

Copy và nhập nội dung này vào file

DPkg::Post-Invoke {"/bin/bash /boot/firmware/auto_decompress_kernel"; };

Ấn Ctrl + O và ấn Enter để lưu lại, sau đó ấn Ctrl + X để thoát

Tiếp tục phân quyền cho file mới tạo bằng lệnh

chmod +x /mnt/principal/etc/apt/apt.conf.d/999_decompress_rpi_kernel

Đây là liên kết để đọc thêm nếu bạn muốn https://debian-handbook.info/browse/wheezy/sect.apt-get.html#sidebar.directory.d

15- Đến bước này, hành trình của chúng ta đã kết thúc, hãy tắt Raspberry Pi và rút thẻ SD-Card, bật nó lên và tận hưởng khả năng khởi động từ đĩa SSD. Tôi sẽ truy cập Raspberry Pi của mình ngay bây giờ qua ssh nhưng với ubuntu lần này (người dùng và mật khẩu mặc định là ubuntu / ubuntu).

1 2Bs ttIZMy3kuoZxzEAhHQ

Vậy là chúng đã tìm hiểu xong cách boot hệ điều hành trên Raspberry Pi 4 với cổng USB với ổ cứng SSD. Chúc các bạn thành công.

Nguồn: medium

Nhắn tin cho tôi
0969.378.702
CHÚNG TÔI

37 Digital cung cấp giải pháp quảng cáo, thiết kế website tối ưu cho cá nhân, doanh nghiệp vừa và nhỏ.


© 2021 All Rights Reserved.

KẾT NỐI