Trong bài viết trước, mình đã hướng dẫn cách thiết lập PXE Boot Server cho máy client sử dụng Legacy BIOS. Cách này phù hợp để PXE Boot cho các máy ảo Proxmox dùng BIOS hoặc các máy tính xa xưa. Tuy nhiên, nó sẽ không áp dụng được cho máy tính đời mới trong vòng 10 năm qua, vốn đã chuyển qua dùng UEFI thay thế cho BIOS.
Bài viết này mình sẽ hướng dẫn thêm cách cấu hình PXE Boot Server để hỗ trợ thêm cho các máy trạm sử dụng UEFI. Sau khi hoàn thành, PXE Boot Server sẽ hỗ trợ được đồng thời Legacy BIOS và UEFI.
Bạn cần phải thực hiện thành công các bước đã chia sẻ trong bài viết dưới đây trước khi bắt đầu với hướng dẫn bên dưới.
Mục Lục
1. Cấu hình PXE Boot Server
Chúng ta cần sử dụng file cấu hình của Grub để thực hiện PXE Boot cho UEFI. Tải shim.signed
package về thư mục /tmp
cd /tmp
apt-get download shim.signed -y
Code language: JavaScript (javascript)
Trích xuất file shimx64.efi.signed
trong package shim.signed
, đổi tên thành bootx64.efi
và sao chép vào thư mục /srv/tftp
dpkg-deb --fsys-tarfile /tmp/shim-signed*deb | tar x ./usr/lib/shim/shimx64.efi.signed -O > /srv/tftp/bootx64.efi
Code language: JavaScript (javascript)
Kế tiếp, tải grub-efi-amd64-signed
package
apt-get download grub-efi-amd64-signed
Code language: JavaScript (javascript)
Trích xuất file grub-efi-amd64-signed
trong package grub-efi-amd64-signed
, đổi tên thành grubx64.efi
và sao chép vào thư mục /srv/tftp
dpkg-deb --fsys-tarfile /tmp/grub-efi-amd64-signed*deb | tar x ./usr/lib/grub/x86_64-efi-signed/grubnetx64.efi.signed -O > /srv/tftp/grubx64.efi
Code language: JavaScript (javascript)
Tải thêm font cần sử dụng cho grub menu về thư mục /srv/tftp
apt download grub-common
dpkg-deb --fsys-tarfile grub-common*deb | tar x ./usr/share/grub/unicode.pf2 -O > /srv/tftp/unicode.pf2
Code language: JavaScript (javascript)
Thư mục /srv/tftp
bây giờ sẽ có các file như dưới đây
total 102668
-rw-r--r-- 1 root root 955656 Dec 22 06:26 bootx64.efi
-rw-r--r-- 1 root root 1484680 Dec 22 06:03 grubx64.efi
-r--r--r-- 1 root root 86448612 Dec 22 06:29 initrd
-r--r--r-- 1 root root 120820 Aug 31 07:37 ldlinux.c32
-rw-r--r-- 1 root root 43140 Dec 23 2019 pxelinux.0
drwxr-xr-x 2 root root 4096 Dec 22 01:43 pxelinux.cfg
-rw-r--r-- 1 root root 2395475 Dec 22 06:04 unicode.pf2
-r--r--r-- 1 root root 13660416 Dec 22 06:29 vmlinuz
Code language: YAML (yaml)
2. Tạo Grub Boot Menu
Tạo file grub/grub.cfg
nằm trong thư mục /srv/tftp
mkdir /srv/tftp/grub
nano /srv/tftp/grub/grub.cfg
Code language: Nginx (nginx)
Nhập vào nội dung sau
set default="0"
set timeout=5
if loadfont unicode ; then
set gfxmode=auto
set locale_dir=$prefix/locale
set lang=en_US
fi
terminal_output gfxterm
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
set linux_gfx_mode=keep
export linux_gfx_mode
menuentry 'Install Ubuntu 20.04' {
#gfxmode $linux_gfx_mode
linux vmlinuz ip=dhcp url=http://192.168.0.139/images/ubuntu-20.04.5-live-server-amd64.iso fsck.mode=skip
initrd initrd
}
Code language: Bash (bash)
Bạn cần thay đổi thông số ở mục url=
thành địa chỉ IP tương ứng của PXE Boot Server để máy trạm có thể kết nối và tải file ISO khi khởi động.
3. Cấu hình DHCP Server
Chỉnh sửa lại file cấu hình của DHCP Server
nano /etc/dhcp/dhcpd.conf
Code language: Nginx (nginx)
Chỉnh nội dung lại như sau và lưu lại
allow bootp;
allow booting;
max-lease-time 1200;
default-lease-time 900;
log-facility local7;
option ip-forwarding false;
option mask-supplier false;
set pxetype = option pxe-system-type;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option domain-name-servers 1.1.1.1;
range 192.168.0.200 192.168.0.222;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.0.150;
if pxetype=00:06 or pxetype=00:07 {
filename "bootx64.efi";
}
else {
filename "pxelinux.0";
}
}
}
Code language: YAML (yaml)
Khởi động lại DHCP Server
systemctl restart isc-dhcp-server.service
Code language: CSS (css)
4. Thực hiện PXE Boot trên máy UEFI
Mình chỉnh lại cấu hình của máy ảo trên ESXI 7.0 thành Firmware: UEFI
Khởi động lại máy ảo và chọn khởi động bằng PXE
Kết nối thành công đến PXE Boot Server và hiện ra grub menu
Quá trình PXE Boot đã diễn ra thành công trên máy ảo sử dụng UEFI Firmware.
Chúc bạn thực hiện thành công!
Tham khảo: Oracle, Golinuxcloud
[convertkit form=7087807]
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!