FC2ブログ

[CentOS]kickstart+PXE

各種ファイルの置き場と内容

/var/www/html/centos68 : CentOSのisoのマウント場所
/var/www/html/ks.cfg  : kickstart設定ファイルの置き場所
/tftpboot/linux-install/initrd.img
/tftpboot/linux-install/vmlinuz
/tftpboot/linux_install/pxelinux.0

/tftpboot/linux-install/pxelinux.cfg/default の内容

default centos68
label centos68
kernel vmlinuz
append ks=http://192.168.10.8/ks.cfg DEVICE=eth0 load initrd=initrd.img devfs=nomount



/etc/dhcp/dhcpd.conf の内容

ddns-update-style interim;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option domain-name "xxx.org";
option domain-name-servers 192.168.10.1;
range 192.168.10.60 192.168.10.70;
default-lease-time 21600;
max-lease-time 43200;
filename "pxelinux.0";
next-server 192.168.10.8;
}



/etc/httpd/conf.d/pxeboot.conf の内容

<Directory /var/www/html/centos68>
Options Indexes FollowSymLinks
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.10.0/24
</Directory>



/etc/httpd/conf/httpd.conf の内容

User bob
Group bob
ServerName 192.168.10.8
DocumentRoot "/var/www/html"
Listen 80
<Directory /var/www/html>
LoadModule authz_host_module modules/mod_authz_host.so
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>



現状の自動化状況

X230電源ON
  ↓
Enter > BOOTメニューへ > 有線LANからのBOOTを選択
  ↓
PXEブート
  ↓
DHCPサーバからX230がIP、ブートローダのファイル名/場所を取得
  ↓
TFTP サーバからブートローダファイル(pxelinux.0)を取得
  ↓
ブートローダ(pxelinux.0)でブート
  ↓
TFTP サーバから最終的に起動する方法が書かれた pxelinux.cfg/default を取得する。
  ↓
pxelinux.cfg/default に書かれている方法で起動する。
  ↓
★ここで以下のようなメッセージで止まる。有線LANポートと無線LAN機能があるため。
 ここで止まらないように、BIOS設定で無線LANをDisableにしたら、自動で進むようになった。

multiple network devices on this system


  ↓
★次はPartitioning Typeで止まる。

Partitioning Type
Installation requires partitioning of your hard drive. The
default layout is suitable for most users. Select what space
to use and which drives to use as the install target.

Use entire drive
Replace existing Linux system
Use free space

Which drive(s) do you want to use for this installation?
[*] sda xxxx MB (ATA xxxx)


ks.cfgを修正して、clearpartからpart各種までを追加したら、そこも自動的に進むようになった。
最終的なks.cfgは以下。

/var/www/html/ks.cfg の内容

install
url --url http://192.168.10.8/centos68
network --onboot yes --device eth0 --bootproto dhcp --noipv6
lang en_US.UTF-8
keyboard jp106
rootpw --plaintext hoge
firewall --disabled
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sdb --append="crashkernel=auto rhgb quiet"
clearpart --all
part /boot --size=200 --fstype=ext4
part swap --size=8000
part / --size=4096 --fstype=ext4 --grow
text
reboot
%packages
@core
@server-policy
%end



kickstart configサンプル (ks.cfg指定でCDインストール。PXE未使用)
ksa.txt


CentOSインストールCDを入れてブート
 > CentOSインストールメニュー画面でEscを押す。
 > boot : と出る。
 > boot : linux ks=http://hoge.com/ks.cfg ip=192.168..yyy.xxx gateway=192.168.yyy.1 netmask=255.255.255.0

dracut-initqueue: RTNETLINK answers: Network is unreachable


となった。
どっかの記事で、DHCPでやるべきと見たのでip設定を削除。
そして、そもそも名前解決出来てないようなので、nameserverを追加。
 > boot : linux ks=http://hoge.com/ks.cfg gateway=192.168.yyy.1 netmask=255.255.255.0 nameserver=8.8.8.8

dracut-initqueue: RTNETLINK answers: File exists
dracut-initqueue: mount : /dev/sr0 is write-protected, mounting read-only
dracut-initqueue: Warning: dracut-initqueue timeout - starting timeout scripts
dracut-initqueue: Warning: dracut-initqueue timeout - starting timeout scripts
  :
dracut-initqueue: Warning: Could not boot.
Starting Dracut Emergency Shell...
Generating "/run/initramfs/rdsosreport.txt"

Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot
after mounting then and attach it to a bug report.

dracut:/#


journalctl でログが見れる。
exitとすると、次の処理が進んだ。

kickstart 設定を変えてもう一度。変えた箇所は以下。

text > 追加。元は書いてなかったので、グラフィカルモードで途中インストールが止まった。
install
#url --url=http://ftp.riken.jp/Linux/centos/7.3.1611/isos/x86_64/
cdrom > url指定は止めて、CDROMからのインストールにした。すると、以下が出なくなった。
         これ =  dracut-initqueue: Warning: dracut-initqueue timeout - starting timeout scripts



エラー1
Crucial m4 SSDにkickstartでインストールしようとしたらこのエラー。

Exception AttributeError: "'NoneType' object has no attribute 'udev_unref'" in <bound method Context.__del__ of <pyudev.core.Context object at 0xxxxxx>> ignored


これはディスクが認識出来てない事が原因のよう。

エラー2
ksファイルはFile existsとなるのに、しばらく経った後、Could not bootとなる。

画面に従い
/run/initramfs/rdsosreport.txt
を見る。

localhost dracut-initqeue[658]: dhcp failed.


となってる。
無線ルータへのpingは通る、かつDHCPリースは余裕がある。

アクティブになったLANポートが、enp4s0になってる。
これはks.cfgで指定してないな。これが原因か?

localhost dracut-initqeue[658]: dhcp failed.


ks.cfgに、現在のenp6s0に加えて、enp4s0とeth0もDHCPでアクティブにする記述を追加したら、kickstartでインストール開始出来た。

エラー3
さっきは、LANポートのenp4s0設定を追加して出来たと思ったら、またkickstart起動失敗。
ログ
/run/initramfs/rdsosreport.txt
を見ると、

localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 4 (xid=xxxx)
localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 10 (xid=xxxx)
localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 18 (xid=xxxx)
localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 8 (xid=xxxx)
localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 8 (xid=xxxx)
localhost dhclient[803]: DHCPDISCOVER on enp4s0 to 255.255.255.255 port 67 interval 13 (xid=xxxx)
localhost dhclient[803]: No DHCPOFFERS received.
localhost dracut-initqeue[657]: dhcp failed.
  :
localhost dracut-initqeue[657]: RTNETLINK answers: File exists
localhost dracut-initqeue[657]: Warning: Could not boot.


となってる。

つまりDHCPサーバから、OFFERが来なかったので失敗したと。
一度DHCP OFFERでIP割当たLANポートから再度DHCPDISCOVERを送ったら、本当に無線ルータはOFFERを返さないのか?
の確認がポイント。

とりあえずは、ks.cfgの設定を固定IPにして複数用意し、PC毎に使い分ける方針で進む。(固定IPでもkickstart成功した)
スポンサーサイト
カレンダー
06 | 2016/07 | 08
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -
累積訪問者
現在の訪問者
現在の閲覧者数:
最新記事
最新トラックバック
最新コメント
月別アーカイブ
カテゴリ
プロフィール

bobgosso

Author:bobgosso
FPGAのブログへようこそ!

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード