Gentoo LinuxをPXEブート
Gentoo Linuxって他のディストリビューションと違ってPXEのイメージが配布されてないんですよね。だからGoogleさんに聞いてみたら。やはりやっている人がいました。install-minimal-${ARCH}-date.isoをPXE出来るようにするスクリプトを書いている人が、ただ更新が速いGentooなので既に動かなくなっていたので修正してみました。
以下がコードになります。
gentoo-pxe-convert.sh
#!/bin/bash
# automates the procedure outlined at: http://blog.dastrup.com/?p=12
MOUNT=$1
OUT=$2
if [ x$MOUNT == "x" -o x$OUT == "x" ]; then
echo usage: $0 [MOUNT] [OUT]
exit 1
fi
echo converting gentoo iso mounted at $MOUNT into PXE-bootable stuff at $OUT
mkdir -p $OUT
cp $MOUNT/isolinux/gentoo $OUT/
cp $MOUNT/isolinux/gentoo.igz $OUT/
cp $MOUNT/image.squashfs $OUT/
mkdir -p $OUT/work
pushd $OUT/work > /dev/null 2>&1
echo decompressing initrd
xz -d -c ../gentoo.igz | cpio -idv > /dev/null 2>&1
mkdir -p mnt/cdrom
mv ../image.squashfs mnt/cdrom/
patch -p0 --ignore-whitespace <<'EOF'
--- init.orig 2016-01-31 07:22:56.619082092 +0900
+++ init 2016-01-31 07:28:40.100068255 +0900
@@ -455,10 +455,6 @@
CHROOT=${NEW_ROOT}
fi
- if [ /dev/nfs != "$REAL_ROOT" ] && [ sgimips != "$LOOPTYPE" ] && [ 1 != "$aufs" ]; then
- bootstrapCD
- fi
-
if [ "${REAL_ROOT}" = '' ]
then
warn_msg "No bootable medium found. Waiting for new devices..."
@@ -591,7 +587,7 @@
else
bad_msg "Block device ${REAL_ROOT} is not a valid root device..."
REAL_ROOT=""
- got_good_root=0
+ got_good_root=1
fi
done
@@ -670,8 +666,6 @@
[ -z "${LOOP}" ] && find_loop
[ -z "${LOOPTYPE}" ] && find_looptype
- cache_cd_contents
-
# If encrypted, find key and mount, otherwise mount as usual
if [ -n "${CRYPT_ROOT}" ]
then
@@ -712,7 +706,7 @@
# Upgrade to cached version if possible
[ "${DO_cache}" -a -f "${_CACHED_SQUASHFS_PATH}" ] \
&& _squashfs_path=${_CACHED_SQUASHFS_PATH}
- mount -t squashfs -o loop,ro "${_squashfs_path}" "${NEW_ROOT}/mnt/livecd" || {
+ mount -t squashfs -o loop,ro "/mnt/cdrom/${LOOPEXT}${LOOP}" "${NEW_ROOT}/mnt/livecd" || {
bad_msg "Squashfs filesystem could not be mounted, dropping into shell."
if [ -e /proc/filesystems ]; then
fgrep -q squashfs /proc/filesystems || \
EOF
echo recompressing initrd
#find . -print | cpio -o -H newc 2>/dev/null | xz -9 -c - > ../gentoo.igz
find . -print | cpio -o -H newc 2>/dev/null > ../gentoo.igz
popd > /dev/null 2>&1
rm -r $OUT/work
echo done.
使い方はISOイメージをマウントし、例えばマウントポイントが/mnt/cdromならgentoo-pxe-convert.sh /mnt/cdrom hogeって感じにするとhogeの中にgentoo、gentoo,igzってファイルが出来上がるのでtftpdでKERNELとINITRDとして指定します。
tftpd'(32|64)のpxelinux.cfg/defaultだと次のようになります。
DEFAULT menu.c32 LABEL gentoo-amd64 MENU LABEL ^1. Gentoo-amd64 KERNEL /gentoo-amd64/gentoo APPEND initrd=/gentoo-amd64/gentoo.igz root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/dev/loop0 LABEL gentoo-x86 MENU LABEL ^2. Gentoo-x86 KERNEL /gentoo-x86/gentoo APPEND initrd=/gentoo-x86/gentoo.igz root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/dev/loop0
Gentooなのですぐに変更されると思うんだけれどしばらくは使えると思います。そしてオリジナルの作者に感謝!
riorahipsu Natalie White https://wakelet.com/wake/Zw3KS3d0CTFtdgTPGpy_f
返信削除fidniginnoa
YmonsmuFca-e1984 Brian Hunt https://www.breemooreproductions.com/profile/ilbertilbertilbert/profile
返信削除fragleninan
Opernapi-de Haley Johnson R-Studio
返信削除Avid Pro Tools
Internet Download Manager
sahedkiefi