wie pxelinux 如何選擇引導盤
我已經用 pxelinux 配置了一台電腦,並且能夠從 DHCP/TFTP 啟動。我可以接收引導載入程序,然後從本地硬碟或固態硬碟引導。但我想使用引導載入程序選擇它應該從哪個設備引導。例如,在有兩個設備的電腦上,我想選擇它應該從哪個設備啟動。我擺弄了 pxelinux 的配置並閱讀了文件,但它似乎只提到了網路啟動過程。這是我的範例配置文件(預設)
default ssd prompt 1 ONTIMEOUT local timeout 3000 MENU TITLE PXE Menu LABEL hdd MENU LABEL Boot local hard drive root= (hd0,2) kernel /boot/vmlinuz-3.11.6-4-desktop initrd=(hd0,2)/boot/initrd-3.11.6-4-desktop LABEL ssd MENU LABEL Boot local hard drive LOCALBOOT -1
它有 pxelinux 6.0.3,我幾乎嘗試了所有組合,但唯一的答案總是它找不到核心或
initrd
文件,無論我說什麼/dev/sda2
或(hd0,2)
什麼。我是否遺漏了什麼,或者 pxelinux 無法完成這項任務?
對於每個選項,答案總是“沒有這樣的文件或目錄”,除了選項“二”,啟動正常。(我無法從控制台獲取日誌)。從客戶端到伺服器的 tftp 工作正常,沒有任何問題。
default menu.c32 prompt 0 ONTIMEOUT local timeout 3000 MENU TITLE PXE Menu LABEL one MENU LABEL Boot local hard drive root= hd0 2 kernel /boot/vmlinuz-3.11.6-4-desktop LABEL two MENU LABEL Boot local hard drive LOCALBOOT 0 LABEL three MENU LABEL Boot local hard drive root=/dev/sda2 kernel vmlinuz-3.11.6-4-desktop initrd=/boot/initrd-3.11.6-4-desktop.gz LABEL four MENU LABEL VIER root=/dev/sda2 rw KERNEL ftp://179.99.99.1/chain.c32 LABEL five MENU LABEL Hole chain.c32 uebers Netz root hd0 2 KERNEL chain.c32 LABEL six MENU LABEL VIER root=(hd0,2) rw KERNEL /boot/chain.c32 LABEL seven MENU LABEL Hole chain.c32 uebers Netz root hd0 2 KERNEL /boot/chain.c32 initrd=/boot/initrd-3.11.6-4-desktop.gz
xinetd 守護程序的狀態顯示客戶端 tftp 正在從伺服器請求文件。似乎客戶端正在從伺服器獲取文件。但是為什麼它不處理它…
xinetd.service - Xinetd A Powerful Replacement For Inetd Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled) Active: active (running) since Wed 2016-06-29 16:08:46 CEST; 21min ago Main PID: 1536 (xinetd) CGroup: /system.slice/xinetd.service |-1536 /usr/sbin/xinetd -stayalive -dontfork `-2938 in.tftpd -s /rde/installation/tftpboot -vvv Jun 29 16:21:47 uaewg-srv in.tftpd[4161]: RRQ from ::ffff:199.99.99.10 filename menu.c32 Jun 29 16:22:32 uaewg-srv in.tftpd[4279]: RRQ from ::ffff:199.99.99.10 filename chain.c32 Jun 29 16:22:32 uaewg-srv in.tftpd[4280]: RRQ from ::ffff:199.99.99.10 filename chain.c32 Jun 29 16:22:36 uaewg-srv in.tftpd[4288]: RRQ from ::ffff:199.99.99.10 filename chain.c32 Jun 29 16:24:17 uaewg-srv in.tftpd[4544]: RRQ from ::ffff:199.99.99.10 filename pxelinux.0 Jun 29 16:24:17 uaewg-srv in.tftpd[4545]: RRQ from ::ffff:199.99.99.10 filename ldlinux.c32 Jun 29 16:24:17 uaewg-srv in.tftpd[4556]: RRQ from ::ffff:199.99.99.10 filename pxelinux.cfg/default Jun 29 16:24:17 uaewg-srv in.tftpd[4558]: RRQ from ::ffff:199.99.99.10 filename menu.c32 Jun 29 16:24:34 uaewg-srv in.tftpd[4580]: RRQ from ::ffff:199.99.99.10 filename chain.c32 Jun 29 16:24:38 uaewg-srv in.tftpd[4588]: RRQ from ::ffff:199.99.99.10 filename chain.c32
我發現瞭如何根據我的需要配置 pxelinux。tftp 已經在執行和工作,我做了一個“tail -f /var/log/messages”來發現chain.c32 沒有工作(它正在載入,但什麼也沒發生):
2016-06-29T16:15 uaewg-srv xinetd[1536]: START: tftp from=::ffff:172.99.199.9 2016-06-29T16:15 uaewg-srv in.tftpd[2939]: RRQ from ::ffff:172.99.199.9 filename chain.c32 2016-06-29T16:18 uaewg-srv sshd[3183]: Accepted keyboard-interactive/pam for uae_wg_sim from 127.0.0.1 port 54948 ssh2
然後我可以嘗試使用其他文件,我在**../tftpboot/pxelinux.cfg/default**配置文件中提供了 vmlinuz 和 initrd 文件:
prompt 0 ONTIMEOUT local timeout 3000 MENU TITLE PXE Menu LABEL local MENU LABEL Boot local hard drive LOCALBOOT 0 LABEL hdd kernel vmlinuz-3.11.6-4-desktop APPEND initrd=initrd-3.11.10-21-desktop root=/dev/sda2
chain.c32,menu.c32 要麼在系統上不起作用,我不知道為什麼,也許我想看看我是否還有時間,我很高興它現在正在工作。 /var/log/messages對錯誤診斷很有幫助,不清楚是誰負責 tftpd,但我發現它可能是由 xinetd 而不是 systemd 啟動的。我將**/etc/xinetd.d/tftp**的內容更改為:
service tftp { # per_source = 11 cps = 100 2 socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /rde/installation/tftpboot -vvv flags = IPv6 IPv4 }
問候並感謝 cas 的幫助!
您需要使用來自syslinux的鏈載入器 ( chain.c32 ) 。與其他模組一樣,BIOS、efi32 和 efi64 也有不同的版本。
syslinux
LABEL local MENU DEFAULT MENU LABEL Boot from Local Hard Disk KERNEL /path/to/chain.c32 APPEND hd0 2
這稍微改編自我的
/srv/tftp/default
文件 - 我的版本有KERNEL http://ip.ip.ip.ip/tftp/chain.c32
(我的 httpd 配置為/tftp/
從/srv/tftp
- tftp 也可以工作)和APPEND hd0 0
.