categories: カイハツ

今日は久しぶりにCocoaのチュートリアルをこなした

Cocoaアプリケーションチュートリアル 今まで何年もやっては挫折してたが、ようやくプロパティ、メソッド、コネクタがぼんやりわかってきたような気がする。でもどうやってアプリ作ればいいんださっぱりわかんねえ!

今日はkickstartでxenカーネルを入れるようにした

だんだん本題に入りつつある。先日作成したkickstartファイルを編集して、インストール時にxenカーネルを入れるようにする。起動時にど のカーネルで上がるようにするかは明示していないが、xenカーネルしかインストールしなければxenカーネルで上がってくるようだ。以下 kickstartファイル。赤字が変更部分。 # cat /var/www/html/ks_cent54.cfg # Kickstart file automatically generated by anaconda. install #cdrom url –url http://172.16.0.1/dist repo –name=released –baseurl=http://172.16.0.1/dist repo –name=ore –baseurl=http://172.16.0.1/ore lang en_US.UTF-8 #keyboard jp106 keyboard us 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 -kernel -kernel-PAE kernel-xen kmod-atl1e-xen xen libvirt virt-manager keyutils kexec-tools trousers fipscheck device-mapper-multipath perl-Convert-ASN1 imake audit

今日は細かいところを整理してみた(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を透過的に通すようにすべきか・・・。う〜ん。

今日は激しく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 %_signature gpg %_gpg_path /root/.gnupg %_gpg_name Anatano Namae %_gpgbin /usr/bin/gpg ### 1.2.GPG鍵を作る

# gpg –gen-key gpg (GnuPG) 1.4.5; Copyright © 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 ” Change (N)ame, ©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 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® 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® 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 11 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 11 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:v00001969d00001026sv*sd*bc*sci) = 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:v00001969d00001026sv*sd*bc*sci) = 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:v00001969d00001026sv*sd*bc*sci) = 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 44 - 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.脳内反省会

今日はベニヤサーバに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:v00001969d00001026sv*sd*bc*sci atl1e # で、pxeboot側のmodules.aliasを編集。赤字が追加内容。

alias pci:v00008086d00007010sv*sd*bc*sci ata_piix alias pci:v00001969d00001026sv*sd*bc*sci atl1e alias pcmcia:m*c*f*fn*pfn*paB474D43Apb6B1FEC94pcpd 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. 脳内反省会

    • 疲れた・・・
  2. 世の中に情報あんまりないですね・・・

  3. HDDブートできるようにしたいなあ・・・

  4. インストール時にatl1eドライバも入れたい

  5. 他のリポジトリも同時にインストールできるようにしたいなあ こんな感じ!?

今日は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!

今日はベニヤサーバを作ってみた・その1(my homebrewed cluster part.1)

  1. はじめに ——-

自宅で鯖運用の難点は場所。特に何台も運用するとなると収納とか大変なので。最近は仮想サーバでなんとかなるケースも多いけど物理的に複数台いるときはいろいろ悩ましい。で、最近はこういうの頑張ってるみたいですが、なにげに特殊パーツ使ったりとか、金属加工してたりとか素人が自宅でやるにはハードルが高いので、なんとか似たようなことをやってみようと思い立ちました。ぶっちゃけこれをやってみたかっただけ。

ポインツ。

  • 入手性のよいパーツのみで製作
  • 素人でも加工が容易
  • 高密度重視
  • メンテナンス性重視
  • 値段重視!!!
  • 爆音とかしない
  • 家のブレーカとか落ちないようにする
  • フルディスクロージャ ということで、みんなの味方ルミナスラックと、ホームセンターで安価に入手可能・加工が容易なベニヤ板でサーバ組んで見たので以下メモ。

more 2. 買ってきた(1229 14:00〜20:00)

cimg1314

買ったもの

  • セキチューで買ったもの

    • ルミナスホームラック4段76ワイドx1(¥6,980。棚4つ含)
    • ルミナススチール棚x1(¥1,880)
    • ルミナススチール棚用スリーブx3(¥50x3=¥150)
    • ラワン材ベニヤ板x3(¥248x3=¥744。450x450x5mm)
    • 桧工作材x3(¥78x3=¥234。900x7x7mm)
    • ルミナスラック用掛けバスケットx1(¥880。コンソールモニタ収納用)
  • PCショップで買ったもの

    • CPU CeleronE3300x3(¥5,200x3=¥15,600。一応VT必須Dualcore以上で最安を狙ったつもり)
    • DDR2-800 4GBセットx3(¥9,429x3=¥28,287。Kingmax, 2GBDIMMx6。4GB必須にして最安を狙ったが詰めが甘いかもしれない)
    • HDD 500GB SATAx3(¥4,980x3=¥14,940。HGST Deskstar 7K1000.C。OS2つ+α分で最安を狙ったが詰めが甘いかもしれない。後々やりたいことがあるのでちょっと大きめにしたところもある。)
    • MotherBoardx3(¥2,980x3=¥8,490。ASUS P5KPL-AM/EPU。キャンペーン価格のため追風参考値)
    • 電源x3(¥5,480x3=¥16,140。HEC WINDMILL PRO Ultra Quiet。安い電源は売り切れてた&探すのが億劫だったので妥協。)
    • 16port ギガビットイーサネットハブx1(¥19,800。いずれ使う予定なのでちょっと奮発。8ポートなら3分の1の価格になる。)
    • マザーボード取り付け用六角スペーサーx3(¥380x3=¥1,140)
  • 既に家にあったので買わなかったもの

    • コンソールモニタ(もともとは車載用でVGAが入力できる。友人からメシ1回おごりで入手したが特に使う機会もなく5年ほど眠っていたもの)
    • 電動ドリル
    • 電動ドリル用木工ビット
    • 電動ドリル用リューター
    • 紙やすり
    • のこぎり
    • 木工用ボンド
    • タイラップ(インシュロック?どっちが正しいの?)
    • イーサネットケーブル各種
    • そうじ機(大量に出る木屑を掃除する)
    • キーボード、マウスなど

これで3台分。合計金額は¥115,265(上記含め全て税別)。1台あたりのコストは¥38,500ってとこですか。周辺機器も入っているとはいえ、今となっては微妙と言えば微妙な金額かと。 3. 製作その1(12/29 20:00〜24:00)

まずはルミナスラックを組み立て。

cimg1315

このあたりは説明書どおりに組み立てればなんということはない。楽勝。

で、組み上がったラックにベニヤ板をあてがって、サイズを決める。今回は1段に2台搭載したいのでそれをもとにサイズを32cmに決めた。(後から考えると、MiniATXの幅は25cmなのでぎりぎりまでやれば、EIA19インチの1つの棚に2台収められるけど、今回はそこまで頑張らなかった)

draw1

同時に電源とマザーボードも位置決めして、マザーボード固定用にネジ穴を開ける位置をマジックでマーク。

cimg1316

線を引いたところをのこぎりで切る。お隣さんにご迷惑かけないよう、切る時は床にタオルを重ねて吸音。さらにマザーボードのねじ穴を電ドリで開ける。今回は3mmのビットで開けたがねじこむネジによって穴の大きさは変わるので注意。

で、試しに1本ねじ込んでみる。具合が良ければ全部ねじ込む。指が痛くなったら六角の上につけるねじを入れて、ドライバーで押し込みながら回せば楽に入る。

cimg1318

次はディスクのマウンタを作る。今回できるだけ騒音がでないよう、稼働ファンを減らすようにした。で、CPUファンがHDDファンも兼ねるようにマウンタを作ってみた。(ただ、結果としては微妙だったかもしれない。後述。)ねらいとしては以下のような感じ。

draw2

のこぎりで切り取った短い方にCPUのヒートシンクを裏返して、形をマジックで写し取る。(ここでヒートシンクに付いているグリスに触らないように注意)

写し取った線の内側に、5mmほど開けて円をかく。

cimg1320

裏返して、ディスクの位置決めをして、マジックで形をかく。

cimg1322

ヒートシンク側の内側の線に合わせて、穴をあける。ここは電ドリがないとキツい。今回は10mmビットでガツガツ穴をあけてくり抜いた感じ。くり抜いた後のバリはニッパーで切り取ったり、リューター・紙ヤスリで削ればいい。

cimg1325

次に桧の棒を各所に当てながら長さを決めて、マジックで線を書く。今回は電源(半)固定と、ディスク固定用に使う。以下のような感じ。

draw31

結果として作るのは以下の通り。

  • 電源固定用

    • 長さ155mm x2本
    • 長さ130mm x1本
  • ディスクマウンタの足

    • 長さ25mm x4本
  • ディスクマウンタの上部

    • ディスク浮かし用

      • 長さ7mm x4本
    • ディスク固定用

      • 長さ20mm x12本

で、桧の棒に線をかく。

cimg1326

切って、木工用ボンドで貼付けていく。この辺がダルく辛い。ここは根気で切り抜ける。

で、貼った。ディスクマウンタはとりあえず足だけつけた。

cimg1328

ディスクマウンタの足は固定できないとその後の作業が続かないので一旦ここで締め。寝た。

  1. 製作その2(12/30 9:00〜17:00) ————————–

起きた。腰が痛いが根気でやる。休みなのに。

で、みるとボンドが固化して続きができるようになっている。

cimg1329

ディスクマウンタを裏返して、残りを貼付ける。

cimg1333

ディスクマウンタの足は手作業で切ると不揃いになってガタつくので、ボンドを盛って長さを微調整する。

cimg1335

ボンドが乾いて固化したらベニヤ側の作業は一旦完了。

  1. 仮組み(1230 17:00〜18:00) ————————-

ボンドが固化したらパーツを仮組みする。まずは電源とマザーボード。

cimg1337

とりあえず悦に入る。続けてハードディスク。

cimg13381

あ・・・。さっきまでは自立していたがケーブルのテンションに負けて傾いてしまった。とりあえず暫定的に以下のようにしてみる。

cimg1342

せっかくだからモニタとキーボードも繫げて電源を入れてみる。電源を入れるためのボタンを付けてないが、後々Power on Etherで電源制御するつもりなので、今は電源ON/OFFのジャンパを導電材でチャタらせて電源を入れる。

cimg1343

よっしゃBIOS出た!まずは一安心。

  1. 仕上げ(1230 18:00〜19:00) ————————-

電源ケーブルを整線するための穴をあける。ケーブルの取り回しを見ながら位置決めしてマジックで印を付ける。印を付けたら各パーツは取り外す。

cimg1344

電ドリに4mmビットをつけて穴をあける。タイラップが通るようにちょっと大きめで。

cimg1345

で、ケーブルを固定。

cimg1346

こんな感じに。

cimg1348

こんどはディスクも自立した。一安心。

cimg1349

これでハードウェアとしてはとりあえず完成。後はソフトウェア側だがそれはまた別の機会に。

で、ベニヤ板と棒の残りはこれだけ。下のが元々の大きさ。何も考えてなかったものの、なかなかの効率。

cimg13511

  1. 報告書作成(1230 19:00〜21:00) —————————

これ書いた。

  1. 振り返って

    • やっぱベニヤとか不安 静電気とか気になる。穴開けると裏側がベキベキになるので。
  2. 工業製品って偉大 買うだけで終わるのって偉大。延べ24時間頑張ってやっと1台かよ!って気持ちになる。

  3. ディスクが思ってたより風通ってない CPUファンの風量がそんなにないのか、ディスクに風が当たっていないように思われる。次回は電源にあるファンを有効利用しようか?

  4. あと2台分orz ああああああああああ 以上!