Pxelinuxでコンピューターを構成しましたが、DHCP/TFTPから起動できます。ブートローダーを受け取り、ローカルのHDDまたはSSDから起動できます。しかし、どのデバイスからブートするかをブートローダーで選択したいと思います。たとえば、2つのデバイスを備えたコンピュータで、どのデバイスから起動するかを選択します。 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があり、ほぼすべての組み合わせを試しましたが、/dev/sda2
または(hd0,2)
などと言っても、カーネルまたはinitrd
ファイルが見つからないというのが常に唯一の答えです。
何か不足していますか、それともこのタスクはpxelinuxでは不可能ですか?
すべてのオプションについて、答えは常に「何かそのようなファイルまたはディレクトリはありません」ですが、オプション「2」を除いて、問題なく起動します。 (コンソールからログを取得できませんでした)。クライアントからサーバーへの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
次に、他のファイルで試してみることができます。vmlinuzファイルとinitrdファイルを../ tftpboot/pxelinux.cfg/default構成ファイルで提供しました。
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の責任者は明確ではありませんでしたが、おそらくsystemdではなくxinetdによって開始されたことがわかりました。 / 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 )を使用する必要があります。他の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
。