目次

ISO imageのmount

s10dvdのinstallサーバを作るということで、DVD imageを入手したのだが、 構築手順が久しぶりすぎてわからんということで。

DVD ISO imageのmount

Solaris9からあるlofiadm(1M)を使って、/dev/lofi/ の下の pseudoデバイスとして、一度登録?して、その後、hsfs(ISO 9660 CD-ROM imageの ためのfs)としてmountすれば iso imageがファイルシステム上、access可能になる。
操作手順はこんな感じ。

mount手順

lofiadmの引数にする対象のファイルのパスは full pathじゃないとエラーになるので、`pwd`/[ファイル名]とかで。
mountはman pageの例にあわせて roにしてみた。

# lofiadm -a [対象のファイル]
/dev/lofi/1
# mount -F hsfs -o ro /dev/lofi/1 [マウントする場所]
lofi登録確認

lofiドライバ経由で見ることが出来るようになったかを確認するには 引数無しで、lofiadmをたたけばok

# lofiadm
Block Device             File
/dev/lofi/1              [対象のファイルのfull path]
umount手順

umount後に、lofiadm -dでok

# umount [マウントした場所]
# lofiadm -d /dev/lofi/1 <- lofiadmでlofi対象になったデバイスがこれと仮定

install pkgの展開

以下、isoイメージをマウントしたディレクトリ名を、s10 としておく。
s10/Solaris_10/Tools/setup_install_serverスクリプトで、installサーバの 準備をする。
# cd s10/Solaris_10/Tools
# ./setup_install_server [dst dir]
後は、延々と待ち。orz

tftpbootとかのための準備

tftpbootのために、installしたいクライアントのMACアドレスは /etc/ethersに登録しておくように。
その後、s10/Solaris_10/Tools/add_install_clientスクリプトを実行すると、 tftpbootのための設定と、rarpを受けるためのサーバがあがる。
最後にinstallする箱で、boot netしてからは省略(*1)。
(*1) 既知かもシレンが、一応蛇足。
  tftpbootするために出すRARPはL2用なので、installする箱とinstallサーバが
  同じセグメントじゃないと、installする箱はいつまでたってもRARP投げてます。
  離れてるなら、同じ場所にbootサーバを別途用意する必要があるので、
  その場合は、もう一手間、setup_install_serverの -b optionで、bootサーバを
  用意する必要があったりします。

CD ISO Imageの場合

SunSolve? 50566に書いてあるそうですが、CD ISO imageをダウンロードした場合、 setup_install_serverの対象となるboot imageはcdのサイズ削減のために 同梱されていません。(つまり、DVD imageにはあるということです。orz)

なので、boot imageはbootable CDになっているv1のisoから抜いて作る必要があります。 とりあえず今からimageをダウンロードする場合は、DVD ISOにしておくことを強く推奨します。w

ここではCD ISO imageをダウンロードしてしまった残念な貴方のために、bootable cd ISO imageから、boot imageを作成する手順を記載します。

vtoc(Volume Table of Contents)を調べる

bootable CDはスライスが切ってあって、s1にboot imageが格納されてます。なので、まず s1の場所を特定するために、vtocを抜きます。
 # dd if=sol-xx-ux-ga-sparc-v1.iso of=vtoc bs=512 count=1
で、vtocからs1の場所を探ります。
 # od -D -j 452 -N 8 < vtoc
 0000000 0000000xxx 0000yyyyyy
 0000010 
上記の出力から、s1はシリンダxxxから始まり、yyyyyyブロックであると分かりました。Solaris CDは1cyl 640blkなので、
 # echo xxx*640
 zzzzzz
s1はblk zzzzzzから始まり、使っているblk数がyyyyyyであると分かりました。 ということで必要な箇所だけ、ddで抜き出します。
 # dd if=sol-xx-ux-ga-sparc-v1.iso of=sol-xx-ux-ga-sparc-v1-s1.iso \
 bs=512 skip=zzzzzz count=yyyyyy
ここで作った sol-xx-ux-ga-sparc-v1-s1.isoがboot imageのためのisoファイルになります。ちなみに中身はufsです。

マウントしてsetup_install_server

ここまできたら、あとはsetup_install_serverを打つ準備をするだけです。 2個(v1とv1-s1)のisoをlofiadm(1M)でpseudo deviceを用意し、
 # lofiadm -a sol-xx-ux-ga-sparc-v1.iso
 /dev/lofi/1
 # lofiadm -a sol-xx-ux-ga-sparc-v1-s1.iso
 /dev/lofi/2
それぞれマウントします。
 # mount -F hsfs -o ro /dev/lofi/1 /cd/s0
 # mount -F ufs -o ro /dev/lofi/2 /cd/s1
これで、boot imageが /cd/s1に用意できたので、
 # /cd/s0/Solaris_10/Tools/setup_install_server -t /cd/s1 [copy先]
で、残りのcdは適当にどうぞ。

BPARAM C WHOAMI?

http://malpaso.ru/solaris-jumpstart-bug/

バグじゃなく仕様だそうですが。。。orz

現象

下記の通り、いい感じに死んじゃいます。
installする際のサブネットが 8bitの整数倍maskじゃないとこうなるかも。。。 (状況再現しないので、ログが適切じゃない可能性が高いです。on 2006-10-18)
{0} ok boot net
Boot device: /pci@1f,4000/network@1,1  File and args:
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
Timeout waiting for ARP/RARP packet
38800
Requesting Internet address for 8:0:20:c4:33:d4
SunOS Release 5.10 Version Generic_118833-17 64-bit
Copyright 1983-2005 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
whoami: no domain name

この先のログはとれてません。。。

上記のケースは netmaskが 0xfffff800 (21)になっていました。

対応

installサーバの [boot img]/Solaris_x/Tools/Boot ディレクトリ(net bootする際の mini root用img)の tmp/root/etc/inet/netmasksを適当に書いてやる必要が在ります。

Last-modified: 2008-02-08 15:07:54