PXE Boot 2006.0 Minimal ISO

install-x86-minimal-2006.0.iso

Ability to run the Gentoo install totally from the PXE boot. Modify booting to not need nfs to get the image.squashfs.

Create target directory

mkdir .../tftproot/gentoo20060
cd .../tftproot/gentoo20060

Obtain the files

You need to obtain these files from the CD:

isolinux/gentoo
isolinux/gentoo.igz
image.squashfs

pxelinux.cfg/default

label 3
    kernel gentoo20060/gentoo
    append initrd=gentoo20060/gentoo.igz.new root=/dev/ram0 init=/linuxrc loop=/image.squashfs looptype=squashfs cdroot=1 real_root=/ vga=791 ip=dhcp

Tool unigz.pl

#!/usr/bin/perl -w
#
use strict;

use File::Slurp qw(slurp);

my $ifile = slurp($ARGV[0], binmode=> ':raw');
my $newfile;
my $i=1;
my @newfiles = split(/TRAILER!!!/,$ifile);
`mkdir $ARGV[0].dir`;

foreach $newfile (@newfiles)
{
        open F, "> ./$ARGV[0].dir/$i";
        print F $newfile;
        print F "TRAILER!!!\0";
        close F;
        `cd $ARGV[0].dir; cpio -i -H newc < $i; rm $i; cd ..`;
        $i++;
}

Unpack the .igz

mv gentoo.igz gentoo-image.gz
./unigz.pl gentoo-image

Modity the initrd

cd gentoo-image.dir
mkdir -p mnt/cdrom/
cp ../image.squashfs mnt/cdrom/
cp init init.orig

init file

--- init.orig   2005-12-15 15:14:38.000000000 +1100
+++ init        2005-12-15 16:39:59.000000000 +1100
@@ -270,7 +270,7 @@

        sdelay

-       [ "${REAL_ROOT}" = "/dev/nfs" ] || bootstrapCD
+       #[ "${REAL_ROOT}" = "/dev/nfs" ] || bootstrapCD
        if [ "${REAL_ROOT}" = '' ]
        then
                echo -n -e "${WARN}>>${NORMAL}${BOLD} No bootable medium found. Waiting for new devices"
@@ -369,7 +369,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

@@ -452,7 +452,7 @@
                fi
        fi

-       cache_cd_contents
+       #cache_cd_contents
        # Setup the loopback mounts

        if [ "${LOOPTYPE}" = 'normal' ]
@@ -466,7 +466,8 @@
        elif [ "${LOOPTYPE}" = 'squashfs' ]
        then
                good_msg 'Mounting squashfs filesystem'
-               mount -t squashfs -o loop,ro ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd
+               #mount -t squashfs -o loop,ro ${NEW_ROOT}/mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd
+               mount -t squashfs -o loop,ro /mnt/cdrom/${LOOPEXT}${LOOP} ${NEW_ROOT}/mnt/livecd

                test_success 'Mount filesystem'
                FS_LOCATION='mnt/livecd'

copy to ./init

Repack the .igz file

find . -print | cpio -o -H newc > ../gentoo.igz.new

reference http://www.byteclub.net/wiki/index.php?title=Gentoo_live

pxe_boot_2006.0.txt · Last modified: 2011/03/04 00:55 by 127.0.0.1
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki