pxe boot (散らばっていたのを集結 興味深い net install)

パピーを名犬にするための技、テクニック

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

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

pxe boot (散らばっていたのを集結 興味深い net install)

投稿記事 by hatahata »

pxe boot つまり networkから boot します。
従って usb , cd drive なくてもインストールできます。

特にpuppyの場合は ひょっとしたら HDDなしで走るパピーができるような気がします。
(というのは母艦の電源をおとしても そこにパピーは立っていました)


自分の限られた知識範囲では
pxe boot = dhcpd + tftpd と思ってます。

tahl やってみましたが、 今のところ PXE bootできません
改めて puppy_precise_5.7.1JP (これ no paeでしょう)の素晴らしさに思いを馳せます。
名前の preciseのとおり 実にきちんとつくられていて 日本人の仕事の 緻密な 正確さには圧倒されます。

平等院鳳凰堂、 春信の浮世絵などなど 
母艦は archlinux と openbsdです。

tftpdがブートするないようはarchlinux と openbsdで一緒です。
ls -l /tftp/
total 530484
-rw-r--r-- 1 root wheel 87 Aug 22 21:10 AUTORUN.INF
-rw-r--r-- 1 root wheel 15086 Aug 22 21:10 PUPPY.ICO
-rw-r--r-- 1 root wheel 9590 Aug 22 21:10 PUPPYJP.ICO
-rw-r--r-- 1 root wheel 3463 Aug 22 21:10 README.HTM
-rwxr--r-x 1 root wheel 4976 Aug 22 21:10 READMEJA.HTM
-r--r--r-- 1 root wheel 2048 Aug 22 21:10 boot.catalog
-rw-r--r-- 1 root wheel 6356992 Aug 22 21:10 goffice-precise_571.sfs
-rw-r--r-- 1 root wheel 220049 Aug 22 21:10 grldr
-rw-r--r-- 1 root wheel 1886180 Aug 22 21:10 initrd.gz 
-rw-r--r-- 1 root wheel 130727825 Aug 22 21:14 initrd.gz-big <ーーあとで作り方書きます 
                               initrd.gz-big= initrd.gz+puppy_precise_5.7.1JP.sfs
-rw-r--r-- 1 root wheel 116524 Aug 23 10:17 ldlinux.c32 <ーーーーーーーーーこれいるかな
-rw-r--r-- 1 root wheel 2005 Aug 22 21:10 menu-advanced.lst
-rw-r--r-- 1 root wheel 917 Aug 22 21:10 menu.lst
-rw-r--r-- 1 root wheel 128868384 Aug 22 21:11 puppy_precise_5.7.1JP.sfs
-rw-r--r-- 1 root wheel 15888  Aug 22 20:58 pxelinux.0 <ーーー42975のは苦しい
drwxr-xr-x 2 root wheel 512 Aug 22 20:58 pxelinux.cfg <ーーー
-rwxr-xr-x 1 root wheel 309400 Aug 22 21:11 splash.xpm
-rw-r--r-- 1 root wheel 2802256 Aug 22 21:11 vmlinuz <ーーー

cat /tftp/pxelinux.cfg/default (sがいったかもしれないので 面倒なのでdefaultsもつくってます)
default pup
label pup
kernel vmlinuz
append load initrd=initrd.gz-big



ほんとにいるのは 上の <ーーー部分だけです。



1)archlinux
dhcpdもtftpdも 安易にdnsmasqで立ち上げます。
(puppy でもできるのはずですが、 tftpをたちあげられる dnsmasq.pet の所在が不明

./comment-out.bat pxe-server.bat
ip link set enp9s0 up
ip addr add 192.168.11.1/24 dev enp9s0 <-----eth0 に 192.168.11.1/24 を割り当てただけ

echo 'nameserver 8.8.8.8' > /etc/resolv.conf
systemctl restart dnsmasq <ーーーーーーーdnsmasqを起動しただけ


./comment-out.bat /etc/dnsmasq.conf
interface=enp9s0  <ーーーーーーーーーーeth0なかんじ
bind-interfaces
dhcp-range=192.168.11.10,192.168.11.12,12h
resolv-file=/etc/dnsmasq.resolv.conf
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/tftp



./comment-out.bat /etc/dnsmasq.resolv.conf
nameserver 8.8.8.8



dnsmasq 起動

2)openbsd
a) dhcpd$ ./comment-out.bat /etc/dhcpd.intefaces
bge0

$ ./comment-out.bat /etc/dhcpd.conf
option domain-name-servers 8.8.8.8;
subnet 192.168.12.0 netmask 255.255.255.0 {
option routers 192.168.12.1;
filename "pxelinux.0";
range 192.168.12.10 192.168.12.15;
}


b)サーバー起動
/etc/rc.d/dhcpd -f restart
tftpd /tftp




X)initrd.gz-bigの作り方
簡単にLinuxでします。


ls /p571/
initrd.gz
puppy_precise_5.7.1JP.sfs
vmlinuz
として


# cd p571/
# mkdir tmp

# cd tmp

# zcat ../initrd.gz |cpio -i

# cp ../puppy_precise_5.7.1JP.sfs ./

# find . | cpio -o -H newc | gzip -9 > ../initrd.gz-big


で終わりです。
確認は

# cd ../
# 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
です。



後始末)
で これでネットブートで puppyがたちあがります。
ハードディクの土台のない浮草のようなパピーです。
でも fdisk で土台をほり ここをマウンドして 、そこへ cd して
母艦にsshdがうごいてるなら
sftp して /puppyフォルダに
vmlinuz
initrd.gz
puppy_precise_5.7.1JP.sfs
だけ連れてきた後、 根無し草puppyで grub4dosして ハードディスにブートローダーをいれたらおしまいです。


感じとして tahr が 上の方法ではブートできない。
そのPXEブートできない原因は ネットワークドライバあたりにあるのではと思います。
あるいは tahl 材料の initrd.gz-bigが大きすぎるからという意見もあろうかとおもいますが。

viewtopic.php?f=16&t=2738&p=20466&hilit=pxe#p20469
に sfsを unsquash していらないものをのけてサイズを小さくする試行を書いてます。
こうすればサイズ自体は小さくなりますが、トレイアンドエラーでちょっとしんどそう。


面白いのは openbsdでも archlinuxでも /tftpの内容は一緒です。

puppyでも fatdog64ではできてるようです。
tahr で tahl を PXEの釣り竿で 釣れたら おもしろいのですがねえ
最後に編集したユーザー hatahata [ 15/09/08(火) 11:17 ], 累計 7 回
hatahata
記事: 212
登録日時: 14/06/11(水) 11:49

Re: pxe boot (今迄 散在してたのを ここに集積しました)

投稿記事 by hatahata »

ハードディスクなしでも net boot で precise 571は
立ち上がってきます。
ただし 英語です。

幽体化してるので 日本語の魂をlang_pack_ja-1.9.sfsでロードします・
これで この文を打ってます。
夏に相応しい幽霊のお話でした。


これを応用すると 軒を貸して母屋をとられるはなしになります。
つまり A pcを pxeブートします。
すると precise571が立ち上がってきます。
fdiskします。
それから 母PC Bに sfrp して Debiandog.isoを getします。
rootで
mkdir k
mkdir live
mount -o loop Debiandog.iso k
cp -pR k/* live

そして grub4config

そして
menu.lstに

title DebianDog Jessie
root=(hd0,0)
kernel /live/vmlinuz1 noauto from=/ changes=/live/
initrd /live/initrd1.xz
すると、 再起動したら
precise571 はすてられ
debiandogが 立ち上がります。

でも ヨーク考えたら debiandogにはこんな芸ができません。多分。
で 捨てられた precise571 の方がエライ。


precise571の代わりに tinycoreでできるとおもいためしてみました。
確かにtinycoreを PXEブートできます。

-r--r--r-- 1 root root 6636580 Sep 14 17:38 core.gz ーーーーーinitrdに相当
-r--r--r-- 1 root root 3380112 Sep 14 17:38 vmlinuz

しかし、 ブートローダーをいれることが難しい。
で やはり precise571です。
precise571を立ち上げ sftpで 母艦のboot , tce を get -r すると
簡単にprecise571に加え  tinycoreインストできます。
で 今までの下仕事 tar rsync は  ctrl + alt +BSで Xを落とした後の tinycoreにさせる予定です。



とおもったのですが Poreusの Porteus-installer-for-Linux.comをつかうと
ブートローダがいれられます。


/mnt/sdb1は USBとして

ls /mnt/sdb1/boot/
Porteus-installer-for-Linux.com docs syslinux
Porteus-installer-for-Windows.exe extlinux


ls /mnt/sdb1/boot/syslinux/
boot.cat initrd.xz ldlinux.sys porteus.cfg-1 vesamenu.c32
chain.c32 isolinux.bin lilo.conf porteus.cfg-2 vmlinuz
core.gz isolinux.boot plpbt porteus.png
extlinux.conf isolinux.cfg porteus.cfg syslinux.cfg
赤字はtinycore



cat /mnt/sdb1/boot/syslinux/porteus.cfg
PROMPT 0
TIMEOUT 90
UI vesamenu.c32
DEFAULT text
MENU BACKGROUND porteus.png
MENU TITLE Porteus-3.1 32bit

MENU WIDTH 30
MENU MARGIN 2
MENU ROWS 10
MENU HELPMSGROW 17
MENU TIMEOUTROW 28
MENU TABMSGROW 15
MENU CMDLINEROW 22
MENU HSHIFT 4
MENU VSHIFT 5

LABEL TC
MENU LABEL TC
KERNEL vmlinuz
APPEND initrd=core.gz


です。
つまり Porteus-installer-for-Linux.com が grub4dosのようなブートローダーになります。
楽です。
となると これらのファイルを sftpでつれてきてたら tinycoreが PXEではいるのではないでしょうか。
そうすると あとはtinycoreが preciseでもなんでもご招待できますね。
返信する