環境
【インストールターゲット】
筐体: NUC10i5FNK
メモリ: 64GB
SSD: 1TB(M.2 NVMe接続)
【pxe boot server】
kvm で作成した VM
xinetd, dhcpd, tftp, httpd が動作している
事象
自宅で、PXEブートサーバを構築し、
pxe boot + kickstart で CentOS7 をインストールしていたところ、
画像の状態になってしまい、インストールに失敗しました。
下記CentOSを落としてきて、httpでLAN内に公開し、
UEFI用のブートローダー({shim,grub}x64.efi)をTFTPでLAN内に公開し、
特に変更をせず、そのまま利用してます。
ISO: CentOS-7-x86_64-DVD-2003.iso
エラーメッセージ
ata3: SATA link down (SStatus 4 SControl 300) ... dracut-initqueue[768]: Warning: dracut-initqueue timeout - starting timeout scripts dracut-initqueue[768]: Warning: dracut-initqueue timeout - starting timeout scripts dracut-initqueue[768]: Warning: dracut-initqueue timeout - starting timeout scripts Starting Dracut Emergency Shell... Warning: /dev/root does not exist ...
エラー画像
Grub Config
UEFIベースで、下記のような grub.cfg を準備しました。
# ブートローダー, グラフィカル・メニュー を配置 cp -pr /mnt/iso/Packages/shim-x64-15-2.el7.centos.x86_64.rpm ~/src/ cp -pr /mnt/iso/Packages/grub2-efi-x64-2.02-0.81.el7.centos.x86_64.rpm ~/src/ rpm2cpio shim-x64-15-2.el7.centos.x86_64.rpm | cpio -dimv rpm2cpio grub2-efi-x64-2.02-0.81.el7.centos.x86_64.rpm | cpio -dimv mkdir /var/lib/tftpboot/uefi cp ./boot/efi/EFI/centos/{shim,grub}x64.efi /var/lib/tftpboot/uefi/ chmod 644 /var/lib/tftpboot/uefi/{shim,grub}x64.efi # GRUBメニュー を準備 cat << 'EOF' > /var/lib/tftpboot/uefi/grub.cfg set timeout=60 menuentry 'Install CentOS 7' { linuxefi images/centos7/vmlinuz ip=dhcp inst.repo=http://192.168.1.220/centos7 inst.ks=http://192.168.1.220/centos7/ks.cfg initrdefi images/centos7/initrd.img } EOF
ディレクトリ構成
下記のディレクトリ構成になっています。
/var/lib/tftpboot/images: total 0 drwxr-xr-x 2 root root 39 Jul 25 16:30 centos7 /var/lib/tftpboot/images/centos7: total 60504 -rw-r--r-- 1 root root 55187100 Jul 25 16:30 initrd.img -rwxr-xr-x 1 root root 6762688 Jul 25 16:30 vmlinuz /var/lib/tftpboot/pxelinux: total 180 -rw-r--r-- 1 root root 26759 Jul 25 16:30 pxelinux.0 drwxr-xr-x 2 root root 21 Jul 25 16:30 pxelinux.cfg -rw-r--r-- 1 root root 153104 Jul 25 16:30 vesamenu.c32 /var/lib/tftpboot/pxelinux/pxelinux.cfg: total 4 -rw-r--r-- 1 root root 485 Jul 25 16:30 default /var/lib/tftpboot/uefi: total 2252 -rw-r--r-- 1 root root 211 Jul 25 16:31 grub.cfg -rw-r--r-- 1 root root 1090976 Jul 25 16:31 grubx64.efi -rw-r--r-- 1 root root 1205248 Jul 25 16:31 shimx64.efi
試したこと1
下記を参考に、マウントするファイルシステムのパスを確認しましたが、問題なさそうです。
Qiita: dracut-initqueue timeout って?
また、kickstart の デバイス名を、
sda, nvme0, nvme0n1 等に変えてみましたが、直りませんでした。
疑問, 実現したいこと
NVMeで利用する場合、ドライバか何か追加する必要があるのでしょうか。
どこから切り分けていけばいいか、助言いただけると嬉しいです。
kikstart の内容
文字数制限に引っかかるので削除しました。
試したこと2
- inst.ks を消してみました
- vmlinuz,initrd.img の権限を変更してみました
- httpd の アクセスログを見てみましたが、httpdへのアクセスはないようです。
dhcp の range を 192.168.1.230 ~ 192.168.1.240 にしています。
(192.168.1.230:??? -> 192.168.1.220.80 へ アクセスがあるはずだが、来なかった)
4. pxe boot 中の インストール対象 -> pxe サーバ への
パケットをキャプチャしてみました。
RRQ "images/centos7/initrd.img" octet blksize 1024 tsize 0
のあたりで失敗しているのかもしれません。
# Grub メニューのキックスタート(inst.ks)を消してみました [root@pxe ~]# cat << 'EOF' > /var/lib/tftpboot/uefi/grub.cfg set timeout=60 menuentry 'Install CentOS 7' { linuxefi images/centos7/vmlinuz ip=dhcp inst.repo=http://192.168.1.220/centos7 initrdefi images/centos7/initrd.img } EOF # ブートローダー? 初期RAMディスク? への # ファイルへのアクセス権限が足りないのかと思い、見直しました [root@pxe ~]# l /var/lib/tftpboot/images/centos7/ total 60504 drwxr-xr-x 2 root root 39 Jul 25 16:30 . drwxr-xr-x 3 root root 21 Jul 25 16:30 .. -rw-r--r-- 1 root root 55187100 Jul 25 16:30 initrd.img -rwxr-xr-x 1 root root 6762688 Jul 25 16:30 vmlinuz # とりあえず 777 にしてみました [root@pxe ~]# chmod 777 /var/lib/tftpboot/images/centos7/{vmlinuz,initrd.img} [root@pxe ~]# l /var/lib/tftpboot/images/centos7/ total 60504 drwxr-xr-x 2 root root 39 Jul 25 16:30 . drwxr-xr-x 3 root root 21 Jul 25 16:30 .. -rwxrwxrwx 1 root root 55187100 Jul 25 16:30 initrd.img -rwxrwxrwx 1 root root 6762688 Jul 25 16:30 vmlinuz # http で 公開しているディレクトリ [root@pxe httpd]# l /var/pxe/centos7/ total 332 drwxr-xr-x 8 root root 234 Jul 25 16:34 . drwxr-xr-x 3 root root 21 Jul 25 16:33 .. -rw-r--r-- 1 root root 14 Jul 25 16:33 CentOS_BuildTag drwxr-xr-x 3 root root 35 Jul 25 16:33 EFI -rw-r--r-- 1 root root 227 Jul 25 16:33 EULA -rw-r--r-- 1 root root 18009 Jul 25 16:33 GPL drwxr-xr-x 3 root root 57 Jul 25 16:33 images drwxr-xr-x 2 root root 198 Jul 25 16:33 isolinux -rw-r--r-- 1 root root 2033 Jul 25 17:00 ks.cfg drwxr-xr-x 2 root root 43 Jul 25 16:33 LiveOS drwxr-xr-x 2 root root 225280 Jul 25 16:33 Packages drwxr-xr-x 2 root root 4096 Jul 25 16:33 repodata -rw-r--r-- 1 root root 1690 Jul 25 16:33 RPM-GPG-KEY-CentOS-7 -rw-r--r-- 1 root root 1690 Jul 25 16:33 RPM-GPG-KEY-CentOS-Testing-7 -r--r--r-- 1 root root 2883 Jul 25 16:33 TRANS.TBL # httpd の公開範囲 [root@pxe httpd]# cat /etc/httpd/conf.d/pxeboot.conf Alias /centos7 /var/pxe/centos7 <Directory /var/pxe/centos7> Options Indexes FollowSymLinks Require ip 127.0.0.1 192.168.1.0/24 </Directory> # 192.168.1.53 ... ブラウザを開いた普段使いのPC # ブラウザ で http://192.168.1.220/centos7/ を開きました [root@pxe ~]# cd /var/log/httpd [root@pxe httpd]# tail -f access_log 192.168.1.53 - - [26/Jul/2020:11:13:05 +0900] "GET /icons/text.gif HTTP/1.1" 200 229 "http://192.168.1.220/centos7/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
パケットのやり取り
httpサーバの構成
試してみたこと3
grub.cfgで
devfs=nomount を付けたり、消したり、
inst.repo=http://192.168.1.220/centos7 を
inst.repo=http://ftp.riken.jp/Linux/centos/7/os/x86_64/
に変えたりしてみましたが、やはりダメなようでした。
dracutプロンプト
cat /proc/cmdline
less -N /run/initramfs/rdsosreport.txt
等を確認してみました。
squashfs.img のダウンロードにコケる前のログを見てみたら、
(関連あるか分かりませんが、)iscsid がエラーを吐いているのを見つけました。
不安に思ってることなど
インストール先の機器で、M.2SSD(NVMe接続)を利用しているのですが、
・イメージにNVMeを有効にするような命令を追記が必要なのでしょうか。
・kickstart の デバイス名は (nvme0とかnvme0n1じゃなくて)sda で問題ないでしょうか。
(デバイス名については、squashfs.img の入手に成功したあとに分かりますかね)
試してみたこと4
- grep -e eth -e eno -e dhclient -e IPv6 /run/initramfs/rdsosreport.txt
を実行したところ、何もヒットしませんでした。
- 同じCentOS7をUSBブートしたところ、
OS自体はインストールできましたが、eth0を認識していませんでした。
lo, wlp0s20f3(wifiデバイス) のみ認識していました。
- UbuntuServer20をUSBブートしたところ、
eno1(ethernetデバイス)をちゃんと認識していました。
- USBブートに成功した UbuntuSerbver20の
casper/{vmlinuz,initrd}で UbuntuSerbver20, CentOS7 を
pxebootしてみたところ、両方同じところでつまりました。
(今度は、eno1を認識しているみたいでした)
これらの結果からすると、initrd.img に
NIC(ethernet)を利用するためのドライバが不足している状態と考えられるのでしょうか。
関連ありそうな記事を見つけましたが、pxe boot だと手順が少し違いそうです。
Linuxで認識しないNICのドライバをインストールしてみた
試してみたこと5
centosのinitrdでe1000eを強制ロードさせるようにしました。
NICを認識したものの /dev/root does not exist となり、起動できませんでした。
](5efc9f0c1eeb8e429f0058f592f95b74.jpeg)
ubuntuのinitramfsを展開し、e1000e.koを入れ替えて、再構成しました。
/root/dev failed となり、起動できませんでした。
rootpath: filename: が空なのが気になります。
centosのinitramfsでドライバを更新(e1000e-3.8.4をmake install)し、再構成してみました。
Failed to start Swith Root となり、起動できませんでした。
こちらは、NICを認識していますが、デバイスが見えなくなっています。
長くなってきてしまったので、一旦解決済みとして、
課題を整理してもう少し色々試してみようかと思います。
何度も回答いただき、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー