げいるの脳内廃液処理場

管理人げいるの脳内で日々作り出された世迷い言、どーでも良いこと、個人的なメモとして使ってまいります。
一応ツッコミ機能などもムダに装備していたり。

ここに記載されていることは、かなりの勢いで個人的フィルタや個人的バイアスがかかっていますので、全てを鵜呑みにすると危険です。

※2005年1月1日〜2005年8月31日のデータは消えてしまいました。ごめんなさい。
※「最近更新してないなぁ…こいつ生きてるのか?」と思われた方はこちらのTwitterこちらのTwilogをご参照ください。

2006/11/14(Tue) [長年日記]

あー、OCNうぜぇ。

迷惑書き込み、土日とあって通報してたんだが、どっちもテンプレートで返してきやがる。しかも文中に「連続してあるようなら厳罰に処すので連絡を」とか言ってるんだが、2回でアウトじゃねーの?

で、それ信用して今日外したら3回目即座に来ました。全部蹴ったろか。

PXEをまとめてみる。

とりあえず、自分へのメモとしても、Partimageを使うためのPXEブートをまとめてみる。全部Debianな感じ。

  1. aptitude install atftpd syslinux dhcp3 nfs-kernel-server。
  2. DHCPを以下の設定で上げる。
    ## Standard DHCP Settings
    ddns-update-style none;
    authoritative;
    use-host-decl-names on;
     
    option domain-name "yourdomain.com";
    option domain-name-servers 10.63.254.10;
    option broadcast-address 10.63.254.255;
    option subnet-mask 255.255.255.0;
    default-lease-time 600;
    max-lease-time 7200;
    log-facility local7;
     
    server-name "yourhost";
     
    ## Configure PXE Linux booting rule space.
    option space pxelinux;
    option pxelinux.magic code 208 = string;
    option pxelinux.configfile code 209 = text;
    option pxelinux.pathprefix code 210 = text;
    option pxelinux.reboottime code 211 = unsigned integer 32;
     
    ## DHCP subnet
    subnet 10.63.254.0 netmask 255.255.255.0 {
    range 10.63.254.100 10.63.254.250;
    site-option-space "pxelinux";
    option pxelinux.magic f1:00:74:7e;
    option pxelinux.configfile "/tftpboot/pxelinux.cfg/default";
    option pxelinux.pathprefix "/tftpboot";
    option pxelinux.reboottime 30;
    option vendor-encapsulated-options 01:04:00:00:00:00;
    option root-path "10.63.254.10:/tftpboot/root";
    next-server 10.63.254.10;
    filename "/tftpboot/pxelinux.0";
    }
    PXE関係以外のパラメータは適当に。ここでは、next-serverがミソ。Intel純正だとTFTPでpxelinux.0を拾った後、そのままそのTFTPサーバを使うが、Broadcomではこれがないと0.0.0.0に接続しにいくので、明示しておく必要アリ。
  3. ルートに/tftpbootを掘って、その下に/usr/lib/syslinux/pxeboot.0をコピーしとく。
  4. /tftpboot下に1つフォルダを掘って、そこにdebootstrap環境を作る。これをnfsでexportsする。
  5. /tftpboot下にもう1つフォルダ"pxelinux.cfg"を掘り、その下に"default"というファイル名で以下の内容を。
    default linux
    label linux
    kernel vmlinuz
    append root=/dev/nsf nfsroot=10.63.254.10:/tftpboot/root ip=dhcp
    IPAPPEND 0
  6. /tftpboot/root(要はdebootstrap環境)にchroot。apt-get source linux-image-2.6.18-2-686とかしてカーネルソースを引っ張る。んで、initrd.img使わずに(ここは趣味の問題くさいが)、とりあえずカーネルにIP:Kernel level autoconfigurationをincludeして、IP:DHCPもinclude。Network File SystemでもNFSをinclude、さらにRoot file system on NFSをincludeで。その他必要そうなドライバをガンガンinclude。
  7. その後、kernel-packageで作ったdebファイルをchroot環境に突っ込む。んで、chrootのルートにvmlinuzをリンク。chroot環境抜けて、/tftpbootにも同様にvmlinuzリンク。
  8. chroot環境だと複数台がnfsで見に来るために/varとか/tmpとかが競合しそうなので、chroot環境のルートに/ramかなんか切って、tmpfsを当てる。雛形となる/var下のディレクトリは全部/var.roとかにして、起動時にtmpfsへコピーするように、
    mount -t tmpfs tmpfs /ram -o size=128m
    mkdir /ram/var/
    cp -a /var.ro/* /ram/var
    mkdir /ram/tmp/
    chmod 1777 /ram/tmp
    なんつーのをinit.dに作って、rc.Sかなんかにsymlink作っとく。(S34あたりにしてみた)

たぶん、こんな感じでいけるはず。無駄が若干ある気がするが。

一難去ってまた一難。

ここまでは案外すんなりいけた(のはウソ。Broadcom用にnext-serverをdhcpd.confに書くのを気づかず、tcpdumpとかで様子見てようやっと気づいた)。

で、本題のPartimageなんだが、どうもイメージ作成時にgzip圧縮で作ると、なぜかイメージが2GB以上膨らむと壁にぶつかるようだ。「Incorrect compression level」とか言って来た後、ササる。bzip2でやる方法もあるが、これだと「MBRの吸出しはできない」とKnown Bugsに載っている。てことは、無圧縮にするしかないのか…?

サイズ指定でイメージファイル分割ができる設定があるので、それを試していたのだが、今日は時間切れ。また明日。

11/15修正:エラーメッセージが間違ってた。正しくは「Invalid compression level」。

明日は朝から会議で直行〜。

のでもう寝ますよ。疲れた。


げいる <gale{at}studiotsc.com>