pxe を利用して net boot してpuppy のインストール

自己紹介とか、なんでもいいです。
にぎやかに世間話のできる場所

モデレータ: 暇人, YoN, nyu

返信する
hatahata
記事: 212
登録日時: 14/06/11(水) 11:49

pxe を利用して net boot してpuppy のインストール

投稿記事 by hatahata »

hatahataです。


dhcpd , tftpdだけでの解決が
https://docs.google.com/document/d/1aM_ ... l=en&pli=1
にありました。

# cd p571/
# ls p571/
initrd.gz vmlinuz puppy_precise_5.7.1JP.sfs
# mkdir tmp
# cd tmp
# zcat ../initrd.gz |cpio -i
# ls
DISTRO_SPECS bin etc lib proc pup_ro1 pup_ro3 pup_ro5 pup_ro7 pup_ro9 pup_z sys var
README.txt dev init mnt pup_new pup_ro2 pup_ro4 pup_ro6 pup_ro8 pup_rw sbin tmp
(ここに注目してください。 あとで引用していきます)

# cp ../puppy_precise_5.7.1JP.sfs ./
# find . | cpio -o -H newc | gzip -9 > ../initrd.gz-big
# cd ../
# pwd
/mnt/home/p571
# ls -l

-rw-r--r-- 1 root root 1886180 9月 24 03:14 initrd.gz
-rw-r--r-- 1 root root 130736064 9月 26 10:16 initrd.gz-big
-rw-r--r-- 1 root root 2802256 9月 24 03:14 vmlinuz

さて
zcat ../initrd.gz |cpio -i したときに

# ls tmp/
DISTRO_SPECS bin etc lib proc pup_ro1 pup_ro3 pup_ro5 pup_ro7 pup_ro9 pup_z sbin tmp
README.txt dev init mnt pup_new pup_ro2 pup_ro4 pup_ro6 pup_ro8 pup_rw puppy_precise_5.7.1JP.sfs sys var
ができます。

# file puppy_precise_5.7.1JP.sfs
puppy_precise_5.7.1JP.sfs: Squashfs filesystem, little endian, version 4.0, 32877425919 bytes, 21034 inodes, blocksize: 7 bytes, created: Fri Jul 30 11:05:52 1926
なので 

# unsquashfs puppy_precise_5.7.1JP.sfs
すると
squashfs-root
ができ
# ls squashfs-root/
bin dev etc lib mnt opt proc root run sbin selinux tmp usr var
です。

自分は 理論は苦手なので 、 一つずつ 実証実験をして確かめるしかないです。
で実際にのけてみた後
# cd /mnt/home/p571/tmp-p/
# mksquashfs /mnt/home/p571/tmp-p/squashfs-root/ puppy_precise_5.7.1JP.sfsーsmall   -comp xz
した後

# ls -l
total 281104
-rw-r--r-- 1 root root 128868384 9月 26 11:01 puppy_precise_5.7.1JP.sfs
-rw-r--r-- 1 root root 158973952 9月 26 12:05 puppy_precise_5.7.1JP.sfsーsmall
drwxr-xr-x 15 root root 4096 12月 18 2013 squashfs-root
すると
ファイルを削ってやったのに逆に大きくなりました。
最後に編集したユーザー hatahata [ 14/10/03(金) 15:41 ], 累計 3 回
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 小さな initrd.gz + puppy_precise_5.7.1JP.sfs を作りたい

投稿記事 by シノバー »

目的をもういちど整理すると、Floppy起動もCD起動もできない、USBメモリからも起動できないいPCにネットブート(PXE boot)でパピー(Puppy Linux)をインストールしたいということですね。

母艦、PXEサーバーに何を使うかがまず問題です。
https://docs.google.com/document/d/1aM_ ... l=en&pli=1
この記事は母艦PXEサーバーとして Fatdog64 を使っています。ここで提供されている dnsmasqは64bitなので、他のパピーでは動きません。
母艦として 571JPを使うならば、パッケージマネージャから dnsmasq を検索し、precise main にある dnsmasq-base を依存パッケージとしてインストールすれば、Fatdog64の記事で公開されている netboot-server のスクリプトはそのまま使えそうです。

hatahata さんの場合、PXEサーバーとして BSD の dhcpd、tftpd を使い、intrd にメインSFS(puppy_precise_5.7.1JP.sfs)を組み込む方法でPXEブートに成功してるのですね?日本語にならないというのは、どこか間違いがありそうですが。

でも、ともかくもいったんいずれかのパピーが立ち上がったら、あとはネットから目的の .iso ファイルをダウンロードし、インストール作業はできると思います。

いまの大きさでPXEブートが成功しているのなら、小さくしたい目的は何でしょう?
パピーはもともとコンパクトにまとめられています。パピーリナックス日本語版ではオフィス関係のアプリはメインSFSとは別に goffice SFSにまとめられており、これを除けば少し(6MB)小さくなります。
The bar master, Shino's Bar
http://shinobar.net/
hatahata
記事: 212
登録日時: 14/06/11(水) 11:49

Re: pxe を利用して net boot してpuppy のインストール

投稿記事 by hatahata »

hatahataです。

Floppy起動もCD起動もできない、USBメモリからも起動できないいPCにネットブート(PXE boot)でパピー(Puppy Linux)をインストールしたいでした。
これは通常は使わないのですが、 他のPCにOSをインストールする再に ssh client で使ってます。

dnsmasqは64bit、きがつきませんでした。
puppy を母艦にして PXEサーバーが立ち上がると愉快ですね。

はい、SFS(puppy_precise_5.7.1JP.sfs)を組み込む方法でPXEブートに成功してます。

母艦のPXEブートのフォルダには
-rw-r--r-- 1 root wheel 137087813 Sep 23 18:46 initrd.gz-big
-rwxr-xr-x 1 root wheel 26474 Jan 1 1970 pxelinux.0
drwxrwxrwx 2 root wheel 4096 Jan 1 1970 pxelinux.cfg
-rw-r--r-- 1 root wheel 2802256 Sep 23 18:46 vmlinuz
しかおいてません。

しかし 最初は日本語モードにならず、 SFSのLANGはいりませんが、 menu -> 国別の設定をして初めて 日本語モードになります。
ここが少々面倒くさい。


いまの大きさでPXEブートが成功しているのに、小さくしたい目的は将来 puppyが肥大化したときを 杞憂しただけでした。
puppy_precise_5.7.1JP.sfsが nfsdで供給できれば、 initrd.gz-big など使わずにすみますが、 PXE不案内で トライ&エラーだけではなんともなりません(ltspは /opt 以下をnfsdで押し出してると 自分は解釈してます)。

今後とも アドバイスお願いします。

いつも 「raditalでそこまで言うかを聞いたり」 「youtubeで視聴」は いつも 32G USB(puppy+ubuntu+BSD) のpuppyでして
このUSBの バックアップを
echo ' input date ------------- '
read x
dd bs=32786k if=/dev/sdb | gzip -c > USB-$x.gz
でしてます。
これで何回か助けられましたが、 バックアップに50分くらいかかるのが欠点です。
最後に編集したユーザー hatahata [ 14/10/03(金) 15:45 ], 累計 4 回
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Re: 初期状態で日本語にならない

投稿記事 by シノバー »

hatahata さんが書きました:しかし 最初は日本語モードにならず、 SFSのLANGはいりませんが、 menu -> 国別の設定をして初めて 日本語モードになります。
オリジナルの puppy_precise_5.7.1JP.sfs から改変していませんか?
Rematerpup2 を通すと国設定などが変わることがあります。
もしリマスターしたいならば Remaster Express をお勧めします。
viewtopic.php?f=30&t=2426
The bar master, Shino's Bar
http://shinobar.net/
hatahata
記事: 212
登録日時: 14/06/11(水) 11:49

Re: pxe を利用して net boot してpuppy のインストール

投稿記事 by hatahata »

hatahataです。

改変はまったくしてません。
お返事を見る度にご苦労に思いをはせます。
最後に編集したユーザー hatahata [ 14/10/03(金) 15:37 ], 累計 1 回
hatahata
記事: 212
登録日時: 14/06/11(水) 11:49

Re:pxe を利用して net boot してpuppy のインストール

投稿記事 by hatahata »

hatahataです。

slackoでBSDでやってみました(unsquashはBSDにはないので これはpuppyでしました)。

最初 FATをマウントしてここですると、
cpio: Could not create: bin/rmmod: Operation not supported
なメッセージが出たので、
BSDファイルシステムにコピーしてしました。

まったく同じ手法ですので 簡略に記します。
# zcat ../initrd.gz | cpio -i
そして
# cp ../puppy_slacko_5.7.sfs ./
# cp ../lang_pack_ja-1.9.sfs ./
して
find . | cpio -o -H sv4cpio | gzip -9 > ../initrd.gz-big (BSD故です)
しました(initd + puppy_slacko + lang_pack_ja )。
すると

-rwxr-xr-x 1 root tuyosi 184444122 Sep 28 17:10 initrd.gz-big
とずいぶんな大きさの initrd.gz-bigができました。
これでも net pxe boot ができました。
ただ  lang_pack_ja-1.9.sfsが どこに消えたのか SFS loadのところにも でてきません。
それで 外部からロードしないといけません。
だから 571JPの方が日本語には便利です。

なおlang_pack_ja-1.9.sfsをのけると
-rw-r--r-- 1 root tuyosi 164830041 Sep 28 17:54 initrd.gz-big
とちいさくなるます。
でも571JPの方がより小さいですね(130736064 9月 26 10:16 initrd.gz-big) 。
すると少なくとも 180MBのは 押し出すことができます。
すると 変にファイルを削除する必要はなくなりした。


-------------------------------------------------------------------------------------------
以後 は precise_5.7.1JP に戻ります

unsquashfs puppy_precise_5.7.1JP.sfsをして
squashfs-rootの usr/share/i18n/dialog_table_x を
ja_JP と en_US行だけの2行にします(上の行にja_JP)。
 (ja_JPだけではうまくいきません)。
すると ja_JP Afar、tokyo、jp-106 キーになります。
なお dialog_table_xは find を駆使して見つけました。
付言ですが、
zcat ../initrd.gz |cpio -i したときに DISTRO_SPECS ができますが、 これいらないと思って消すと立ち上がらなくなりますのでご注意 。

上を詳しく書くと以下になります。puppyの上でもできますが、記事はデビアンでしてます。
si@debian64:~$ su
パスワード:

ls /p571/
AUTORUN.INF README.HTM goffice-precise_571.sfs vmlinuz
PUPPY.ICO READMEJA.HTM grldr menu-advanced.lst puppy_precise_5.7.1JP.sfs tmp
PUPPYJP.ICO boot.catalog initrd.gz menu.lst splash.xpm

root@debian64:/home/tuyosi# cd /p571/



root@debian64:/p571# mkdir tmp
root@debian64:/p571# mkdir sq

root@debian64:/p571# cd sq
root@debian64:/p571/sq# cp ../puppy_precise_5.7.1JP.sfs ./
root@debian64:/p571/sq# unsquashfs puppy_precise_5.7.1JP.sfs
root@debian64:/p571/sq# ls
puppy_precise_5.7.1JP.sfs squashfs-root
root@debian64:/p571/sq# cd squashfs-root/

root@debian64:/p571/sq/squashfs-root# cat usr/share/i18n/dialog_table_x | grep JP >k
root@debian64:/p571/sq/squashfs-root# cat usr/share/i18n/dialog_table_x | grep en_US >>k
root@debian64:/p571/sq/squashfs-root# cat k
ja_JP "Japanese, Japan" on
en_US "English, USA" off
root@debian64:/p571/sq/squashfs-root# mv k usr/share/i18n/dialog_table_x
root@debian64:/p571/sq/squashfs-root# cat usr/share/i18n/dialog_table_x
ja_JP "Japanese, Japan" on
en_US "English, USA" off

root@debian64:/p571/sq/squashfs-root# cd ../
root@debian64:/p571/sq# ls
puppy_precise_5.7.1JP.sfs squashfs-root

/sq# mksquashfs   squashfs-root/  puppy_precise_5.7.1JP.sfs-1


root@debian64:/p571/sq#mv puppy_precise_5.7.1JP.sfs-1 ../tmp
root@debian64:/p571/sq#cd ../tmp
root@debian64:/p571/tmp# zcat ../initrd.gz | cpio -i
root@debian64:/p571/tmp# ls
DISTRO_SPECS bin etc lib proc pup_ro1 pup_ro3 pup_ro5 pup_ro7 pup_ro9 pup_z sbin tmp
README.txt dev init mnt pup_new pup_ro2 pup_ro4 pup_ro6 pup_ro8 pup_rw puppy_precise_5.7.1JP.sfs-1 sys var

root@debian64:/p571/tmp# mv puppy_precise_5.7.1JP.sfs-1 puppy_precise_5.7.1JP.sfs

root@debian64:/p571/tmp# find .| cpio -o -H newc | gzip -9 > ../initrd.gz-big
root@debian64:/p571/tmp# cd ../
root@debian64:/p571# ls -l
合計 362192
-rw-r--r-- 1 root root 87 9月 24 03:14 AUTORUN.INF
-rw-r--r-- 1 root root 15086 9月 24 03:14 PUPPY.ICO
-rw-r--r-- 1 root root 9590 9月 24 03:14 PUPPYJP.ICO
-rw-r--r-- 1 root root 3463 9月 24 03:14 README.HTM
-rwxr--r-x 1 root root 4976 9月 24 03:14 READMEJA.HTM
-r--r--r-- 1 root root 2048 9月 24 03:14 boot.catalog
-rw-r--r-- 1 root root 6356992 9月 24 03:14 goffice-precise_571.sfs
-rw-r--r-- 1 root root 220049 9月 24 03:14 grldr
-rw-r--r-- 1 root root 1886180 9月 24 03:14 initrd.gz
-rw-r--r-- 1 root root 161812870 10月 3 21:27 initrd.gz-big <-------
-rw-r--r-- 1 root root 2005 9月 24 03:14 menu-advanced.lst
-rw-r--r-- 1 root root 917 9月 24 03:14 menu.lst
-rw-r--r-- 1 root root 536870912 9月 27 03:31 precisesave.4fs
-rw-r--r-- 1 root root 128868384 9月 24 03:14 puppy_precise_5.7.1JP.sfs
-rwxr-xr-x 1 root root 309400 9月 24 03:14 splash.xpm
drwxr-xr-x 3 root root 4096 10月 3 21:19 sq
drwxr-xr-x 24 root root 4096 10月 3 21:26 tmp
drwxr-xr-x 3 root root 4096 9月 26 12:05 tmp-p
-rw-r--r-- 1 root root 2802256 9月 24 03:14 vmlinuz<---------------

cat /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

なら
/srv/tftpに
pxelinux0
pexlinux.cfg
initrd.gz-big <-------
vmlinuz<--------------
があればいいです。



puppy は当たり前ですが 母艦の電源を音してもうごきつづけます。
ここがltsp thin clientとは違います。
また 母艦への負荷も小さい(たぶん母艦はtftpでファイルをおくりだすだけかな?)。

=====================================
準備ができましたので pxe を利用して net boot してpuppy のインストールに入ります。


デビアンPC1がPXEサーバーです。
PC2をネットワークブートします。
すると precise_5.7.1JPの画面が PC2でたちあがってきます。
PC2で fdisk -> mkfs.ext4 -> mount /dev/sda1 /mnt

そして mkdir /mnt/p571 (ここに必要ファイルをPC1から連れてくる予定)
cd /mnt/p571

PC1には openssh サーバーをいれてるので PC2で
sftp 192.168.12.201(PC1のアドレス) して
PC1のrootのパスワードをいれると
これでPC1とつながります。
ここで lsをとると PC1の /root フォルダが見れます。
だから cd ../
すると PC1が丸見えになります。
PC1は /PC1-p571に全ファイルがあるので
cd  /PC1-p571
あとは 
get vmlinuz
get initrd.gz
get puppy_precise_5.7.1JP.sfs
で PC2の /p571フォルダに必要なファイルがすべてはいります (3M/sで落ちてきます)。

ここからあとはしてないのですが、おそらくPC2で grub4dos で /dev/sdaをえらべば
networkを利用した puppyのインストールが終了すると思います。
返信する