Archive: 2010/01

今日は細かいところを整理してみた(my homebrewed cluster part.4)

前回でだいたいできたけど、今日は細かいところを少し整理した。 やること 2.
2. IPアドレスを固定で振りたい。IPアドレスのアサイン自体はDHCPサーバでやりたいけど、MACアドレス見て固定で割り付けたい。DHCPサーバにあと登録していないMACアドレスからのDHCP要求は無視するようにしたい 4. PXEブート時に放っておいたらローカルのHDDから起動するようにしたい。そうするとOS配布用サーバを生かしたままクライアントを起動しても起動時間が少し長くなるだけでオッケイになるので。前回の宿題事項だったので。

じゃあ逝ってみようか! 1.DHCPサーバでIPアドレスを固定する

/etc/dhcpd.confで設定する。赤字が該当部分。

cat /etc/dhcpd.conf ddns-update-style interim; ignore client-updates; deny unknown-clients; # ここで登録していないMACアドレスからの要求は拒否する・・・と思う。多分。 default-lease-time 21600; max-lease-time 43200; allow booting; allow bootp; subnet 172.16.0.0 netmask 255.255.0.0 { # — default gateway option routers 172.16.0.1; option subnet-mask 255.255.0.0; range 172.16.10.1 172.16.10.254; default-lease-time 21600; max-lease-time 43200; host cluster0_1 { hardware ethernet 0:26:18:d2:85:72; fixed-address 172.16.10.1; } host cluster0_2 { hardware ethernet 0:26:18:d2:85:82; fixed-address 172.16.10.2; } host cluster0_3 { hardware ethernet 0:26:18:d2:85:9c; fixed-address 172.16.10.3; } class “pxeclients” { match if substring(option vendor-class-identifier, 0, 9) = “PXEClient”; next-server 172.16.0.1; filename “linux-install/pxelinux.0”; } } 書いたらservice dhcpd restartでdhcpdを再起動。登録していないMACからのIP割当要求はこんなかんじにignoreしていた。/var/log/messages抜粋。3行目は他のDHCPサーバ(Opensolaris上のDHCPサーバ。192.168.2.12。)が要求に答えている様子、なのかな?

Jan 31 21:51:28 localhost dhcpd: DHCPDISCOVER from 00:1b:63:34:e5:58 via eth1: unknown client Jan 31 21:51:29 localhost dhcpd: DHCPDISCOVER from 00:1b:63:34:e5:58 via eth1: unknown client Jan 31 21:51:30 localhost dhcpd: DHCPREQUEST for 192.168.2.35 (192.168.2.12) from 00:1b:63:34:e5:58 via eth1: ignored (not authoritative). 2.PXEブート時に放っておいたらローカルのHDDから起動するようにしたい

前回うまくいかなかったところを直した。結果で言うと、localbootじゃなくて、chain.c32を使えばいいみたい。まずchain.c32を/tftpbootにコピーする。

cp /usr/lib/syslinux/chain.c32 /tftpbot/linux-install 以下修正した/tftpboot/linux-install/pxelinux.cfg/defaultの内容。赤字が修正部分。

cat default default local timeout 100 prompt 1 display msgs/boot.msg F1 msgs/boot.msg F2 msgs/general.msg F3 msgs/expert.msg F4 msgs/param.msg F5 msgs/rescue.msg F7 msgs/snake.msg label local # localboot 1 # chain.c32 hd# [partition_no]と指定する。partition_noを省略するとMBRが呼び出されるみたい kernel chain.c32 append hd0 label 0 # localboot 1 kernel chain.c32 append hd0 label 1 kernel CentOS4.5/vmlinuz #append initrd=CentOS4.5/initrd.img ramdisk_size=8419 method=http://172.16.0.1/dist ip=dhcp append initrd=CentOS4.5/initrd.img ramdisk_size=8419 ksdevice=eth0 ks=http://172.16.0.1/ks_cent54.cfg devfs=nomount ip=dhcp 3.報告書作成


これこれ

4.脳内反省会

次にいこうかもうちょっといろいろ周辺を整理しようか悩む・・・。やるとすれば、DNS, NTPを追加で立てるべきかな・・・。あと192.168.2.x〜172.16.x.xを透過的に通すようにすべきか・・・。う〜ん。

謎な挙動をしている

smbでマウントしたディレクトリでlameでmp3変換スクリプト流してると、単独ファイルのはずが同じ名前で全部ディレクトリに変化したり、全然違うディレクトリの内容を表示したりする。一回いっこ上のディレクトリに上がって戻ってくると正しく表示されるようになる。おかしいけど再現条件がよくわからず。なんかこう、少し不安になる。 ・・・と思ったら再現条件わかったっぽい。別のターミナルで同じディレクトリに移動してlsするとそうなるっぽい。っぽいが、わからん。

別に無線LANはバンドオーバーできないわけではないと思う

昔会社の同僚からできないと聞いていて。なんとなくそのまま飲み込んでいたのだけど。VARP?Reverse ARP?使えばARPテーブルは書き換わるし。そもそもLive Migrationとか何なの?って話だし。やっぱできるよなあ・・・できるよ多分。L2ネットワークが前提だとは思うけど・・・。

今日は激しくOSをインストールしてみた(my homebrewed cluster part.3)

前回の続き。ネットワークが繋がらないことにはどうにもならないので、今日はインストール直後からちゃんとネットワークが動くように頑張ってみた。ELRepo使えばいいじゃんって話もあるけど自分の勉強もかねて自力で頑張ってみる。やっぱり先輩はいるもので、ここここでやりかたを解説していた。正直いままでDKMSしか知らなかったのでKMPとか初めて知った。これは読むべき。ていうか事前に読んでる前提で以下の話。超勉強になるぜ勉強するぜ。 1.RPMパッケージを作る

1.1.rpmmacroを作る

とりあえず手元にある./.rpmmacrosをベースに作ってみる。OS配布サーバの/root以下にするとこんな感じか。 %_topdir /root/rpmbuild %_smp_mflags -j3 %__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot %packager Anatano Namae <anatano_namae@dokosoko.com> %_signature gpg %_gpg_path /root/.gnupg %_gpg_name Anatano Namae <anatano_namae@dokosoko.com> %_gpgbin /usr/bin/gpg ### 1.2.GPG鍵を作る

gpg –gen-key gpg (GnuPG) 1.4.5; Copyright (C) 2006 Free Software Foundation, Inc. This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the file COPYING for details. gpg: keyring /root/.gnupg/secring.gpg' created gpg: keyring /root/.gnupg/pubring.gpg’ created Please select what kind of key you want. (1) DSA and Elgamal (default) (2) DSA (sign only) (5) RSA (sign only) Your selection? 1 DSA keypair will have 1024 bits. ELG-E keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) 1024 Requested keysize is 1024 bits Please specify how long the key should be valid. <0> = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n years Key is valid for? (0) 0 Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: “Heinrich Heine (Der Dichter) heinrichh@duesseldorf.de” Real name: Anatano Namae Email address: anatano_namae@dokosoko.com Comment: You selected this USER-ID: “Anatano Namae <anatano_namae@dokosoko.com>” Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. You don’t want a passphrase - this is probably a bad idea! I will do it anyway. You can change your passphrase at any time, using this program with the option “–edit-key”. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. +++++++++++++++++++++++++++++++++++++++++++++..++++++++++++++++++++.+++++.++++++++++.+++++.++++++++++..++++++++++++++++++++..+++++++++++++++>++++++++++………………………………………………….+++++ Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 284 more bytes) We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. +0+++++++++++++++++++v.+++++.++++++++++++++++++++.+++++.+++++.+++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++>+++++…..f…….d……..+++++^^^ gpg: /root/.gnupg/trustdb.gpg: trustdb created gpg: key 85592D99 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 1024D/85592D99 2010-01-26 Key fingerprint = CF6E 355C 4F85 5C69 A67A A203 8C57 0983 8559 2D99 uid Anatano Namae <anatano_namae@dokosoko.com> sub 1024g/3451D799 2010-01-26 ### 1.3.ビルドするディレクトリを作る

で、/root/rpmbuildディレクトリを作る。パーミッションは700で。その下にBUILD/BUILDROOT/RPMS/SOURCES/SPECS/SRPMSの各ディレクトリを作る。 # mkdir BUILD BUILDROOT RPMS SOURCES SPECS SRPMS # ls -l total 24 drwxr-xr-x 2 root root 4096 Jan 26 23:04 BUILD drwxr-xr-x 2 root root 4096 Jan 26 23:04 BUILDROOT drwxr-xr-x 2 root root 4096 Jan 26 23:04 RPMS drwxr-xr-x 2 root root 4096 Jan 26 23:04 SOURCES drwxr-xr-x 2 root root 4096 Jan 26 23:04 SPECS drwxr-xr-x 2 root root 4096 Jan 26 23:04 SRPMS # ### 1.4.specファイルを作る

ここはELRepoのを拝借。以下掲載。 # cat /usr/src/redhat/SPECS/atl1e-kmod.spec # Define the kmod package name here. %define kmod_name atl1e Name: %{kmod_name}-kmod Version: 1.0.1.0 Release: 3.el5.elrepo Group: System Environment/Kernel License: GPL v2 Summary: %{kmod_name} kernel modules for Atheros(R) L1E Gigabit Ethernet NICs URL: http://www.atheros.com/ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-build-%(%{__id_u} -n) ExclusiveArch: i686 x86_64 # Sources. Source0: %{kmod_name}-%{version}.tar.bz2 Source10: kmodtool-%{kmod_name} # If kversion isn’t defined on the rpmbuild line, build for the current kernel. %{!?kversion: %define kversion %(uname -r)} # Define the variants for each architecture. %define basevar "" %ifarch i686 %define paevar PAE %endif %ifarch i686 x86_64 %define xenvar xen %endif # If kvariants isn’t defined on the rpmbuild line, build all variants for this architecture. %{!?kvariants: %define kvariants %{?basevar} %{?xenvar} %{?paevar}} # Magic hidden here. %define kmodtool sh %{SOURCE10} %{expand:%(%{kmodtool} rpmtemplate_kmp %{kmod_name} %{kversion} %{kvariants} 2>/dev/null)} %description This package provides the %{kmod_name} kernel modules for the Atheros(R) L1E Gigabit Ethernet NIC with the PCI-Express interface. It is built to depend upon the specific ABI provided by a range of releases of the same variant of the Linux kernel and not on any one specific build. %prep %setup -q -c -T -a 0 for kvariant in %{kvariants} ; do %{__cp} -a %{kmod_name}-%{version} _kmod_build_$kvariant %{__cat} «-EOF >_kmod_build_$kvariant/%{kmod_name}.conf override %{kmod_name} * weak-updates/%{kmod_name} EOF done %build for kvariant in %{kvariants} ; do ksrc=%{_usrsrc}/kernels/%{kversion}${kvariant:+-$kvariant}-%{_target_cpu} pushd _kmod_build_$kvariant %{__make} -C “${ksrc}” modules M=$PWD popd done %install export INSTALL_MOD_PATH=$RPM_BUILD_ROOT export INSTALL_MOD_DIR=extra/%{kmod_name} for kvariant in %{kvariants} ; do ksrc=%{_usrsrc}/kernels/%{kversion}${kvariant:+-$kvariant}-%{_target_cpu} pushd _kmod_build_$kvariant %{__make} -C “${ksrc}” modules_install M=$PWD %{__install} -d ${INSTALL_MOD_PATH}/etc/depmod.d/ %{__install} %{kmod_name}.conf ${INSTALL_MOD_PATH}/etc/depmod.d/ popd done # Strip the module(s). find ${INSTALL_MOD_PATH} -type f -name *.ko -exec strip –strip-debug {} ; %clean %{__rm} -rf $RPM_BUILD_ROOT %changelog * Fri Oct 09 2009 Alan Bartlett ajb@elrepo.org - Revised the kmodtool file and this spec file. * Wed Jul 29 2009 Alan Bartlett ajb@elrepo.org - Revised the kmodtool file and this spec file. * Tue Mar 24 2009 Alan Bartlett ajb@elrepo.org - Added the .elrepo tag and code to strip the module(s). * Sat Dec 27 2008 Alan Bartlett ajb@elrepo.org - Revised this spec file. * Mon Dec 15 2008 Alan Bartlett ajb@elrepo.org - Added a .el5 identifier to the release. * Sun Nov 30 2008 Alan Bartlett ajb@elrepo.org - Initial build of the kmod packages. # ### 1.5.ソースファイルをコピーする。これもELRepoのrpmをほどいたものから拝借

1.6.ビルドの時にいるので、kernel-PAE-devel, kernel-xen-develをインストール

yum –disablerepo=* –enablerepo=c5-media install kernel-PAE-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c5-media: Setting up Install Process Resolving Dependencies –> Running transaction check —> Package kernel-PAE-devel.i686 0:2.6.18-164.el5 set to be installed –> Finished Dependency Resolution Dependencies Resolved =================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================== Installing: kernel-PAE-devel i686 2.6.18-164.el5 c5-media 5.2 M Transaction Summary =================================================================================================================================================== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 5.2 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : kernel-PAE-devel 1/1 Installed: kernel-PAE-devel.i686 0:2.6.18-164.el5 Complete! # yum –disablerepo=* –enablerepo=c5-media install kernel-xen-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * c5-media: Setting up Install Process Resolving Dependencies –> Running transaction check —> Package kernel-xen-devel.i686 0:2.6.18-164.el5 set to be installed –> Finished Dependency Resolution Dependencies Resolved =================================================================================================================================================== Package Arch Version Repository Size =================================================================================================================================================== Installing: kernel-xen-devel i686 2.6.18-164.el5 c5-media 5.2 M Transaction Summary =================================================================================================================================================== Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 5.2 M Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : kernel-xen-devel 1/1 Installed: kernel-xen-devel.i686 0:2.6.18-164.el5 Complete! # ### 1.7.んでrpmbuildする

rpmbuild -bb –target i686 ./SPECS/atl1e-kmod.spec Building target platforms: i686 Building for target i686 Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.19714 + umask 022 + cd /root/rpmbuild/BUILD + LANG=C + export LANG + unset DISPLAY + cd /root/rpmbuild/BUILD + rm -rf atl1e-kmod-1.0.1.0 + /bin/mkdir -p atl1e-kmod-1.0.1.0 + cd atl1e-kmod-1.0.1.0 + /usr/bin/bzip2 -dc /root/rpmbuild/SOURCES/atl1e-1.0.1.0.tar.bz2 + tar -xf - + STATUS=0 + ‘[’ 0 -ne 0 ‘]’ ++ /usr/bin/id -u + ‘[’ 0 = 0 ‘]’ + /bin/chown -Rhf root . ++ /usr/bin/id -u + ‘[’ 0 = 0 ‘]’ + /bin/chgrp -Rhf root . + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + for kvariant in ‘""’ xen PAE + /bin/cp -a atl1e-1.0.1.0 _kmod_build_ + /bin/cat + for kvariant in ‘""’ xen PAE + /bin/cp -a atl1e-1.0.1.0 _kmod_build_xen + /bin/cat + for kvariant in ‘""’ xen PAE + /bin/cp -a atl1e-1.0.1.0 _kmod_build_PAE + /bin/cat + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.22401 + umask 022 + cd /root/rpmbuild/BUILD + cd atl1e-kmod-1.0.1.0 + LANG=C + export LANG + unset DISPLAY + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-i686 + pushd _kmod_build_ ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_ ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-i686 modules M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_ make: Entering directory /usr/src/kernels/2.6.18-164.el5-i686' CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/at\_main.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/at\_hw.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/at\_param.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/at\_ethtool.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/kcompat.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/atl1e.o Building modules, stage 2. MODPOST CC /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/atl1e.mod.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/atl1e.ko make: Leaving directory /usr/src/kernels/2.6.18-164.el5-i686’ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-xen-i686 + pushd _kmod_build_xen ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_xen ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-xen-i686 modules M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_xen make: Entering directory /usr/src/kernels/2.6.18-164.el5-xen-i686' CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/at\_main.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/at\_hw.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/at\_param.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/at\_ethtool.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/kcompat.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/atl1e.o Building modules, stage 2. MODPOST CC /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/atl1e.mod.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/atl1e.ko make: Leaving directory /usr/src/kernels/2.6.18-164.el5-xen-i686’ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-PAE-i686 + pushd _kmod_build_PAE ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_PAE ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-PAE-i686 modules M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_PAE make: Entering directory /usr/src/kernels/2.6.18-164.el5-PAE-i686' CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/at\_main.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/at\_hw.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/at\_param.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/at\_ethtool.o CC [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/kcompat.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/atl1e.o Building modules, stage 2. MODPOST CC /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/atl1e.mod.o LD [M] /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/atl1e.ko make: Leaving directory /usr/src/kernels/2.6.18-164.el5-PAE-i686’ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.95856 + umask 022 + cd /root/rpmbuild/BUILD + cd atl1e-kmod-1.0.1.0 + LANG=C + export LANG + unset DISPLAY + export INSTALL_MOD_PATH=/var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root + INSTALL_MOD_PATH=/var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root + export INSTALL_MOD_DIR=extra/atl1e + INSTALL_MOD_DIR=extra/atl1e + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-i686 + pushd _kmod_build_ ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_ ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-i686 modules_install M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_ make: Entering directory /usr/src/kernels/2.6.18-164.el5-i686' INSTALL /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_/atl1e.ko DEPMOD 2.6.18-164.el5 make: Leaving directory /usr/src/kernels/2.6.18-164.el5-i686’ + /usr/bin/install -d /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + /usr/bin/install atl1e.conf /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-xen-i686 + pushd _kmod_build_xen ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_xen ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-xen-i686 modules_install M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_xen make: Entering directory /usr/src/kernels/2.6.18-164.el5-xen-i686' INSTALL /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_xen/atl1e.ko DEPMOD 2.6.18-164.el5xen make: Leaving directory /usr/src/kernels/2.6.18-164.el5-xen-i686’ + /usr/bin/install -d /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + /usr/bin/install atl1e.conf /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + for kvariant in ‘""’ xen PAE + ksrc=/usr/src/kernels/2.6.18-164.el5-PAE-i686 + pushd _kmod_build_PAE ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_PAE ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/bin/make -C /usr/src/kernels/2.6.18-164.el5-PAE-i686 modules_install M=/root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/_kmod_build_PAE make: Entering directory /usr/src/kernels/2.6.18-164.el5-PAE-i686' INSTALL /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0/\_kmod\_build\_PAE/atl1e.ko DEPMOD 2.6.18-164.el5PAE make: Leaving directory /usr/src/kernels/2.6.18-164.el5-PAE-i686’ + /usr/bin/install -d /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + /usr/bin/install atl1e.conf /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root/etc/depmod.d/ + popd ~/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + find /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root -type f -name ‘.ko’ -exec strip –strip-debug ‘{}’ ‘;’ + /usr/lib/rpm/find-debuginfo.sh /root/rpmbuild/BUILD/atl1e-kmod-1.0.1.0 + /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot + /usr/lib/rpm/redhat/brp-compress + /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump + /usr/lib/rpm/brp-python-bytecompile + /usr/lib/rpm/redhat/brp-java-repack-jars Processing files: kmod-atl1e-1.0.1.0-3.el5.elrepo Finding Provides: /usr/lib/rpm/redhat/find-provides Finding Requires: /usr/lib/rpm/redhat/find-requires Provides: kabi-modules = 2.6.18-164.el5 atl1e-kmod = 1.0.1.0-3.el5.elrepo modalias(pci:v00001969d00001026svsdbcsci) = 1.0.1.0 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(post): /sbin/depmod /bin/sh Requires(preun): /bin/sh Requires(postun): /sbin/depmod /bin/sh Requires: kernel(rhel5_mm_ga) = 09f63dfab81bba7e01a2bf693f5ce125db466051 kernel(rhel5_drivers_pci_ga) = 33d9e0612417f727a0d8311c229fe8a80c65bb65 kernel(rhel5_net_core_ga) = 5aae342a66dcbcc14a7c1c001624f73a13620809 kernel(rhel5_kernel_module_ga) = 1b051ce57d6b18fdf071786f6f7296d3d0ab28f9 kernel(rhel5_kernel_ga) = 2cd142708e2d573b2de522df5df87aaeb7c1d298 kernel(rhel5_kernel_irq_ga) = 828c3f468e7a640d409d2bf24b4676e457406917 kernel(rhel5_init_ga) = e18da0926c862eaed98f20f312403ea33c944cbd kernel(rhel5_arch_i386_kernel_ga) = d1c30e0a553e9225eebd1b866e0d3ed7a6154147 kernel(rhel5_net_sched_ga) = 85d96cb2f432b540922c05edf889854d63884830 kernel(rhel5_vmlinux_ga) = 2bf444396ff7060828059d7a5379435140aee48a kernel(rhel5_arch_i386_mm_ga) = 0164a9bd3f1d0935cd3dcb734785179f25c1a064 kernel(rhel5_net_ethernet_ga) = 9c3c45aebe364e710f059016c591287b76553c11 Processing files: kmod-atl1e-xen-1.0.1.0-3.el5.elrepo Finding Provides: /usr/lib/rpm/redhat/find-provides Finding Requires: /usr/lib/rpm/redhat/find-requires Provides: kabi-modules = 2.6.18-164.el5xen atl1e-kmod = 1.0.1.0-3.el5.elrepo modalias(pci:v00001969d00001026svsdbcsci*) = 1.0.1.0 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(post): /sbin/depmod /bin/sh Requires(preun): /bin/sh Requires(postun): /sbin/depmod /bin/sh Requires: kernel(rhel5_mm_ga) = 5016f99aaf599aa846aa6937d9f20b5b1c4e3575 kernel(rhel5_net_sched_ga) = f37da797205bc94ee3ef5c164fe5e1f648db3483 kernel(rhel5_net_core_ga) = f7b50e8442f1ebbdb5da72ae720b178334020d33 kernel(rhel5_kernel_module_ga) = d5735208bc6503ccd8948759997ed61fb6889451 kernel(rhel5_kernel_ga) = 52c756e7a0505cfbcd0285fd99a855956b18c37b kernel(rhel5_drivers_pci_ga) = 454a29c6f654e93a3899a3fa29d214ea326c98bc kernel(rhel5_kernel_irq_ga) = 828c3f468e7a640d409d2bf24b4676e457406917 kernel(rhel5_init_ga) = e18da0926c862eaed98f20f312403ea33c944cbd kernel(rhel5_net_ethernet_ga) = 9c11f8f984fd4c5de39b059a170378fb6b676650 kernel(rhel5_arch_i386_kernel_ga) = 4b96372e997f8b63b9592eed1bf476f98ba7469d kernel(rhel5_vmlinux_ga) = d1de93c7337d058f90834388c99daa94ca262d90 ksym(pci_enable_msi) = 7e2b784b kernel(rhel5_arch_i386_mm_ga) = c4f1b9a53127e1f1ab1680c9a78e23b73ff1b054 kernel(rhel5_arch_i386_mach_xen_ga) = f140ac8f99498655de6d2128067bff4946e3cbcf ksym(pci_disable_msi) = e6abde88 Processing files: kmod-atl1e-PAE-1.0.1.0-3.el5.elrepo Finding Provides: /usr/lib/rpm/redhat/find-provides Finding Requires: /usr/lib/rpm/redhat/find-requires Provides: kabi-modules = 2.6.18-164.el5PAE atl1e-kmod = 1.0.1.0-3.el5.elrepo modalias(pci:v00001969d00001026svsdbcsci*) = 1.0.1.0 Requires(interp): /bin/sh /bin/sh /bin/sh Requires(rpmlib): rpmlib(VersionedDependencies) <= 3.0.3-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires(post): /sbin/depmod /bin/sh Requires(preun): /bin/sh Requires(postun): /sbin/depmod /bin/sh Requires: kernel(rhel5_mm_ga) = 6332c6ed3ca143359798a4529631ebefa894a9c9 kernel(rhel5_drivers_pci_ga) = 50086fb8ed28719cd834e4faca88e0dd8e6451eb kernel(rhel5_net_core_ga) = d9d07c04de86c56d6fa0af24917e03af183200f8 kernel(rhel5_kernel_module_ga) = 6a580650b415bc0a40b1d9914dac45fe3eb24526 kernel(rhel5_kernel_ga) = 20c31f5714940a261cdf954d5a8195d6bcffc42a kernel(rhel5_kernel_irq_ga) = 828c3f468e7a640d409d2bf24b4676e457406917 kernel(rhel5_init_ga) = e18da0926c862eaed98f20f312403ea33c944cbd kernel(rhel5_net_ethernet_ga) = 17934f3ea7f56deeaa9b45e5fa8ea47db815ac51 kernel(rhel5_net_sched_ga) = 2210a9a7709720cd845203f97b52c4d2c2758a5c kernel(rhel5_arch_i386_kernel_ga) = 122d62e3da674471acbdef78d5c2cc8206275af9 kernel(rhel5_vmlinux_ga) = 60527c0937744189fdc3fcc5dd43601b259d0cf1 kernel(rhel5_arch_i386_mm_ga) = 7fd3d573119f55b3123fce44b3c6dd1961226949 Processing files: atl1e-kmod-debuginfo-1.0.1.0-3.el5.elrepo Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root Wrote: /root/rpmbuild/RPMS/i686/kmod-atl1e-1.0.1.0-3.el5.elrepo.i686.rpm Wrote: /root/rpmbuild/RPMS/i686/kmod-atl1e-xen-1.0.1.0-3.el5.elrepo.i686.rpm Wrote: /root/rpmbuild/RPMS/i686/kmod-atl1e-PAE-1.0.1.0-3.el5.elrepo.i686.rpm Wrote: /root/rpmbuild/RPMS/i686/atl1e-kmod-debuginfo-1.0.1.0-3.el5.elrepo.i686.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.12479 + umask 022 + cd /root/rpmbuild/BUILD + cd atl1e-kmod-1.0.1.0 + /bin/rm -rf /var/tmp/atl1e-kmod-1.0.1.0-3.el5.elrepo-build-root + exit 0 # で、見るとrpmファイルができている。 # find .|grep -v BUILD . ./SRPMS ./SPECS ./SPECS/atl1e-kmod.spec ./RPMS ./RPMS/i686 ./RPMS/i686/atl1e-kmod-debuginfo-1.0.1.0-3.el5.elrepo.i686.rpm ./RPMS/i686/kmod-atl1e-xen-1.0.1.0-3.el5.elrepo.i686.rpm ./RPMS/i686/kmod-atl1e-1.0.1.0-3.el5.elrepo.i686.rpm ./RPMS/i686/kmod-atl1e-PAE-1.0.1.0-3.el5.elrepo.i686.rpm ./SOURCES ./SOURCES/kmodtool-atl1e ./SOURCES/atl1e-1.0.1.0.tar.bz2 # できたrpmファイルに署名する。 # cd RPMS/i686 # for i in ls -1 *.rpm > do > rpm –addsign $i > done Enter pass phrase: Pass phrase is good. atl1e-kmod-debuginfo-1.0.1.0-3.el5.elrepo.i686.rpm: gpg: WARNING: standard input reopened gpg: WARNING: standard input reopened Enter pass phrase: Pass phrase is good. kmod-atl1e-1.0.1.0-3.el5.elrepo.i686.rpm: gpg: WARNING: standard input reopened gpg: WARNING: standard input reopened Enter pass phrase: Pass phrase is good. kmod-atl1e-PAE-1.0.1.0-3.el5.elrepo.i686.rpm: gpg: WARNING: standard input reopened gpg: WARNING: standard input reopened Enter pass phrase: Pass phrase is good. kmod-atl1e-xen-1.0.1.0-3.el5.elrepo.i686.rpm: gpg: WARNING: standard input reopened gpg: WARNING: standard input reopened # おk。じゃあ次に進む。 2.できたrpmを配布するためにリポジトリを作る


前回インストールしたリポジトリとは別のものを作る。混ぜると危険。(今回ここでめちゃめちゃハマった) まずrpm本体ファイルをコピーする # cd /root/rpmbuild # mkdir -p /var/www/html/ore/CentOS # cp RPMS/*.rpm /var/www/html/ore/CentOS/ コピーしただけじゃリポジトリの一部として認識できないのでcreaterepoする。まずはcreaterepoをインストール。 # yum –disablerepo=* –enablerepo=c5-media install createrepo んでcreaterepoする。 # cd /var/www/html/ore # mkdir repodata # touch repodata/comps.xml # createrepo -g repodata/comps.xml -o /var/www/html/ore /var/www/html/ore 4/4 - CentOS/lapack-3.0-37.el5.i386.rpm m6.rpm Saving Primary metadata Saving file lists metadata Saving other metadata # とりあえずモジュールが含まれているかどうか確認。 # cd repodata # zcat filelist.xml.gz | grep kmod-atl1e /etc/depmod.d/atl1e.conf/lib/modules/2.6.18-164.el5xen/extra/atl1e/atl1e.ko/lib/modules/2.6.18-164.el5xen/lib/modules/2.6.18-164.el5xen/extra/lib/modules/2.6.18-164.el5xen/extra/atl1e /etc/depmod.d/atl1e.conf/lib/modules/2.6.18-164.el5/extra/atl1e/atl1e.ko/lib/modules/2.6.18-164.el5/lib/modules/2.6.18-164.el5/extra/lib/modules/2.6.18-164.el5/extra/atl1e /etc/depmod.d/atl1e.conf/lib/modules/2.6.18-164.el5PAE/extra/atl1e/atl1e.ko/lib/modules/2.6.18-164.el5PAE/lib/modules/2.6.18-164.el5PAE/extra/lib/modules/2.6.18-164.el5PAE/extra/atl1e # おk。入ってるっぽいな。 じゃあkickstartの設定ファイルを編集してkmod-atl1eを追加。今回i686-PAEカーネルが入るのでそれを反映して。 # cd /var/www/html # vi ks_centos54.cfg 変更部分は赤字 # Kickstart file automatically generated by anaconda. install #cdrom url –url http://172.16.0.1/dist repo –name=dist –baseurl=http://172.16.0.1/dist repo –name=ore –baseurl=http://172.16.0.1/ore lang en_US.UTF-8 keyboard jp106 network –device eth0 –bootproto dhcp #rootpw –iscrypted $1$.DqY.ln7$yOJvWGbmFjuU6aiPwF9KA0 rootpw password firewall –enabled –port=22:tcp authconfig –enableshadow –enablemd5 selinux –disabled timezone Asia/Tokyo bootloader –location=mbr –driveorder=hda # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work clearpart –all –drives=sda part /boot –fstype ext3 –size=100 –ondisk=sda part pv.2 –size=0 –grow –ondisk=sda volgroup VolGroup00 –pesize=32768 pv.2 logvol swap –fstype swap –name=LogVol01 –vgname=VolGroup00 –size=768 –grow –maxsize=1536 logvol / –fstype ext3 –name=LogVol00 –vgname=VolGroup00 –size=1024 –grow %packages @admin-tools @base @core @development-libs @development-tools @editors @ftp-server @java @java-development @legacy-network-server @legacy-software-development @legacy-software-support @mail-server @network-server @ruby @server-cfg @system-tools @text-internet @web-server @smb-server kmod-atl1e-PAE (<–これを追加した) keyutils kexec-tools trousers fipscheck device-mapper-multipath perl-Convert-ASN1 imake audit 3.じゃあクライアントをkickstartしてみるか

で、インストール直後からネットワークも使えてよいことになった! 4.報告書作成

これ書いた 5.脳内反省会

今日はVirtualBox上のOpenSolarisで音を出した

いろいろ参考にした。まとめるとこんな感じか。ハードウェアはMacbooc。Intel ICH AC97。VirtualBoxの設定では、ホストドライバはCoreAudio、コントローラはICH AC97になっている。

  1. pfexec pkg uninstall SUNWaudiohd
  2. リブート
  3. ここから"Solaris 10/11 (x86/AMD64)“用のpkgをダウンロードする
  4. 既にossパッケージが入っているようならpkgrm ossして、リブート
  5. で、pfexec pkgadd -d oss-solaris-v4.2-2002-i386.pkg
  6. pfexec rm -f /etc/rc3.d/S89oss
  7. 再起動
  8. 再起動後デバイスドライバユーティリティで見ると、oss_ichデバイスドライバでオーディオデバイスが見えてる。一般ユーザでosstestすると音が鳴るはず
  9. 一般ユーザでgstreamer-propertiesを開く
  10. 出力をいろいろ変えながらテストボタンを押すとなんか音が出る
  11. パネルの音量調節はなんかうまくリンクしてないので、一回削除してはり直す

て感じか。システム更新すると鳴らなくなったりするのでそのときは上の手順をやり直し。

いままでFedoraだと音は出るけど遅くなったり早くなったりと残念クオリティだったけど。これだけでOpenSolaris使ってみる気出てくるわ〜。次はaudaciousだな。

今日はベニヤサーバにOSを入れてみた(my homebrewed cluster part.2)

  1. 今日はOSを入れるぜ

前回まででハードウェアは大体組めた。現状は以下のような構成になっている。

draw100104-1

まずはCentOSでpxeboot&kickstartでOSのインストールをできるだけ省力化しようと努力してみた。

  1. インストールサーバの準備

2.1. CentOS5.4をVirtualBox上の仮想サーバとして作る

Macbookから、“ssh -X user@opensolaris"としてログインし、VirtualBoxを起動してXをMacbookに飛ばしてくる。Mac超便利!とりあえずディスクサイズは最大20GBの可変サイズで作成。

作成後は一旦シャットダウン。ネットワークデバイスをブリッジ接続にしてブート。

2.2. インストール用リポジトリを展開する

インストールできたら、インストールに使用したDVDから、ネットワークインストール用に内容をコピーする。

mount -o ro /dev/cdrom /media/cdrom # mkdir -p /var/www/html/dist # cd /media/cdrom # tar cf - . | ( cd /var/www/html/dist ; tar xvf - ) ブラウザからhttp://virtualserver/dist/で内容が見れることを確認。

2.3. TFTPサーバを構成する

Red Hat(CentOS)にはsystem-config-netbootというGUIツールで比較的容易にTFTPサーバを構成できるツールがあるのでこれを使ってみる。

yum –disablerepo=* –enablerepo=c5-media install system-config-netboot* で、インストールしたら"system-config-netboot"で起動。

sc100104-1

“Network Install"を選択。

sc100104-2

[Operating system identifier], [Description]には識別可能な文字列 [Select protocol for installation]は"HTTP” [kickstart]は(とりあえず今は)空欄 [Server IP Address]にはHTTPサーバのIPアドレス(この場合は172.16.0.1)※OKボタンを押した時点でここにHTTPで到達可能なようにしておくこと。 [Location]はDocumentRootからの相対アドレス

を書く。で、OK。

次はクライアント側。

sc100104-3

ここはクライアント側のIPアドレスだけ入れてOK。

できあがったtftpdの設定は以下のようになっている。

cat /tftpboot/linux-install/pxelinux.cfg/default default local timeout 100 prompt 1 display msgs/boot.msg F1 msgs/boot.msg F2 msgs/general.msg F3 msgs/expert.msg F4 msgs/param.msg F5 msgs/rescue.msg F7 msgs/snake.msg label local localboot 1 label 0 localboot 1 label 1 kernel nodeA/vmlinuz append initrd=nodeA/initrd.img ramdisk_size=8419 method=http://172.16.0.1/dist ip=dhcp ここにある"nodeA/vmlinuz”, “nodeA/initrd.img"はそれぞれ”/tftpboot/linux-install"からの相対パスになっている。

2.4. DHCPサーバを構成する

次にDHCPサーバを構成する。まずはインストール。

yum –disablerepo=* –enablerepo=c5-media install dhcp # cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample /etc/dhcpd.conf cp: overwrite `/etc/dhcpd.conf’? y /etc/dhcpd.confを編集する。赤字部分がpxebootに関係する部分。

ddns-update-style interim; ignore client-updates; allow booting; allow bootp; default-lease-time 21600; max-lease-time 43200; subnet 172.16.0.0 netmask 255.255.0.0 { option routers 172.16.0.1; option subnet-mask 255.255.0.0; range 172.16.10.1 172.16.10.254; default-lease-time 21600; max-lease-time 43200; class “pxeclients” { match if substring(option vendor-class-identifier, 0, 9) = “PXEClient”; next-server 172.16.0.1; filename “linux-install/pxelinux.0”; } } ここまできたら、dhcpdとtftpdを動かす。

chkconfig dhcpd on # /etc/init.d/dhcpd start # chkconfig tftp on # chkconfig xinetd on # /etc/init.d/xinetd restart クライアント側は事前にPXE起動できるようBIOS設定しておく。キーボード、ネットワークケーブル、VGAモニタをつけて電源を入れる。以下のような画面が出れば成功。[1]キーをタイプして"nodeA"のブートプロセスに移行する。

cimg1358

ただしこのままブートプロセスを進めると、以下のように通常のインストールになってしまうので、次はkickstartの設定を追加する。

cimg1359

2.5. kickstartファイルを用意する

kickstartファイルはインストールサーバをインストールした時に/rootにできているanaconda-ks.cfgをベースに少し変更する。赤字部分が変更したところ。

Kickstart file automatically generated by anaconda. install #cdrom url –url http://172.16.0.1/dist lang en_US.UTF-8 keyboard jp106 network –device eth0 –bootproto dhcp #rootpw –iscrypted $1$J1wcQuxw$sfIj335v9EAHSm1Kct9UU1 rootpw password firewall –enabled –port=22:tcp authconfig –enableshadow –enablemd5 selinux –disabled timezone Asia/Tokyo bootloader –location=mbr –driveorder=hda # The following is the partition information you requested # Note that any partitions you deleted are not expressed # here so unless you clear all partitions first, this is # not guaranteed to work #clearpart –all –drives=hda clearpart –all –drives=sda part /boot –fstype ext3 –size=100 –ondisk=sda part pv.2 –size=0 –grow –ondisk=sda volgroup VolGroup00 –pesize=32768 pv.2 logvol swap –fstype swap –name=LogVol01 –vgname=VolGroup00 –size=768 –grow –maxsize=1536 logvol / –fstype ext3 –name=LogVol00 –vgname=VolGroup00 –size=1024 –grow %packages @admin-tools @base @core @dns-server @development-libs @development-tools @editors @ftp-server @java @java-development @legacy-network-server @legacy-software-development @legacy-software-support @mail-server @network-server @ruby @server-cfg @system-tools @text-internet @web-server @smb-server keyutils kexec-tools trousers fipscheck device-mapper-multipath perl-Convert-ASN1 imake audit で、これを/var/www/html以下におく。

mv ks_cent54.cfg /var/www/html # chmod 644 /var/www/html/ks_cent54.cfg で、/tftpboot/linux-install/pxelinux.cfg/defaultを編集する。赤字が変更部分。

default local timeout 100 prompt 1 display msgs/boot.msg F1 msgs/boot.msg F2 msgs/general.msg F3 msgs/expert.msg F4 msgs/param.msg F5 msgs/rescue.msg F7 msgs/snake.msg label local localboot 1 label 0 localboot 1 label 1 kernel nodeA/vmlinuz # append initrd=nodeA/initrd.img ramdisk_size=8419 method=http://172.16.0.1/dist ip=dhcp append initrd=nodeA/initrd.img ramdisk_size=8419 ksdevice=eth0 ks=http://172.16.0.1/ks_cent54.cfg devfs=nomount ip=dhcp これで変更はおわり。クライアント側をもう一度起動してみる。

  1. じゃあクライアントにインストールしてみる→失敗する訳だがorz

で、クライアントを起動してみると、kickstartファイルの読み込みに失敗する。(ハードウェアの構成によってはここで読み込める人もいるかもしれない。その人はここで終わり。Enjoy!)

cimg1361

で、[Alt]+[F4]キーでログを見てみると、ネットワークデバイスドライバが読み込めていないのでネットワークに繫げられていないことがわかる。

そういえば前回、ネットワークカードの設定をしながら「これってAtherosのネットワークチップなんだ・・・」と思っていたが。で、マザーボード(P5KPL-AM EPL)のメーカーAsusのホームページを見てみると、Linux用にドライバが用意されている。おお!これ組み込めばいいんじゃね?となる。

  1. ネットワークドライバをpxebootで使用するinitrd.imgに追加する

以下さらっと書いてますがかなり試行錯誤しました・・・。

まずASUSのページからダウンロードしたドライバをインストールサーバにおいて、展開する。

mac$ scp LinuxDrivers.zip root@instserver:/root root@instserver’s password: LinuxDrivers.zip 100% 4586KB 4.5MB/s 00:01 mac$ ssh root@instserver root@instserver’s password: Last login: Mon Jan 4 22:53:51 2010 from mac # ls anaconda-ks.cfg install.log install.log.syslog LinuxDrivers.zip # unzip LinuxDrivers.zip 展開先のディレクトリに移動し、ドライバをmakeする。本来は不要なmake installまでやってるが、ここで変更される内容を後で参照するため。もしかしたらmake installしなくてもいい方法があるのかもしれないがよくわかんない。

cd LinuxDrivers/Lan/src # make make -C /lib/modules/2.6.18-164.el5/build SUBDIRS=/root/LinuxDrivers/Lan/src modules make[1]: Entering directory /usr/src/kernels/2.6.18-164.el5-i686' CC [M] /root/LinuxDrivers/Lan/src/at\_main.o CC [M] /root/LinuxDrivers/Lan/src/at\_hw.o CC [M] /root/LinuxDrivers/Lan/src/at\_param.o CC [M] /root/LinuxDrivers/Lan/src/at\_ethtool.o CC [M] /root/LinuxDrivers/Lan/src/kcompat.o LD [M] /root/LinuxDrivers/Lan/src/atl1e.o Building modules, stage 2. MODPOST CC /root/LinuxDrivers/Lan/src/atl1e.mod.o LD [M] /root/LinuxDrivers/Lan/src/atl1e.ko make[1]: Leaving directory /usr/src/kernels/2.6.18-164.el5-i686’ # make install make -C /lib/modules/2.6.18-164.el5/build SUBDIRS=/root/LinuxDrivers/Lan/src modules make[1]: Entering directory /usr/src/kernels/2.6.18-164.el5-i686' Building modules, stage 2. MODPOST make[1]: Leaving directory /usr/src/kernels/2.6.18-164.el5-i686’ gzip -c ../atl1e.7 > atl1e.7.gz # remove all old versions of the driver find /lib/modules/2.6.18-164.el5 -name atl1e.ko -exec rm -f {} ; || true find /lib/modules/2.6.18-164.el5 -name atl1e.ko.gz -exec rm -f {} ; || true install -D -m 644 atl1e.ko /lib/modules/2.6.18-164.el5/kernel/drivers/net/atl1e/atl1e.ko /sbin/depmod -a || true install -D -m 644 atl1e.7.gz /usr/share/man/man7/atl1e.7.gz man -c -P’cat > /dev/null’ atl1e || true # 次にpxebootで使われるinitrd.imgをほどく。

cd /tftpboot/linux-install/nodeA/ # mkdir initrd # cd initrd # zcat ../initrd.img | cpio -i -c # ls bin dev etc init modules proc sbin selinux sys tmp var # さらにmodules以下にある、各ファイルに変更をくわえる。 まずはドライバ本体(atl1e.ko)をmodules.cgzアーカイブにくわえる。

cd modules # ls module-info modules.alias modules.cgz modules.dep pci.ids # mkdir modulesdir # cd modulesdir # zcat ../modules.cgz | cpio -idv # ls 2.6.18-164.el5 # cd 2.6.18-164.el5/i686/ # cp /root/LinuxDrivers/Lan/src/atl1e.ko . # chmod 744 atl1e.ko # cd ../.. # find .| cpio -c -o | gzip -c9 > ../modules.cgz 27112 blocks # cd .. # rm -rf ./modulesdir # 次に、module-info, modules.alias, modules.dep, pci.idsの各ファイルに適切なエントリを追加する。何が適切かってのは参照するところがあるので以下参照。

まずはmodule-info。赤字が追加内容。インデントのスペースは実際にはタブです。追加の3行目はどんな文字でもいいのかもしれない。よくわかんない。

(前略) ata_piix scsi “Intel PIIX/ICH ATA controllers” atl1e eth “Atheros Gigabit Ethernet” atmel_cs eth “Atmel at76c50x 802.11 PCMCIA wireless ethernet” (後略) 次にmodules.alias。まずは追加する内容を以下のように確認する。赤字部分がそれ。

grep atl1e /lib/modules/2.6.18-164.el5/modules.alias alias pci:v00001969d00001026svsdbcsci* atl1e # で、pxeboot側のmodules.aliasを編集。赤字が追加内容。

alias pci:v00008086d00007010svsdbcsci* ata_piix alias pci:v00001969d00001026svsdbcsci* atl1e alias pcmcia:mcffnpfnpaB474D43Apb6B1FEC94pcpd* atmel_cs 次にmodules.dep。まずは確認。赤字部分がそれ。

grep atl1e /lib/modules/2.6.18-164.el5/modules.dep /lib/modules/2.6.18-164.el5/kernel/drivers/net/atl1e/atl1e.ko: 依存モジュールはないという意味だと思われたので、pxeboot側のmodules.depは特に変更せず。

最後にpci.ids。まずは確認。赤字部分がそれ。

grep atl1e /lib/modules/2.6.18-164.el5/modules.pcimap atl1e 0x00001969 0x00001026 0xffffffff 0xffffffff 0x00000000 0x00000000 0x0 赤字部分を以下のように追加する。インデントのスペースは実際にはタブです。

(前略) 18ca XGI Technology Inc. (eXtreme Graphics Innovation) 0020 Z7/Z9 (XG20 core) 0040 Volari V3XT/V5/V8 1969 Atheros Corp. 1026 Atheros Gigabit Ethernet 197b JMicron Technology Corp. (後略) 最後にinitrd.imgを再作成する。

find .| cpio -c -o | gzip -c9 > ../initrd.img 27809 blocks # これでおしまい。

  1. クライアントインストール再挑戦→成功!

クライアントを再度poweronして、pxebootする。うまく行けばanacondaのStage2まで移行して、インストールが開始される。

cimg1369

後は再起動を促す表示が出たら、再起動。

ただしpxebootを有効にしておくと、再起動後またインストール前の画面になり、通常であれば10秒待てばHDDからブートするはずだがブートしない。これはよくわかんなかった。要調査。とりあえずはdhcpdのpxeclients部を無効にしておけばいい。こんな感じ。/etc/init.d/dhcpd restartも忘れずに。

ddns-update-style interim; ignore client-updates; #allow booting; #allow bootp; default-lease-time 21600; max-lease-time 43200; subnet 172.16.0.0 netmask 255.255.0.0 { option routers 172.16.0.1; option subnet-mask 255.255.0.0; range 172.16.10.1 172.16.10.254; default-lease-time 21600; max-lease-time 43200; # class “pxeclients” { # match if substring(option vendor-class-identifier, 0, 9) = “PXEClient”; # next-server 172.16.0.1; # filename “linux-install/pxelinux.0”; # } } クライアントがインストールしたOSでブートすれば完了。

  1. 報告書作成

これ書いた。

  1. 脳内反省会

  • 疲れた・・・
  • 世の中に情報あんまりないですね・・・
  • HDDブートできるようにしたいなあ・・・
  • インストール時にatl1eドライバも入れたい
  • 他のリポジトリも同時にインストールできるようにしたいなあ こんな感じ!?

今日はWoLにトライして断念した

先日の続き。とりあえず3ノードできた。 WoLを試みるもできない。そういえば昔もトライして断念した記憶が・・・orz * マザーボードはAsus P5KPL-AM EPU

  • BIOSで[Power]-[ACPI 2.0 Support]を"Enable"に
  • [Power]-[APM Configuration]-[Power On By PCIE Devices]を"Enable"に
  • で、電源OFF。NICのLEDが点灯する。
  • wakeonlanを使用して、$ wakeonlan xx:xx:xx:xx:xx:xx とする
  • ・・・電源はいらねえしorz いろいろぐぐってもWindowsのデバイスマネージャで設定をなんとかかんとか、とか。Windows持ってねーし。しょうがないのでちょっとこれは一時保留。OS入れようOS!