Sau đợt cập nhật Grub trên EndeavourOS bị lỗi không thể khởi động máy hồi cuối tháng 8, mình bắt đầu cảm thấy lo lắng mỗi lần cập nhật hệ thống bằng lệnh yay. Chẳng biết máy sẽ khởi động bình yên hay sẽ gặp lỗi trở lại. Do đó, mình đã tìm cách thay thế Grub bằng một giải pháp khác an toàn và ổn định hơn.

Theo tìm hiểu, mình có thể thay thế Grub bằng systemd-boot hoặc rEFInd. Cả hai đều là trình quản lý khởi động (boot manager) dành cho hệ thống UEFI. Giờ máy tính nào cũng dùng UEFI nên yên tâm dùng anh nào cũng được.

Mình có tìm thấy hướng dẫn cài đặt systemd-boot thay thế cho Grub trên EndeavourOS ở đây: [Tutorial] Convert to systemd-boot. Nhưng mới bấm vô xem đã thấy chóng mặt nhức đầu vì quá phức tạp.

Ngược lại, cách cài đặt rEFInd lại cực kỳ đơn giản. Chỉ cần 2 dòng lệnh là xong. Dưới đây là hướng dẫn cách đặt rEFInd trên EndeavourOS để thay thế cho Grub.

1. Cài đặt rEFInd

Cài đặt package rEFInd vào hệ thống

yay -S refindCode language: Nginx (nginx)

Kích hoạt refind làm Boot Loader mặc định

sudo refind-installCode language: Nginx (nginx)

Vậy là xong rEFInd đẫ được cấu hình làm bootloader mặc định của máy tính. Bạn có thể khởi động lại máy và thấy rEFInd hiện ra với giao diện tương tự như sau

rEFInd sẽ tự động phát hiện ra các hệ điều hành đang cài đặt trên máy để hiện ra lựa chọn khi khởi động.

2. Xóa Grub khỏi hệ thống

Mặc dù rEFInd đã trở thành trình boot manager mặc định của máy, nhưng khi chọn khởi động vào EndeavourOS, Grub vẫn hiện ra xen vào giữa.

Mình sẽ xóa sạch Grub khỏi hệ thống bằng lệnh sau

sudo pacman -Rs grub-tools
sudo pacman -Rs grub2-theme-endeavouros
sudo pacman -Rs grubCode language: Nginx (nginx)

Tiếp theo, xóa các thư mục của grub trong /boot

sudo rm -rf /boot/grub
sudo rm -rf /boot/efi/EFI/endeavour*Code language: Nginx (nginx)

Và xóa grub khỏi EFI Boot Manager

sudo efibootmgrCode language: Nginx (nginx)

Tìm dòng tương ứng với Grub Loader của EndeavourOS và xóa bằng lệnh sau.

sudo efibootmgr -b  0001 -BCode language: Nginx (nginx)

Chú ý: Bạn cần thay thế 0001 bằng con số XXXX tương ứng của dòng BootXXXX: EndeavourOS

Giờ khởi động lại, chọn vào mục Linux. Bạn sẽ thấy máy khởi động thẳng vào EndeavourOS, không còn bị Grub can thiệp nữa.

3. Chỉnh sửa cấu hình

Bước này không bắt buộc, mình thao tác thêm để giúp tinh gọn giao diện của rEFInd.

Chỉnh sửa file cấu hình refind.conf

sudo nano /boot/efi/EFI/refind/refind.confCode language: Nginx (nginx)

Mình xóa hết tất cả, thay bằng nội dung sau và lưu lại.

# Chỉnh sửa thời gian chờ
timeout 2

# Hiển thị thêm nút Shutdown, Reboot
showtools shutdown,reboot

# Thiết lập cho rEFInd chỉ tìm thiết bị khởi động từ ổ đĩa quang, ổ cứng ngoài và danh mục khai báo 
scanfor manual,external,optical

# Danh mục khởi động của EndeavourOS
menuentry "EndeavourOS" {
    icon EFI/refind/icons/os_endeavourOS.png
    volume "root"
    loader /boot/vmlinuz-linux
    initrd /boot/initramfs-linux.img
    options "ro root=UUID=ce0fb873-89a6-4304-9eec-011e390489fc"
}

# Danh mục khởi động của Windows 10
menuentry "Windows 10" {
    loader \EFI\Microsoft\Boot\bootmgfw.efi
    #disabled
}Code language: Nginx (nginx)

Bạn cần thay thế đoạn UUID=ce0fb873-89a6-4304-9eec-011e390489fc bằng UUID=<UUID-của-phân-vùng-cài-EndeavourOS>. Tìm UUID bằng lệnh sudo blkid.

/dev/nvme0n1p5: UUID="ce0fb873-89a6-4304-9eec-011e390489fc" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="root" PARTUUID="6968a96d-514d-714e-9933-0857fcee9f59"
/dev/nvme0n1p3: BLOCK_SIZE="512" UUID="AA5E4D215E4CE821" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="0d2afad1-7cbc-4f57-8f75-a1858d1ae448"
/dev/nvme0n1p1: UUID="C847-0E25" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="62285a16-5dd2-4d78-9127-b2304b80b5fe"
/dev/nvme0n1p4: BLOCK_SIZE="512" UUID="180E60130E5FE870" TYPE="ntfs" PARTUUID="c2e8d3ed-c1ab-49a0-865d-6b71a5718dca"
/dev/nvme0n1p2: PARTLABEL="Microsoft reserved partition" PARTUUID="eab43a5d-e1cc-4d19-accd-45638ddbb0ae"Code language: JavaScript (javascript)

Copy icon của EndeavourOS vào thư mục icons của rEFInd. Icon này sẽ hiển thị trong Boot Loader khi khởi động máy.

sudo cp /usr/share/endeavouros/EndeavourOS-icon.png /boot/efi/EFI/refind/icons/os_endeavourOS.pngCode language: Nginx (nginx)

4. Chỉnh sửa giao diện

Muc này cũng không bắt buộc, mình làm thêm để hiển thị Boot manager cho đẹp.

Mình dùng theme rEFInd-minimal ở đây: https://github.com/evanpurkhiser/rEFInd-minimal

Tạo thư muc themes và truy cập vào đó

sudo mkdir /boot/efi/EFI/refind/themes
cd /boot/efi/EFI/refind/themesCode language: Bash (bash)

Tải themes rEFInd-minimal về thư mục này

sudo git clone https://github.com/evanpurkhiser/rEFInd-minimal.gitCode language: PHP (php)

Chỉnh sửa lại file refind.conf, thêm dòng này vào cuối cùng

include themes/rEFInd-minimal/theme.confCode language: PHP (php)

Đồn thời sửa lại icon của menuentry sử dụng icon của theme. Do theme này không có icon cho EndeavourOS nên mình dùng icon của Arch.

menuentry "EndeavourOS" {
    icon /EFI/refind/themes/rEFInd-minimal/icons/os_arch.png
    volume "root"
    loader /boot/vmlinuz-linux
    initrd /boot/initramfs-linux.img
    options "ro root=UUID=ce0fb873-89a6-4304-9eec-011e390489fc"
}

menuentry "Windows 10" {
    icon /EFI/refind/themes/rEFInd-minimal/icons/os_win.png
    loader \EFI\Microsoft\Boot\bootmgfw.efi
    #disabled
}Code language: Nginx (nginx)

Khởi động lai máy và tận hưởng thành quả.

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *