tech_memo/linux
デュアルブート †
- cobblerを利用したデュアルブート用OSインストール方法
トラブルシュート †
oldserverサーバにOSインストールするときに、DHCPに失敗する †
- 2016/06/16に発生。サーバ移設後、初のcobbler使用。
- oldserver01(GW)とtestserver18(GW+DHCPサーバ)を結ぶスイッチングハブが移設前と変わっており、これがブロードキャストを通過させていない可能性が高い
- 回避策として、oldserver01でDHCPサーバを起動して、testserver18のDHCPサーバにリレーさせる
- 以下のように、/etc/dhcpd.confを編集して、dhcpdの再起動をかける
- /etc/dhcpd.confに、対象ホスト単位での設定がある場合
host generic145 {
hardware ethernet 00:0C:29:67:5E:6C;
fixed-address 192.168.0.66;
option host-name "vm66a";
option routers 192.168.0.1; # ★ 要設定
if substring(vendorclass, 0, 9)="PXEClient" {
if pxetype=00:06 or pxetype=00:07 {
filename "/grub/grubx64.efi";
} else {
filename "/pxelinux.0";
}
}
next-server cobblerserver; # ★ 要設定
}
- /etc/dhcpd.confに、対象ホスト用のコンフィグがない場合
subnet 192.168.0.0 netmask 255.255.255.0 {
#option routers 192.168.1.5;
#option domain-name-servers 192.168.1.1;
option subnet-mask 255.255.255.0;
option routers 192.168.0.1; # ★ 要設定
range dynamic-bootp 192.168.0.200 192.168.0.240;
filename "/pxelinux.0";
default-lease-time 21600;
max-lease-time 43200;
next-server cobblerserver; # ★ 要設定
}
- 注意点は、oldserver01のDHCPサービスは、cobblerでのインストールが完了するまで起動させておくこと。
- IP取得できた時点で停止してもよいと思ったが、停止するとその後のtestserver18との通信ができなくなる。。。
RHEL7.1で複数NICのサーバのインストール時に、「/dev/root does not exist」のWARNが出力されてインストールが失敗 †
- 以下のようなWARNが出力されて、emagencyモードになってしまう
dracut-initqueue: Warning: Could not boot
dracut-initqueue: Warning: /dev/root does not exist
- シングルNICのサーバのpxeコンフィグの差分を確認したところ、kickstartのNICデバイスの指定部分に差があった。
append initrd=/images/RHEL7.1-x86_64/initrd.img ksdevice=eth0 lang= kssendmac text ks=http://.... # testserver11 (複数NICサーバ)
append initrd=/images/RHEL7.1-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://.... # testserver04
- ひとまず、testserver04と同じ設定にしたところ、インストールができた。以下、設定を同じにするための手順。
- 上記パラメータの差分ができるのは、以下の設定値の違いによるもの(by cobbler system report)
# testserver11 | # testserver04
Kernel Options : {'ksdevice': 'eth0'} | Kernel Options : {}
Management Interface : | Management Interface : False
- 設定値を以下のコマンドでtestserver04に合わせる
cobbler system edit --name=testserver11_rhel71_dual --kopts="" --management=False
RHEL7.1でkoanを使用した場合、インストール時に「WARN : /dev/VolGroup00/LogVol00 does not exists」のメッセージが表示され、インストールが失敗する †
cobbler importでTASK FAILED †
- RHEL6.7をimport時に以下のようになった
[root@testserver18 shishimaru]# cobbler import --path=/root/personal/shishimaru/RHEL-6.7 --name=RHEL6.7
task started: 2015-11-11_101217_import
task started (id=Media import, time=Wed Nov 11 10:12:17 2015)
Found a redhat compatible signature: Packages
adding distros
- Warning : Multiple archs found : ['x86_64', 'i386']
creating new distro: RHEL6.7-x86_64
creating new profile: RHEL6.7-x86_64
creating new distro: RHEL6.7-i386
creating new profile: RHEL6.7-i386
!!! TASK FAILED !!!
- /var/log/cobbler/cobbler.logに以下のようなメッセージが出力されていたが、情報不足で根本原因はわからない
Wed Nov 11 10:12:36 2015 - INFO | an exception occured while running the import manager
Wed Nov 11 10:12:36 2015 - INFO | error was: [Errno 9] Bad file descriptor
Wed Nov 11 10:12:36 2015 - INFO | No import managers found a valid signature at the location specified
- 本事象が発生しても、distroとprofileは登録されている。ただし、yumのリポジトリがkickstartファイルに反映されなくなるなど、RHEL7.1をimportしたときと同じ状態になっている
- tech_memo/linux/cobbler/add_distribution_rhel71と同じ手順を踏むことで設定不足になった箇所を手動で補える。
追加DiskにRHEL7をインストールして起動しようとするとgrubがカーネル起動時にError 15: File not found †
- grub編集画面でtabを押してもRHEL7のカーネルイメージが見つからない。(tab補完で表示されるのが、RHEL6のものだけ)
- 外付けUSB HDDが接続されているサーバで発生する
- grubから認識されているhd1(/dev/sdb)が、外付けUSB HDDのものっぽい(tab補完で確認できるパーティションの数などから推測)
- 原因はわからないが、以下の操作を実行していると起動できた
- RHEL7をcobblerで再インストール。その際、MBRを再インストールするよう設定(この前のインストールではMBRは更新していない(RHEL6のもの))
- インストール完了後、再起動で「no such device: XXXX-XXXXXXXXX」 が表示されgrub rescueが実行されてしまう
- ブートローダ関連のファイルが存在せず、復旧不可。
- 再起動後、BIOSにログイン
- Boot diskをローカルHDDだけにして、他を除外。PXEブートになってしまう。再起動して再度BIOSへ。
- Boot diskをもとに戻し外付けUSB HDDだけ除外。RHEL7が起動された
- RHEL6も起動できるようにgrub2-mkconfigで更新。その後の再起動でまたgrub rescueになってしまう
RHEL6がインストールされているサーバに別ディスクでRHEL7をインストールした場合に、RHEL7が起動できない †
- RHEL7インストール時にMBRをインストールしなかったケース。
- RHEL6のgrub.confにRHEL7の設定を追加して、RHEL7を起動しようとしたところ、カーネルパニックが発生。
- RHEL6までは、/bootパーティションに100MBの領域を割り当てていたが、RHEL7では256MB以上を推奨とのこと。
- cobblerのpartition_configで300MBの割り当てをしたところ、RHEL6のgrubからでもRHEL7を起動できるようになった。
- ちなみに、100MBだとgrub2のインストール(OSインストールの終盤)の時点でpythonエラーが起きることもあった。(必ずではない)
インストール時のパーティション作成でエラー †
PXEブート時にインストールイメージがダウンロードされない †
- 1つのMACアドレスに対して、複数のsystemを作成した場合に遭遇する。
- 原因は、Netboot Enabled=Trueのsystemが存在していても、最後に設定したNetboot Enabledオプションがtftbootのpxebootコンフィグファイルに反映されるため。(最後にFalse設定されていると、本問題が発生する)
- 手動で一度、Netboot Enabled=Trueを実行してやればよい
[root@testserver18 ~]# cobbler system edit --name=testserver13_rhel71_dual --netboot=True
- PXEブート時に、インストールイメージがダウンロードされるように設定されているかは、以下のファイルから確認できる
[root@testserver18 ~]# vim /tftpboot/pxelinux.cfg/01-<MACアドレス>
default linux
prompt 0
timeout 1
label linux
kernel /images/RHEL7.1-x86_64/vmlinuz
ipappend 2
append initrd=/images/RHEL7.1-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://cobblerserver/cblr/svc/op/ks/system/testserver13_rhel71_dual
- ちなみに、イメージダウンロードされない場合は、下記のような設定になっている。
DEFAULT local
PROMPT 0
TIMEOUT 0
TOTALTIMEOUT 0
ONTIMEOUT local
LABEL local
LOCALBOOT -1
LiveDVDをPXEブート †
UEFIでの設定 †
PXEブートだけどマニュアル(インタラクティブ)でインストール †
- /tftpboot/pxelinux.cfg/01-<MAC-Address>のksオプションを削除してやればよい(下記は説明のためコメントアウトっぽいことをしているが本当にコメントアウトが有効かは未確証)
default linux
prompt 0
timeout 1
label linux
kernel /images/RHEL7.1-x86_64/vmlinuz
ipappend 2
# append initrd=/images/RHEL6.7-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://cobblerserver/cblr/svc/op/ks/system/vmdb6_rhel67
append initrd=/images/RHEL6.7-x86_64/initrd.img ksdevice=bootif lang= kssendmac text
- インストール設定の途中で、インストールイメージのロケーションを聞かれる(NFS or HTTPサーバ or ローカルディスク)ので、適切な値を指定してやればよい
- RHEL7の場合は、inst.repoオプションを指定する必要がある
default linux
prompt 0
timeout 1
label linux
kernel /images/RHEL7.1-x86_64/vmlinuz
ipappend 2
# append initrd=/images/RHEL7.1-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://cobblerserver/cblr/svc/op/ks/system/vmdb6_rhel71
append initrd=/images/RHEL7.1-x86_64/initrd.img ksdevice=bootif lang= kssendmac text inst.repo=http://cobblerserver/cblr/ks_mirror/RHEL7.1/
- なお、kickstartのオプションにインタラクティブモードがあるが、RHEL7では使用できないのと、RHEL6でも一部の設定しかインタラクティブ設定ができない
- textオプションがついている場合は、CUIでのインストールとなる。GUIインストールしたい場合は、上記textオプションを削除すればよい
Kickstart †
SNIPPETファイルの優先順位 †
Cobblerサーバ構築 †
Distributionの追加 †
RHEL7.1 †
RHEL6.5 †
ESXi5.5 †
ESXi6.0 for EUFI †
Cobbler System(クライアント)を新規追加 †
[root@testserver18 cobbler]# cobbler system add --profile=RHEL6.1-x86_64 --name=21F-17_rhel61 --interface=eth0 --static=yes --mac-address=D4:3D:7E:82:9A:6B --ip-address=192.168.23.101 --subnet=255.255.255.0 --gateway=192.168.23.211 --hostname=21F-17 --kickstart=/var/lib/cobbler/kickstarts/myapp.ks
- NICが複数ある場合は、対象のNICを指定するよう、--kopts="ksdevice=eth0" のオプションを追加する
- 追加後はcobbler syncを忘れずに。
- RHEL7.1では、上記設定があるとインストールに失敗する。トラブルシュートを参照。
NICが複数ある場合のIPアドレス設定 †
要設定 †
OS再インストール手順 †
- cobblerサーバはセットアップされている状態からOSの再インストールをする場合。
- cobblerに必要なdaemonのチェック(httpdなど)
[root@testserver18 ~]# cobbler check
The following are potential configuration items that you may want to fix:
1 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
2 : since iptables may be running, ensure 69, 80, and 25151 are unblocked
3 : debmirror package is not installed, it will be required to manage debian deployments and repositories
4 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
5 : One or more repos referenced by profile objects is no longer defined in cobbler: CentOS5-epel, CentOS5-dag
6 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them
Restart cobblerd and then run 'cobbler sync' to apply changes.
Koanを利用する場合 †
- clientでkoanコマンド
- koanがインストールされていなかった。yumで入れる場合はepelのレポジトリとkeyを認証できるよう、以下のrpmをinstallする。(RHELのバージョンにあったやつを選択)
[root@testserver18 yum.repos.d]# cd /var/www/cobbler/localmirror/epel/
[root@testserver18 epel]# ls
epel-release-5-4.noarch.rpm epel-release-6-8.noarch.rpm
- その他色々rpmが足りない(RHEL5.5)。以下をInstallする。
[root@testserver18 ~]# cd /var/www/cobbler/localmirror/cobbler
[root@testserver18 cobbler]# ls
cobbler-2.0.4-1.el5.noarch.rpm koan-2.2.3-2.el6.noarch.rpm python-cheetah-2.0.1-1.el5.x86_64.rpm python-simplejson-2.0.9-1.el5.x86_64.rpm
koan-2.0.5-1.el5.noarch.rpm libyaml-0.1.2-3.el5.x86_64.rpm python-netaddr-0.5.2-1.el5.noarch.rpm PyYAML-3.08-4.el5.x86_64.rpm
- koanで入れ替えOS設定
[root@testserver10 ~]# koan --server=cobblerserver --system=testserver10_rhel61 --replace-self
- looking for Cobbler at http://cobblerserver:80/cobbler_api
- reading URL: http://cobblerserver/cblr/svc/op/ks/system/testserver10_rhel61
install_tree: http://cobblerserver/cblr/links/RHEL6.1-x86_64
downloading initrd initrd.img to /boot/initrd.img_koan
url=http://cobblerserver/cobbler/images/RHEL6.1-x86_64/initrd.img
- reading URL: http://cobblerserver/cobbler/images/RHEL6.1-x86_64/initrd.img
downloading kernel vmlinuz to /boot/vmlinuz_koan
url=http://cobblerserver/cobbler/images/RHEL6.1-x86_64/vmlinuz
- reading URL: http://cobblerserver/cobbler/images/RHEL6.1-x86_64/vmlinuz
- ['/sbin/grubby', '--add-kernel', '/boot/vmlinuz_koan', '--initrd', '/boot/initrd.img_koan', '--args', '"ks=http://cobblerserver/cblr/svc/op/ks/system/testserver10_rhel61 ksdevice=link kssendmac lang= text "', '--copy-default', '--make-default', '--title=kick1361279390']
- reboot to apply changes
- /etc/grub.confにtitle kick1361279390〜が追加されたこと確認。
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title kick1361279390
root (hd0,0)
kernel /vmlinuz_koan ro root=/dev/VolGroup00/LogVol00 rhgb quiet ks=http://cobblerserver/cblr/svc/op/ks/system/testserver10_rhel61 ksdevice=link kssendmac lang= text
initrd /initrd.img_koan
title Red Hat Enterprise Linux Server (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
Other †
Cobbler自前スクリプト格納場所 †
- testserver18:/var/www/cobbler/localmirror
Install先Diskスペース不足による、OracleClient?がインストール失敗 †
- VM環境で、20GBのDiskスペースでCobblerインストールを実行したところ、16GBをSWAP領域にとられ、Disk不足により、OracleClient?がインストールされない問題が起きた。
その場合、SWAPからDiskに割り当てを移して、OracleClient?のインストールスクリプトを手動で実行する
- 1. SWAPからDiskへの割り当て移動
- 2. OracleClient?インストールスクリプト実行
[root@vm63a config_on_1stboot]# pwd
/var/tmp/config_on_1stboot
[root@vm63a config_on_1stboot]# sh oracle_go.sh
Changing permissions of /home/oracle/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /home/oracle/oraInventory to oinstall.
The execution of the script is complete.
Check /home/oracle/app/oracle/product/11.2.0/client_1/install/root_vm63a_2014-06-06_15-00-14.log for the output of root script
Tips †
PXEブートの仕組み †
pxelinux.0とかの役割メモ †
最新の20件
2023-01-26
2022-11-11
2022-03-02
2022-02-03
2021-11-18
2021-11-11
2021-10-27
2021-10-04
2021-09-30
2021-08-24
2021-04-01
2021-02-25
2020-08-13
2020-05-22
2020-04-16
2020-04-15
2020-03-23
2020-03-12
2020-02-27
今日の20件
- counter: 1010
- today: 1
- yesterday: 1
- online: 1