
我已經用 pxelinux 設定了一台計算機,並且可以從 DHCP/TFTP 啟動。我可以接收引導程序,然後從本地 HDD 或 SSD 引導。但我想使用引導程式選擇應該從哪個裝置引導。例如,在一台有兩個裝置的電腦上,我想選擇從哪個裝置啟動。我已經擺弄了 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
答案1
我發現如何根據我的需要配置 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/默認設定檔:
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/日誌/訊息對於錯誤診斷來說是一個很好的幫助,目前還不清楚誰負責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 的幫助!
答案2
您需要使用鍊式裝載機(鏈.c32) 從系統Linux。與其他syslinux
模組一樣,BIOS、efi32 和 efi64 也有不同的版本。
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
.