mkinitrdは使わずに、mkinitramfsを使う
rocketraid 2322を使っているが、ドライバをコンパイルしてインストールする時にinitrdイメージを作りなおすが、そのinitrdで起動させると、devfs not mountedで/dev/console開けなくてKernel Panicを起こす。。。。
umount: devfs: not mounted pivot_root:No such file or directory /sbin/init: 432: cannot open dev/console: No such file Kernel panic - not syncing: Attempted to kill init!
非常に寂しい。 これなんだろうと探していたら、initrdimgを作るなら、mkinitrdを使うのではなく、mkinitramfsを使う事。(devfsが廃止された事に対応してる) という訳で、rocktraid のdriver のinstall.shをいじった。
対象のファイルは: rr232x-linux-src-v1.07/osm/linux/install.sh
書き換える箇所は
# diff -u install.sh.original install.sh
--- install.sh.original 2008-04-06 14:36:27.463394124 +0900
+++ install.sh 2008-04-06 14:38:08.188686133 +0900
@@ -53,9 +53,9 @@
-which mkinitrd 1> /dev/null 2> /dev/null
+which mkinitramfs 1> /dev/null 2> /dev/null
if test $? -ne 0 ; then
- echo "Can not find command 'mkinitrd'."
+ echo "Can not find command 'mkinitramfs'."
exit 1
fi
@@ -98,7 +98,7 @@
fi
- mkinitrd ${WITHSCSI} ${WITHSD} --with=${TARGETNAME} /boot/initrd-${MODVER}.img ${MODVER}
+ mkinitramfs ${WITHSCSI} ${WITHSD} --with=${TARGETNAME} /boot/initrd-${MODVER}.img ${MODVER}
fi
@@ -127,7 +127,7 @@
fi
- mkinitrd
+ mkinitramfs
else
echo "The compiled module is not for current kernel. /boot/initrd-`uname -r` is not updated."
fi
@@ -138,7 +138,7 @@
fi
- mkinitrd -o /boot/initrd.img-${MODVER} ${MODVER}
+ mkinitramfs -o /boot/initrd.img-${MODVER} ${MODVER}
fi
;;
turbo )
というわけで、このあたりを変更したところうまくブートするようになってくれた。 これ気をつけないとな。
<追記>
これやると、そもそもrr232x.koモジュールがinitrdに入らなくなった。。。。。orz この方法だと、rocketraidをrootファイルシステムにしているものについては、マウントできなくてそのままKernel Panicですねぇ。 まぁ、対策考えないとなぁ。
特殊文字入力メモ
vimなどで
| ^M | Ctrl+V,Enter |
| ^H | Ctrl+V,Backspace |
| ^? | Ctrl+V,Delete |
| ^[ | Ctrl+V,Esc |
"/etc/inittab"
/etc/inittab は次の書式
cc : runlevel : action : process
| cc | runlevel | action | process |
| エントリ識別子 | 実行する場合のランレベル | init(システムで動く一番親のプロセス)の動作 | 実行するコマンド |
actionには次の意味がある
| wait | 1度だけ起動し、プロセス終了まで待つ |
| respawn | プロセスを起動し、停止したい場合は再起動する(端末gettyに使用) |
| once | 一度だけ起動 |
| boot | 起動中のみ実行。各プロセスの終了は待たない |
| bootwait | 起動中のみ実行されるが、プロセスの終了を待つ |
| initdefault | デフォルト(指定しない場合の)ランレベルを設定 |
| sysinit | システムコンソールへのアクセスをする前に、何かを実行させたい時に使う(例えば、デバイスの初期化) |
| off | 何もしない |
| ctlaltdel | Ctrl+Alt+Delキーを受け取った時に実行 |
| kbrequest | 特定のキー入力が行われた時に実行 |
| powerfail | 電源異常が起きたときに実行されるが、プロセスの終了を待たない |
| powerwait | 電源異常が起こったときに実行 |
mount.cifsを使ってファイルアクセス
あー、もうsmbmountは時代遅れなんだ。
%sudo mount -t cifs
cifsなのね。
IPv6 MACAddressについてのメモ
janogに流れてたもの。そろそろIPv6もマジメに勉強しないとな。 IPv6 MAC Addressは枯渇するのか?
imapsync
imapsync imapサーバ間でデータを同期するツール。 imapではディレクトリをコピーしただけではうまくいかないようなので、これを使うのか。
cutコマンド
cutコマンドの使い方をいつも忘れるのでメモ
使うのは、ほとんどこれだけ
$sudo cut -f field-list[,field-lists] -d delimita filename -f 1 → 1番目のリスト -f 2 → 2番目のリスト -f 1,2 → 1番目と2番目のリスト -d → defaultはタブ -d " " → スペースがデリミタ -d : → コロンがデリミタ
FUSE(Filesystem in Userspace) sshfs
FUSEは便利だけども、vmware → ssh server だとやっぱり、遅いんだよね。 使い方はこちら
ちなみに、mtabには以下のような感じで表記される
$sudo vigr fuse:x:107:ryusendo $sudo sshfs hana.sakihoko.ru: /var/mnt $sudo cat /etc/mtab sshfs#hana.sakihoko.ru: /var/sshfsdir fuse rw,nosuid,nodev,max_read=65536,user=ryusendo 0 0 # $sudo fusermount -u /var/sshfsdir
FUSEモジュールがないといけないけども、
$sudo ls -ald /lib/modules/`uname -r`/kernel/fs/fuse $sudo ls /lib/modules/`uname -r`/kernel/fs/fuse/fuse.ko
が存在している事を確認すること
Shuttle SD32G2 BIOS アップデート
SD32G2のBIOSアップデートを実行することにした
アップデートは、DOS経由で以下のURLを元にすれば良さそう。
問題はいつやるかだ。
やる動機はこれ。 Shuttle SD32G2でdebianがインストールできない
暫定対応として、BIOSを
- Normal (Load Optimizedを使わない)
- Serial ATA Only にする
- initrdを使わず、カーネル組み込みにしてOSを立ち上げる
にしていたが、さすがに限界。 software raid使いたいし。
ダウンロードサイトはここ
Func
puppet以外のもう1つのシステム管理ツール。yumを通じてサーバファームへコマンドを実行したり、パッケージを導入したりすることができる。
$sudo func "*.example.org" call yum install drecompackages
すばらしい。 ただ1つ、残念なのが、fedora,redhatのみサポートということだ。
ちなみに、OpenTechPressでの記事はこんな感じの紹介