2002.7.17.
その1からの続きです。
さて。今度こそinitrdを作って起動してもらいたい。kazさんのメール <URL:http://www.momonga-linux.org/archive/Momonga-devel.ja/msg00122.html> を参考に作業を続行する。
momongaのCDから起動して、 まずはルートになるパーティションをマウントする。mknodはオプション少なく てもいいのかな?
mknod /dev/hdb5
いいみたい♪ちゃんと、b,3,69になってるよ。これをマウント。
mkdir /mnt/root mount /dev/hdb5 /mnt/root
fstabを作る。vi /mnt/root/etc/fstab で以下を入力。
/dev/hdb5 / ext2 defaults 0 0 none /proc proc defaults 0 0
initrdを作る
chroot /mnt/root /sbin/mkinitrd -v /boot/initrd-2.4.18-100m.img 2.4.18-100m
リブートの準備
umount /mnt/root
grubのフロッピーより、
grub> root (hd1,4) grub> kernel /boot/vmlinuz-2.4.18-100m root=/dev/hdb5 grub> initrd /boot/initrd-2.4.18-100m.img grub> boot
ちゃんと起動して、kduzuがハードウェアの設定を始めました。すげー。
それで、
rc: Starting postfix: failed
とはなるが、
localhost login:
むふふ。hdb5がちゃんとアンマウントされてませんしたと言ってfsckを始めるの は何故なんだろう?まだpingは通りませんでした。
rootでloginし、
# passwd # vi /etc/sysconfig/network
で以下を入力
NETWORKING=yes HOSTNAME=siroan.xxx.xxx.de GATEWAY=xxx.xxx.xxx.xxx
で、eth0を上げる。
# /etc/init.d/network start
/homeは以前のHEAD環境と共通のものを使う。
# vi /etc/fstab
で以下を追加。
/dev/hda3 /home ext2 defaults 0 0
とりあえずmount
# mount /home
一般ユーザーの追加。mountした/homeのユーザーIDと不整合がおこらないように、
# useradd -c 'momonga!' -u 501 zunda # passwd zunda
これで以前と同様の環境にログインできる。次はsshdだと思ったら…。 openssh-serverはインストールCDに入ってませんでした。これは入れた いなぁ。
不要なサービスの停止。
# chkconfig --list | grep on
して眺めてみる。要らないのは、netfs pcmcia autofsくらいか。 それぞれ、
# chkconfig --del サービス
postfixの設定。 /etc/postfix/aliasesで、#root: you を root: zunda に変更して、 /etc/hosts に以下を設定。
127.0.0.1 localhost.localdomain localhost xxx.xxx.xxx.xxx siroan.xxx.de siroan
んで、
# cp /etc/localtime /var/spool/postfix/etc/localtime # cp /etc/resolv.conf /var/spool/postfix/etc/resolv.conf # /etc/init.d/postfix restart
こんなんでいいのかな?
ホントはvisudoするんですけどね、前のHEAD環境のままでいいや。
# mkdir /mnt/tmp # mount /dev/hdb8 /mnt/tmp # cp /mnt/tmp/etc/sudoers /etc/sudoers # umount /mnt/tmp
一応 sudoers が正当なのを確認しておこう。
# visudo
だいじょうぶ。
…といいたいところだけど、前作っておいたのを取ってきちゃう。 前のとhost keyが違ってると面倒なことになるので、host keyは前のを持ってく る。
# mount /dev/hdb8 /mnt/tmp # mkdir /etc/ssh # cp -p /mnt/tmp/etc/ssh/ssh_host* /etc/ssh # umount /mnt/tmp # rmm -Uvh openssh-server-3.4-2k.i586.rpm # /etc/init.d/sshd start
これで他のホストからsshでログインできるようになる。
cvsが無いとspecファイルを取って来られません。
# rpm -Uvh cvs-1.11-2-6k.i586.rpm
# rpm -Uvh gcc-2.96-108k.i586.rpm cpp-2.96-108k.i586.rpm\ binutils-2.12.90.0.7.i586.rpm
結構足りないなぁ。
# rpm -Uvh rpm-devel-4.0.4-30m.i586.rpm
今回はGCC3の修行をするのだ。ここら辺からは、OmoiKondara-HOWTOにしたがう。 <URL:http://www.momonga-linux.org/docs/OmoiKondara-HOWTO/ja/>
% mkdir Momonga-GCC3 % cd Momonga-GCC3 % export CVS_RSH=ssh % export CVSROOT=:ext:hoge@cvs.momonga-linux.org:/home/cvs % cvs checkout tools % cvs checkout -r GCC3 pkgs/rpmrc % make -Ctools
きっとこれで、gccから作り直していくのがいいのだろう。 gccのオモコを始めて帰ろう。と思ったら…
% rpm --rcfile rpmrc -ba gcc.spec gcc.spec: No such file or directory
どーゆーこと?-bpとかでもだめです。
rpm.specはrpm -q --specfileでちゃんと読めるので、perrorの引数の間違いだ ろう。実際には何が読めていないのか?straceが使いたいのでHEADに戻って、
% cd ~/Momonga-GCC3/pkgs/gcc % strace rpm --rcfile rpmrc -bp gcc.spec 2>&1 | tee rpm.head.log
openに成功しているのは…
% grep open rpm.head.log | grep -v ENOENT | sed 's/open("//;s/",.*//' |\ sort -u
より、
/etc/group /etc/ld.so.cache /etc/localtime /etc/mtab /etc/nsswitch.conf /etc/passwd /home/zunda/.rpmmacros /home/zunda/Momonga-GCC3/pkgs/gcc/SOURCES/gcc-3.1-athlon-optimize.patch /home/zunda/Momonga-GCC3/pkgs/gcc/SOURCES/gcc-3.1-optimization.patch /home/zunda/Momonga-GCC3/pkgs/gcc/SOURCES/gcc-3.1.tar.gz /home/zunda/Momonga-GCC3/pkgs/gcc/SOURCES/gcc-paths.patch /home/zunda/Momonga-GCC3/pkgs/gcc/gcc.spec /home/zunda/Momonga-GCC3/pkgs/gcc/rpmmacros /lib/ld-linux.so.2 /lib/libc.so.6 /lib/libnss_files.so.2 /proc/meminfo /usr/lib/rpm/athlon-linux/macros /usr/lib/rpm/i586-linux/macros /usr/lib/rpm/macros /usr/lib/rpm/rpmpopt-4.0.4 /var/lib/rpm/Conflictname /var/lib/rpm/Name /var/lib/rpm/Packages /var/lib/rpm/Providename /var/tmp/rpm-tmp.49980 rpmrc
GCC3のルートをマウントして
# mount /dev/hdb5 /mnt/tmp % grep open rpm.head.log | grep -vE 'ENOENT|home|proc' | grep / |\ sed 's/open("/\/mnt\/tmp/;s/",.*//' | sort -u | xargs ls > /dev/null
rpm-tmp.49980以外は全部あるなぁ…。HEADにstrace入れるか。
HEADに行き、
% sudo rpm -Uvh strace-4.4-2k.i586.rpm % strace rpm --rcfile rpmrc -bp gcc.spec 2>&1 | tee rpm.gcc3.log
出ました。
execve("/usr/lib/rpm/rpmb", ["/usr/lib/rpm/rpmb", "-bp", "--rcfile", "rpmrc", "gcc.spec"], [/* 23 vars */]) = -1 ENOENT (No such file or directory) write(2, "gcc.spec: No such file or direct"..., 36) = 36
だそうです。…このエラーメッセージはソースのバグですな。
さて。rpmbというファイルはHEADでは出てなかったんですけどどういうわけだ? そうか、openしか見てなかったからだ。実際はexecveでエラー。このファイルは HEADではどうなっているか?
# mount /dev/hdb5 /mnt/tmp % rpm --root /mnt/tmp -qf /usr/lib/rpm/rpmb rpm-build-4.0.4-30m
はい。このパッケージが入ってないわけですな。
% sudo rpm -e strace % sudo rpm -Uvh i586/rpm-build-4.0.4-30m.i586.rpm \ noarch/perl-Archive-Tar-0.22-4k.noarch.rpm \ i586/perl-Compress-Zlib-1.16-2k.i586.rpm
おっけー。rpmは走るようになりました。
そのうちgrubにしなくちゃね。リブートして前のシステムを起動し、liloを設定。 今のところ、パーティション以外は前のシステムと一緒。これができるのも、 GCC3側でkernelを入れるまでだ。
rpm -qaの結果です。
Canna-library-3.5-0.0002062k MAKEDEV-3.3-2k SeaBows-3.6.1-50k SysVinit-2.84-2m acpid-1.0.1-4k apmd-3.0.2-4k ash-0.3.7-2k at-3.1.8-16k authconfig-4.2.8-5m autofs-3.1.7-10k basesystem-8.1-2k bash-2.05-34k bc-1.06-8k bdflush-1.5-16k binutils-2.12.90.0.7-4k busybox-momonga-0.60.2-2k bzip2-1.0.2-2k chkconfig-1.3.5-2k console-tools-19990829-46k cpio-2.4.2-30k cpp-2.96-108k cracklib-2.7-14k cracklib-dicts-2.7-14k crontabs-1.10-3m cvs-1.11.2-6k cyrus-sasl-1.5.27-10k db1-1.85-4k db2-2.4.14-12k db3-3.1.17-20k db4-4.0.14-7m dev-3.3-2k dhcpcd-1.3.22pl1-4k diffutils-2.8.1-4k dosfstools-2.7-2k e2fsprogs-1.27-6k ed-0.2-28k eject-2.0.12-4k expat-1.95.2-2k file-3.37-4k filesystem-2.1.6-14k fileutils-4.1-11m findutils-4.1.7-4k ftp-0.17-10k gawk-3.1.0-12k gcc-2.96-108k gdbm-1.8.0-18k gettext-0.10.40-13m glib-2.0.4-2k glib1-1.2.10-12k glibc-2.2.5-23m glibc-common-2.2.5-23m glibc-devel-2.2.5-23m gmp-4.0.1-3k gnupg-1.0.7-8k gpm-1.19.3-14k grep-2.5-2k groff-1.17.2-6k gzip-1.3.3-2k hdparm-4.9-2k hotplug-2002_04_01-4k hwdata-0.14-2k indexhtml-1.1-8k info-4.2-8k initscripts-6.67-4m iproute-2.4.7-4k iptables-1.2.6-6k iputils-20020124-2k jed-0.99.13-22k jed-common-0.99.13-22k jfsutils-1.0.20-2k kbdconfig-1.9.15-2k kernel-2.4.18-100m kernel-BOOT-2.4.18-100m kernel-headers-2.4.18-100m kernel-pcmcia-cs-3.1.34-4k kernel-smp-2.4.18-100m kernel-utils-2.4.18-100m keychain-1.9-2k kon2-0.3.9b-16k kon2-fonts-0.3.9b-16k kondara-backgrounds-2.1-4k kondara-logos-2.0-6k kondara-release-2.1-2k kudzu-0.99.52-3k less-358-12k libcap-1.10-8k libstdc++-2.96-108k libtermcap-2.0.8-34k libuser-0.50.2-6k libxml-1.8.17-4k lilo-22.3.2-2m logrotate-3.6.4-3m losetup-2.11k-2k lv-4.49.4-4k mailcap-2.1.9-2k mailx-8.1.1-22k make-3.79.1-14k man-1.5i2-10k mingetty-0.9.4-16k mkbootdisk-1.4.3-2k mkinitrd-3.3.10-2k mkkickstart-2.1-16k mktemp-1.4-4k modutils-2.4.16-2k momonga-0.5.8-2k mount-2.11k-2k mouseconfig-4.25-2k mph-0.12.13-1m ncftp-3.1.4-1m ncurses-5.2-18k ncurses4-5.0-10k net-tools-1.60-6k netconfig-0.8.11-4k newt-0.50.35-2k nfs-utils-0.3.3-8k ntsysv-1.3.5-2k open-1.4-12k openldap-2.0.25-2m openssh-3.4-2k openssh-clients-3.4-2k openssh-server-3.4-2k openssl-0.9.6d-4k pam-0.75-33m passwd-0.67-2k pciutils-2.1.10-2k pcre-3.9-2k perl-5.6.1-22k perl-FCGI-0.65-4k popt-1.6.4-30m portmap-4.0-28k postfix-1.1.11-2k procmail-3.22-3m procps-2.0.7-18k psmisc-20.2-2k pump-0.8.11-4k pwdb-0.61.2-2k python-2.2-16k python1-1.5.2-51m quota-3.05-2k raidtools-0.90-20k readline-4.1-22k reiserfsprogs-3.x.1b-2k rmt-0.4b27-2k rootfiles-7.2-2k rpm-4.0.4-30m rpm-devel-4.0.4-30m rsh-0.17-22k ruby-1.6.7-8k ruby-gettext-package-0.2.1-3m ruby-newt-0.3.4-4k ruby-rpm-1.1.1-2k sash-3.4-12k sed-3.02-20k setserial-2.17-2k setup-2.5.12-2k setuptool-1.8-4k sh-utils-2.0.11-10k shadow-utils-20000902-6k slang-1.4.5-4k slocate-2.6-2k stat-2.5-2k sudo-1.6.6-2k sysklogd-1.4.1-10k syslinux-1.67-6k tar-1.13.25-4k tcsh-6.11.02-4k termcap-11.0.1-2k textutils-2.0.21-2k time-1.7-20k timeconfig-3.2.7-2k tmpwatch-2.8.3-2k tojimari-0.0.1-6k traceroute-1.4a12-2k usbutils-0.9-6k usermode-1.53-2k utempter-0.5.2-8k util-linux-2.11n-6k vim-common-6.1-4k vim-minimal-6.1-4k vixie-cron-3.0.1-58k which-2.13-2k wireless-tools-23-2k xfsprogs-2.0.6-1m zlib-1.1.4-2k zsh-4.0.4-12k
んで、rpm-build関係を追加。
rpm-build-4.0.4-30m perl-Compress-Zlib-1.16-2k perl-Archive-Tar-0.22-4k