Google Code Prettify

2009年2月1日

NetBSD 4.0.1 の amd64 版の boot-big.fs はどこ?

最近、Debain/NetBSD/OpenBSD/FreeDOSの安定版のインストーラー(amd64版があればそいつを含んだ奴)を一つにまとめた DVD を欲しくて作ってみた。

grub2 は USB-CD/DVD のアクセス対応のコードがまだ天から降ってこないので、まだ isolinux を使う必要がある。(grub2のbsd系のブートコマンドは、まだ 64bit ELFをサポートしていないので、まだまだなんだがなぁ。。。)

Linux 以外では、floppy イメージをsyslinux の memdiskでエミュレートすることで、インストール作業ができる。ただし、floppy ディスクの交換までエミュレートできないので、一つにまとまったイメージが必要になる。

で、

NetBSD/amd64 4.0 には、boot-big.fs はあったのだが、4.0.1 では提供されていないぞっと。。。なんでかぁ

困ったなぁ

コイツらは普通につくれるのかぁ、、、、Linux システム上で!

小一時間考えて、作ってみた。

NetBSD 4.0.1 のバイナリファイル群を取ってくる。下のスクリプトのTOPDIRに指定して、スクリプトを走らせると。。。memdisk でブートできる boot-big.fs を出来る。。。

#!/bin/sh

TOPDIR=/path/to/NetBSD-4.0.1/amd64

BOOTBIGFS=${TOPDIR}/installation/floppy/boot-big.fs

[ -e $BOOTBIGFS ] && exit

#VOLSIZE=5760  # blocks

workdir=/tmp/work$$
mkdir $workdir
mkdir $workdir/USTAR

tar xfz ${TOPDIR}/binary/sets/base.tgz -C $workdir ./usr/mdec

cp $workdir/usr/mdec/boot $workdir/USTAR
cp $workdir/usr/mdec/bootxx_ustarfs $workdir
cp ${TOPDIR}/binary/kernel/netbsd-INSTALL.gz $workdir/USTAR/netbsd

if [ "x$VOLSIZE" = "x" ] ; then
	needblocks=`du -s -B512 $workdir/USTAR | awk '{print $1}'`
	VOLSIZE=`expr $needblocks + 20`
fi

OVOLSIZE=`printf "%o" $VOLSIZE`
touch $workdir/USTAR/USTAR.volsize.$OVOLSIZE
tar --posix -cf $workdir/USTAR.tgz -C $workdir/USTAR boot USTAR.volsize.$OVOLSIZE netbsd

dd if=$workdir/bootxx_ustarfs of=$workdir/boot-big.fs
dd if=$workdir/USTAR.tgz of=$workdir/boot-big.fs seek=16

cp $workdir/boot-big.fs $BOOTBIGFS

rm -rf $workdir

USTARFSは、initrd で cpio イメージを使うっぽい感じで tar を扱う奴らしい(ちょっと違うけど)。ボリュームのサイズは含まれる特殊なファイル名(USTAR.volsize.XXXX)で指定され、かつ8進数を使うのは、、、如何にも歴史を感じられるなぁ~

で、目的のDVDを無事ゲットできましたとさぁ。。。

まぁ、ついでに Ubunut 8.04.2 LTS Desktop/Server i386/amd64 も作ってもうたぁが、それは別の話。

CPANでインストールしたモジュールは?

Linux 上で Perl を使う場合、 自前ではビルドせずに大抵ディストロのパッケージ(rpm/deb)を使うのがほとんどである。 CPAN上のモジュールでも対応するディストロの方を使うのが、僕は好みである。 ディストロ側に対応するパッケージが無い場合は、仕方なく cpan コマンドを使ってインストールして使っている。

cpan -i モジュール名

cpan コマンドでインストールしたモジュールをアンインストールしたいとか思っても、いまいち方法が分からなかった。。。

「cpan help」 とかやると、よくわからん help モジュールがインストールされたり、「cpan list」とやっても、list モジュールが、、、以下略。

で、CPANを使うと運用状態が続くと /usr/local 以下が何故だか意味不明な状態になってしまう。

私だけだろうけど、、、どうしたもんだろうかなぁ。

cpanコマンドでインストールされたもののリスト

ExtUtils::Installed モジュールを組み合わせると取得できるようなので、次のようにスクリプトを組んでみた。

cpan-list

#!/usr/bin/perl

use ExtUtils::Installed;

$inst = ExtUtils::Installed->new();

for $module (sort $inst->modules()) {
	$version = $inst->version($module);
	print "$module $version\n";
}

どっかの御大ならば一行スクリプトに仕立てるんだろうけどねぇ。。。
そこまで Perl 臭が染み付いていないので、これでいいかなぁ。。。

実行例

# ./bin/cpan-list      
HTML::Perlinfo 1.54
Perl 5.8.8

cpanコマンドでインストールされたもののアンインストール

同様に ExtUtils::Installedとかを組み合わせると、アンインストールするスクリプトが作れる。

cpan-uninstall

#!/usr/bin/perl

use ExtUtils::Installed;
use ExtUtils::Install;

$module = $ARGV[0];

$inst = ExtUtils::Installed->new();
@modules = $inst->modules();

(grep $module,@modules) || die "$module is not install...";

uninstall($inst->packlist($module)->packlist_file());
print "uninstalled $module\n";

削除したいものを指定すれば削除できる。

実行例

# ./cpan-uninstall Module::Name
uninstalled Module::Name

まとめ

果たして、これで良いのか疑問に残るが、目的は達したので良いのかなぁ。。。
取り敢えず、ディストロとCPANの組み合わせは怖くなくなったぞぃと。

2008年11月29日

ReadyNAS Duo を購入

ファイルサーバを普通のPCで組み、常時起動して運用すると、月々の電気代がちょっと気になる。

今使っている PC+HDDx4 台の電力消費をワットチェッカで計測すると、ほぼ130W前後になる。コイツが、24時間通電してると、一日 約3kW/h で、約60円程度になる。年間約2万円くらい使ってる計算になる。

RAID0+1の構成が取れるHDDx4台は魅力的だが、、、長期的に見ればHDDx2台(RAID1)のNASに移行するべきですかぁね。。。

HDDx2(RAID1)のNASは、各社多様に製品が展開されている主戦場ですなぁ〜〜

HDDが交換が簡単で扱い易そうなものが良いので、「ReadyNAS Duo」のべアボーンタイプを選択してみた。


"ReadyNAS Duo ホームメディア・サーバー ペアボーンタイプ" (ネットギア)

搭載されているX-RAIDを使えば、容量が同じでない場合でも冗長構成を取れる。余っているSATA HDDとかは容量はまちまちな場合が多いので結構便利だと思う。

最初の初期化は何やらHDD上にファームを展開してるためなのか結構時間がかかる。焦らずに Web管理画面(FrontView) にアクセスできるまで気長に待つ必要がある。

add-onで種々の拡張ができるのも売りで、SSHアクセスやDebian由来のAPTが可能である。 apt が参照してるパッケージ群はベンダーのNETGEAR提供のものに加え、Debian/sarge のものが使える。

ただ sarge 自体はサポート終了してるので、apt-line を debian-archive の近いサイトに変更する必要がある。

deb http://www.readynas.com/packages readynas/

deb http://ftp.riken.jp/Linux/debian/debian-archive sarge main contrib non-free
deb http://ftp.riken.jp/Linux/debian/debian-non-US sarge/non-US main contrib non-free

今更な sarge かぁ。。。

また、NASには珍しく主メモリS.O.DIMMで提供されてより大きなものに交換ができ、より複雑なアプリでもを動かした場合も、結構スラッシングを抑えられる。

でもsargeベースなんだよなぁ。。。

普通にベンダーのファームを使い切るのがベストなんだと思うなぁ。

コイツに使われてる IT3017 は、どうも LEON とか言う Sparc v8 互換のCPUらしい、、、つまり、初めて所有する Sparc になりましたっす。。。 というか Sparc+aptの2点で買いだったのだが、、、

SSH でアクセス出来るので、ローカルでベンチを取ったところシーケンスIn/Outともに、普通のPCの半分以下程度だったっす。ベンチの計測中は、どうもPCに比べてCPUが回りすぎる気がする。

コイツのSATAのバスマスタ転送の実装がヘボイのか、今のx86系のChipsetが優秀すぎるのか、どっちだろう?

今後出てくるだろうATOM系のNASの性能が答えを出してくれるんだろうなぁ。というか、早く優秀なChipset積んで出てこいやぁ!!

まぁ ReadyNAS Duo はNASとしては買っても損はないが、もう少し凝ったことをやりたければ、debian/lenny がインストールできるQNAP NASGLAN Tankとかがお勧めだなぁ。

sarge 止まりなんだよなぁ。。。惜しいなぁ

久しぶりの投稿

かなり期間が空いてしまったが、ブログを再開してみようと思う。 2013年3月が直前の投稿だったが、頻繁に更新していた時期が 2011年11月までなので、8年間ぶりとなる。 8年間なにをしていたのかと言えば、2回転職して未だにIT技術者の職を得ている。 その...