〜2001年7月上旬〜
で、Plamo2.2に移行したのかというと実はまだで、
やっぱReiserFSにインストールしたいのだよ、うん。
まずは今の環境でReiserFSが使えるようにする。
kernelはPlamo 2.2にパッチがあたった2.2.19があるのでそれを使う。
mkreiserfsとかのツールは
http://www.namesys.com/
から
reiserfsprogs
を取ってきた。
まずはMOで実験だ。
% su # fdisk /dev/sda 全部sda1に割り当てる。 # mkreiserfs /dev/sda1 # mount -t reiserfs /dev/sda1 /mnt mount: wrong fs type, bad option, bad superblock on /dev/sda1, or too many mounted file systems
うーむ。なぜかだめだ。fsckしてみても別に悪いとこはなさそう。
# reiserfsck /dev/sda1 <-------------reiserfsck, 2001-------------> reiserfsprogs 3.x.0j could not setrlimit: Invalid argument Will read-only check consistency of the partition Will put log info to 'stderr' Do you want to run this program?[N/Yes] (note need to type Yes):Yes Analyzing journal..nothing to replay \ (no transactions older than last flushed one found) Fetching on-disk bitmap..done Checking S+tree..ok Comparing bitmaps..ok Checking Semantic tree...ok
setrlimitはまあ無視してもいいだろう。
しょうがない。まずはmkreiserfsのマニュアルを見てみよう
% man mkreiserfs No manual entry for mkreiserfs
なぬ?source treeにはちゃんと
mkreiserfs/mkreiserfs.8
はある。mkreiserfs/Makefileを見ると
prefix = / ... mandir = ${prefix}/man
となってる。これじゃ/manにインストールされちゃうねえ。
% ls /man/man8 debugreiserfs.8 mkreiserfs.8 reiserfsck.8 resize_reiserfs.8
とりあえず
% sudo make mandir=/usr/man install
してインストールしなおした。
man mkreiserfsしてみて気になるのは-vオプションだ。
-v 1 | 2 This specifies format new filsystem has to be of.
ofはoffだと思うが、ってことはdefaultはnewだな。 newは2.4.xでしか使えないと聞いたことがあるから、 -v 1が必要と見た。
# mkreiserfs -v 1 /dev/sda1 # mount -t reiserfs /dev/sda1 /mnt
なるほど。
あらかじめ/dev/hdbにReiserFSのファイルシステムを作っておけば、 Plamoをそこにインストールできるかも。README.EUCには
・Linux Kernel : PC 用では kernel 2.2.19 に ide patch と reiserfs patch を当てたカーネルを使っています.
とあるのでmountできるはず。
試してみたらインストール用のkernelはReiserFS対応じゃなくてだめ。 どうしよっかな。 kernelはここにあるしこれをセットアップディスクにコピーすればいけるか? configオプションが違いすぎて面倒だな。
どっちにしろ全然別のパーティションにインストールする予定だし、 今動いてるこの環境でsetupを動かせばいいんじゃないかと気づく。 いろんな設定ファイルもあるはずなので、 initrdをloopでmountしたらどうだろう? なんとなく書き換えられない気もするので内容をコピーしてchrootすることにした。
# mount -o loop initrd /mnt # mkdir plamo # cp -av /mnt/* plamo # umount /mnt # chroot plamo /bin/sh chroot: cannot execute /bin/sh: Exec format error
なぜに?
# file plamo/bin/sh plamo/bin/sh: Linux/i386 demand-paged executable (ZMAGIC), stripped
おお、a.outか。まさかそうくるとは。
# cp plamo/lib/libc.so.4* /lib # ldconfig # insmod binfmt_aout Using /lib/modules/2.2.19/fs/binfmt_aout.o # chroot plamo /bin/sh #
これで一応setupが動く環境になった。/etc/profileをsourceしておこう。
# . /etc/profile
あらかじめmountしておく。
# mount -t reiserfs /dev/hdb3 /mnt # mkdir /mnt/boot # mount /dev/hdb1 /mnt/boot
あとはふつうにsetupを起動してインストールする。
終わったら/etc/fstabを編集してext2をreiserfsに変更。
これやっとかないとmountできないから意味なし。
/bootをext2fsで別に用意してみたが、
grubは0.95からReiserFSをサポートしてるのでなくてもよかったかも。
/dev/hdb3は20GBほどある。これをext2にするのはちといやだよね。
とりあえずこれでちゃんと立ち上がるようになった。で/manはどうかというと
% ls /man/man8 debugreiserfs.8 mkreiserfs.8 reiserfsck.8 resize_reiserfs.8
やっぱそうか。
なかなか1.5.1が出ないらしいが、 と書いて調べたら 出てる し。 とりあえずBSD MAGAZINEについてきたNetBSD 1.5をインストールした。 あ、会社での話。マシンはVAIOのノートだ。 以前家のマシンにインストールしたのは1.3の頃だったかな?
同僚からCD-ROMドライブを借りてbootしてみると、 わりとあっけなく立ち上がる。 その後もさくさく進み、NetBSDも随分簡単になったなあと感心してたり。 が、実際にCD-ROMからファイルを取ってこようとするとこで、 なぜかCD-ROMドライブが見つからないというエラーになってしまう。 立ち上げ時もTOSHIBAなんちゃらってちゃんとメッセージが出てたのになあ。
面倒なのでi386ごとLinux上へコピー。ftpでインストールだ。 二度目はさらにさくさく進む。 sourceのとこでftpを選ぶとDHCPがどーのこーのと出てくる。 お、気が効いてるね。これでDNSもokさ。 それ以前にちゃんとNICが認識されてるじゃん。 調べるのも忘れてたが、使えてラッキー。
再起動してみるとWindows 2000が立ち上がってしまう。 途中でMBRにブートセレクタをインストールした気になっていたが、 調子に乗っていたらしい。CD-ROMでbootして
boot wd0a:netbsd
で立ち上がることを確認。 ま、ここまでくればGRUBでもいれればなんとでもなるだろう。
試しにmakeしてみようと思ったんだが、make depだけで12分以上かかってる。 どうもGCC 3.0が遅いんだかなんだかわからんが、
make dep CC=gcc-2.95.3
なら4分ぐらい。やっぱGCC 3.0は遅いのか?
それ以前にGCC 3.0でkernelをcompileするのはやばいに決まってるから、
素直にCC=gcc-2.95.3でmakeしよう。
Documentation/Changesを見ると未だにegcs 1.1.2を推奨してる。
GCC 2.95.xですら問題が起こるかもしんないとか脅してる。
実は/usr/bin/gccにちゃんと推奨GCCも残してあったりする。
% /usr/bin/gcc -v Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.91.66/specs gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release)
hdc5なんてわからん、ちゃんとroot=で指定しろとパニクられる。 うむむ。調べよう。ひょっとしてlableが使えるのか?
で、ブート問題はどうしたかというと NetBSD/i386 FAQ を見て、
# fdisk -i -c /usr/mdec/mbr_bootsel # fdisk -B
してブートメニューをインストールした。 で、こんな感じかと確認して、
# fdisk -if
でそれはやめて
# dd if=/dev/rwd0a of=nbsd0.bb count=1 bs=512
してnbsd0.bbをWindows 2000のC:/へコピーしboot.iniを編集した。 まったくもってFAQのままだ。
実にタイミングよく2.4.6が出る。そのままGCC 3.0でやってみよう。
make dep bzImage modules 5154.16s user 598.56s system 96% cpu \ 1:39:20.51 total
うむ。
6年程前、386SX 20MHzでLinux 1.1.59をmakeしたときに、
このくらいの時間がかかってた気が。
AXマシンを使ってたんだよねえ。
setup.Sをいじってkonを使わなくてもSJISは表示できるようにしてたり。
ディスクが40MBしかなかったら、konに使うフォントが惜しかった。
それはそれとして昨日の情けないエラーは
CONFIG_IDE is not set
が原因だ。をいをい。make oldconfigは勢いNにしがちだよね。 てゆかそこは以前と変わんないんだから聞いてこないで欲しいよ、切に。
/lib/modules/2.4.6/modules.depのサイズが0になってる。 modutilsが古いようだ。考えてみるとrequirementsを全然守ってないな。 既にmodutils 2.4.6をインストールしてしまったので、何が入っていたかは不明。 これでちゃんとloadできるだろう。
Linux 2.4.6はGCC 3.0でも大丈夫だね。例のmulti-line strings警告がうざいけど。 というわけで週末はReiserFS V2にしてPlamo 2.2をインストールだ。
間にもう一人いたのか。
Linux 2.4.6でPPxPを使いたければethertapを使う必要がある。 userlinkが2.4.xに対応してないからだ。 なんて書いているが、ほんとは今まで全然知らなかったんだよね、まったく。 っつーわけで
CONFIG_NETLINK=y CONFIG_NETLINK_DEV=m CONFIG_ETHERTAP=m
とした。CONFIG_NETLINKはmoduleにはできない。 あとは/etc/modules.confに
alias tap0 ethertap above ethertap netlink_dev
を追加すればいい。 ethertap用のデバイスファイルはすでにできてた。ないときは
# mknod /dev/tap0 c 36 16
で作る。
NetBSD メモリスティック vaioをキーにgoogleすると、 メモリスティックはUSB接続だと出てくる。 bsd-nomad MLにFreeBSD用のパッチがあるということもわかった。 で、 ここ にはBSD系のMLが集中してるので
NetBSD USB VAIO site:www.clave.gr.jp
をキーにしてgoogleすると [bsd-nomads:14224] が見つかった。dmesgには
uhci0 at pci0 dev 7 function 2: \ Intel 82371AB USB Host Controller (PIIX4) (rev. 0x01) pci_intr_map: no mapping for pin D uhci0: couldn't map interrupt
とあったのでまずは割り込みが割り当てられるように
options PCIBIOS options PCIBIOS_INTR_FIXUP
でreconfigしてみよう。正解だ。
umass0 at uhub1 port 1 configuration 1 interface 0 umass0: Sony USB Memory Stick Slot, rev 1.10/1.31, addr 3 umass0: using UFI over CBI-I
ちゃんと認識された。こんどはメモリスティックを差しといてから再起動。
scsibus0 at umass0: 2 targets, 1 luns per target scsibus0: waiting 2 seconds for devices to settle... sd0 at scsibus0 target 1 lun 0: <, , > SCSI0 0/direct fixed sd0: could not mode sense (4/5); using fictitious geometry sd0: 7920 KB, 7 cyl, 64 head, 32 sec, 512 bytes/sect x 15840 sectors
SCSIデバイスとして認識される。
# disklable /dev/sd0 | tail -5 8 partitions: # size offset fstype [fsize bsize cpg] d: 15840 0 unused 0 0 # (Cyl. 0 - 7*) e: 15783 25 MSDOS # (Cyl. 0*- 7*)
なので
# mount -t msdos /dev/sd0e /mnt
でマウントもok。
ついでにmtoolsもインストールしてみた。/etc/mtools.confに
drive m: file="/dev/sd0e" mtools_skip_check=1
を追加したらばっちり。
# mdir m: Volume in drive M has no label Volume Serial Number is 0000-0000 Directory for M:/ FOO 4 07-04-2001 8:27 1 file 4 bytes 8 052 736 bytes free # mtype m:/foo foo
抜くと
# mdir m: Can't open /dev/sd0e: Operation not supported by device Cannot initialize 'M:'
となる。
つぎは抜いたままで再起動して同じ実験。
# mdir m: Can't open /dev/sd0e: Device not configured Cannot initialize 'M:'
あ、だめだ。勝手に認識されないな。
いよいよ総入れ換えだよ。 /usr/localに入ってたものは全部makeしなおそうと思っているから、 GCC 3.0をbootstrapだ。って4時間半もかかったよ。 なにを入れたかというと
1. gcc 3.0 2. zsh 4.0.2 3. icewm 1.0.3 4. emacs 20.7 5. jvim.2.0 6. ppxp 991209 7. openssl 0.9.6 8. w3m 0.2.1 9. wwwoffle 2.6d 10. tcl 8.3.1 11. tk 8.3.1 12. ruby 1.6.4 2001-07-06 13. openssh 2.3.0p1 14. leafnode+-2.10 15. ltrace-0.3.10 16. dbskkd-cdb-0.52-BETA 17. skkinput 2.03 18. apel 10.2 19. limit 1.13.4 20. semi 1.13.7 21. skk 10.56
だ。手元にあるものを入れたので、ちと古いものもある。 あ、クロスの環境はまだなので、というかcvsも入れなきゃな。 それよりrsyncを入れなきゃこの日記が更新できないじゃん。 あしただな。
なぜかaic7xxxがうまいことロードされぬ。2.2.xでは/etc/modules.confに
alias scsi_hostadapter aic7xxx
と書いとけば勝手にロードされたんだけどなあ。 また、勢いでNにしたとこがあるのか? しょうがないから
% sudo modprobe aic7xxx
してからMOをmountしたり。
probeできないと立ち上げ時に必ずメモリスティックを差しておかないといけないわけで、 それはどうなんだ?使いづらいよね、やっぱ。FreeBSDなら
# camcontrol rescan da0
てな具合にできるらしい。
man -k scsiしてみたらscsictl(8)というコマンドが見つかる。 なんかいかにもという感じだ。man scsictlしてみると
# scsictl device scan target lun
とまさに探していたものだよ、こりゃ。さっそく実行すると
# scsictl sd0 scan any any scsictl: sd0: Device not configured
うむ。sd0は確かにまだないしそうだよね。 なにを指定すればいいんだ?dmesgをじっと見ると
scsibus0 at umass0: 2 targets, 1 luns per target scsibus0: waiting 2 seconds for devices to settle...
とある。/dev/scsibus0なんてほんとにあるのか?
# ls -l /dev/scsibus0 crw-r--r-- 1 root wheel 61, 0 Jul 3 04:14 /dev/scsibus0
あるね。ってことはこれか。
# scsictl scsibus0 scan any any sd0 at scsibus0 target 1 lun 0: <, , > SCSI0 0/direct fixed sd0: could not mode sense (4/5); using fictitious geometry sd0: 7920 KB, 7 cyl, 64 head, 32 sec, 512 bytes/sect x 15840 sectors
やったね。認識したじゃん。
1. texinfo 4.0 + EUC patch 2. grub CVS版 3. cvs 1.11.1p1 4. rsync 2.4.6 5. cvsup(コピーしただけ)
これでだいたい元の状態に復帰した。 ってクロスの環境がまだじゃん。 今週末にはPS2 LinuxKitも来るし、こっちに作ろうかな。
昨日カーネルをreconfigしなおしてそのままシャットダウンしたわけだが、 今日立ち上げてみたらmodprobeしなくてもokだ。結局
--- /usr/src/linux/.config.old Mon Jul 9 22:48:37 2001 +++ /usr/src/linux/.config Mon Jul 9 22:56:04 2001 @@ -311,4 +311,4 @@ # -CONFIG_SCSI=y -CONFIG_BLK_DEV_SD=y +CONFIG_SCSI=m +CONFIG_BLK_DEV_SD=m CONFIG_SD_EXTRA_DEVS=40 @@ -317,3 +317,3 @@ # CONFIG_BLK_DEV_SR is not set -# CONFIG_CHR_DEV_SG is not set +CONFIG_CHR_DEV_SG=m # CONFIG_SCSI_DEBUG_QUEUES is not set
のどれかが効いた模様。 CONFIG_SCSI=yなのにCONFIG_SCSI_AIC7XXX=mにしてるんだから、 そもそもそこが変だったんじゃない?
Subjectの件はこの際どうでもいいんだけど、rxvtの日本語パッチの情報がある。