From: Kern Sibbald Date: Sat, 14 May 2005 19:43:54 +0000 (+0000) Subject: Get rescue boot working X-Git-Tag: Release-1.38.0~462 X-Git-Url: https://git.sur5r.net/?p=bacula%2Frescue;a=commitdiff_plain;h=d3f6a01bc3cb6cc7ef5a7d21dfad115bdd9d6af8 Get rescue boot working --- diff --git a/rescue/linux/cdrom/README b/rescue/linux/cdrom/README index e2023e4..dbb9f2d 100644 --- a/rescue/linux/cdrom/README +++ b/rescue/linux/cdrom/README @@ -137,6 +137,8 @@ The boot process works as follows: select, it will boot. - The whole roottree is in the initrd.img and will be loaded in memory. It may take more time than you are used to to load. +- isolinux also loads the kernel and starts it. The kernel finds + the initial ramdisk. - The script "linuxrc" in /roottree is run. This script is *very* simple and doesn't do much other than mounting /proc and remounting the root (/) read/write. diff --git a/rescue/linux/cdrom/makebinaries b/rescue/linux/cdrom/makebinaries index ed6af5e..f026ffb 100755 --- a/rescue/linux/cdrom/makebinaries +++ b/rescue/linux/cdrom/makebinaries @@ -62,6 +62,7 @@ for lib in `find roottree/sbin/ -type f -exec ldd {} \; | awk '{print $3}' | sor fi fi done +cp -fp /lib/ld-linux.so.2 roottree/lib/ strip `find roottree/lib/ -maxdepth 1 -type f` 2>/dev/null diff --git a/rescue/linux/cdrom/makeinitrd b/rescue/linux/cdrom/makeinitrd index e5e87dc..6209a12 100755 --- a/rescue/linux/cdrom/makeinitrd +++ b/rescue/linux/cdrom/makeinitrd @@ -2,7 +2,7 @@ TOPDIR=`pwd` -# mkdir -p /mnt/loop1 /mnt/loop2 +mkdir -p /mnt/loop1 /mnt/loop2 # we need to set aside a few loop devices. I chose (in reverse order of their appearance) # -- loop1 for the boot image @@ -74,8 +74,8 @@ echo "Compressing the RAM disk image.... " rm -f cdtree/boot/isolinux/initrd.img # and gzip our RAM disk image and put it in the right place. -# gzip -9 -c root >cdtree/boot/isolinux/initrd.img -gzip -9 < root >cdtree/boot/isolinux/initrd.img +gzip -9 -c root >cdtree/boot/isolinux/initrd.img +# gzip -9 < root >cdtree/boot/isolinux/initrd.img if [ $? != 0 ] ; then echo "Build failed" exit 1 diff --git a/rescue/linux/cdrom/makekernel b/rescue/linux/cdrom/makekernel index eee2e23..f2aaab5 100755 --- a/rescue/linux/cdrom/makekernel +++ b/rescue/linux/cdrom/makekernel @@ -6,7 +6,7 @@ TOPDIR=`pwd` KERNEL=`uname -r` -KERNEL=2.6.10-1.770_FC3 +KERNEL=2.6.11-1.14_FC3 rm -rf roottree/dev tar xfz dev.tar.gz -C roottree @@ -24,12 +24,33 @@ rm -rf roottree/lib/modules mkdir -p roottree/lib/modules cp -af /lib/modules/$KERNEL/ roottree/lib/modules/ # clean up just a bit -rm -rf roottree/lib/modules/build -rm -rf roottree/lib/modules/kernel/drivers/bluetooth -rm -rf roottree/lib/modules/kernel/drivers/pcmcia -rm -rf roottree/lib/modules/kernel/drivers/usb -rm -rf roottree/lib/modules/kernel/drivers/video -rm -rf roottree/lib/modules/kernel/drivers/isdn +rm -rf roottree/lib/modules/$KERNEL/build +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/bluetooth +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/pcmcia +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/usb +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/video +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/isdn +rm -rf roottree/lib/modules/$KERNEL/kernel/sound +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/sound +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/crypto +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/net/wireless +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/net/appletalk +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/net/tokenring +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/net/irda +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/media +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/infiniband +rm -rf roottree/lib/modules/$KERNEL/kernel/drivers/crypto +rm -rf roottree/lib/modules/$KERNEL/kernel/net/appletalk +rm -rf roottree/lib/modules/$KERNEL/kernel/net/bluetooth +rm -rf roottree/lib/modules/$KERNEL/kernel/net/ipv6 +rm -rf roottree/lib/modules/$KERNEL/kernel/net/irda +rm -rf roottree/lib/modules/$KERNEL/kernel/net/atm +rm -rf roottree/lib/modules/$KERNEL/kernel/net/bridge +rm -rf roottree/lib/modules/$KERNEL/kernel/net/sunrpc +rm -rf roottree/lib/modules/$KERNEL/kernel/net/wanrouter +rm -rf roottree/lib/modules/$KERNEL/kernel/net/tux + + kernel="/boot/vmlinuz-$KERNEL" echo "Coping $kernel to $TOPDIR/cdtree/boot/isolinux/vmlinuz" diff --git a/rescue/linux/cdrom/mkbootdisk b/rescue/linux/cdrom/mkbootdisk deleted file mode 100755 index 243a77e..0000000 --- a/rescue/linux/cdrom/mkbootdisk +++ /dev/null @@ -1,224 +0,0 @@ -#!/bin/bash - -# mkbootdisk -# -# Written by Erik Troan - -pause=yes -unset kernel -device=bootcd.iso -unset verbose -unset kernelargs -unset mountopts -unset isoimage -unset realdev -size=1440 -failed=0 -isoimage=1 -verbose=1 - -MOUNTDIR=`mktemp -d /tmp/mkbootdisk.XXXXXX` -PATH=/sbin:$PATH -export PATH - -VERSION=1.5.2 - -usage () { - cat >&2 <] - [--verbose -v] [--iso] [--kernelargs ] [--size ] - (ex: `basename $0` --device /dev/fd1 2.0.31) -EOF - exit $1 -} - -while [ $# -gt 0 ]; do - case $1 in - --device) - shift - device=$1 - ;; - --kernelargs) - shift - kernelargs=$1 - ;; - --help) - usage 0 - ;; - --iso) - isoimage=1 - ;; - --size) - shift - size=$1 - ;; - --noprompt) - unset pause - ;; - -v) - verbose=true - ;; - --verbose) - verbose=true - ;; - --version) - echo "mkbootdisk: version $VERSION" - exit 0 - ;; - *) - if [ -z "$kernel" ]; then - kernel=$1 - else - usage - fi - ;; - esac - - shift -done - -[ -z "$kernel" ] && usage 1 - -[ -d /lib/modules/$kernel ] || { - echo "/lib/modules/$kernel is not a directory." >&2 - exit 1 -} - -[ -f /boot/vmlinuz-$kernel ] || { - echo "/boot/vmlinuz-$kernel does not exist." >&2 - exit 1 -} - - -rootdev=`awk '$1 ~ /^[^#]/ && $2 ~ /^\/$/ { print $1 ; exit }' /etc/fstab` - -if [ $(echo $rootdev | cut -c1-6) = "LABEL=" ]; then - rootlabel=$(echo $rootdev | cut -c7-) - - # whee, now we have to look through every partition looking for - # the thing called $rootlabel, which could be raid. Ick. - - list=$(tail +3 /proc/partitions | awk '{ print $4 '} | grep '^md') - list="$list $(tail +3 /proc/partitions | - awk '{ print $4 '} | grep -v '^md')" - rootdev="" - for dev in $list; do - if tune2fs -l /dev/$dev >/dev/null 2>/dev/null; then - label=$(tune2fs -l /dev/$dev 2>/dev/null | - grep "Filesystem volume name" | awk '{print $4}') - if [ "$label" = $rootlabel ]; then - rootdev=/dev/$dev - break - fi - fi - done -fi - -if [ -z "$kernelargs" -a -x /sbin/grubby -a -f /boot/grub/grub.conf ]; then - # sed gross... this grep's for the args= line and removes the args=" and "$ - defkernel=$(grubby --default-kernel) - if [ -n "$defkernel" ]; then - kernelargs=$(grubby --info "$defkernel" | - sed -n '/^args=/{s/^args="//;s/"$//;p;}') - fi -fi - -[ -z "$rootdev" ] && { - echo 'Cannot find root partition in /etc/fstab.' >&2 - exit 1 -} - -rm -rf $MOUNTDIR -mkdir $MOUNTDIR || { - echo "Failed to create $MOUNTDIR" >&2 - exit 1 -} -[ -d $MOUNTDIR ] || { - echo "$MOUNTDIR is not a directory!" >&2 - exit 1 -} - -cfgfile=$MOUNTDIR/isolinux/isolinux.cfg -bootmsg=$MOUNTDIR/isolinux/boot.msg - -# create an iso image; the directory is all we need -[ -n "$verbose" ] && echo -n "Installing isolinux... " -mkdir $MOUNTDIR/isolinux -cp /usr/lib/syslinux/isolinux.bin $MOUNTDIR/isolinux -[ -n "$verbose" ] && echo done - - -BOOTDESTDIR=$MOUNTDIR/isolinux - -[ -n "$verbose" ] && echo -n "Copying /boot/vmlinuz-$kernel... " -cp -p /boot/vmlinuz-$kernel $BOOTDESTDIR/vmlinuz -[ $? = 0 ] || failed=1 -[ -n "$verbose" ] && echo "done." - -[ -n "$verbose" ] && echo -n "Copying /boot/initrd-$kernel.img... " -if [ -f /boot/initrd-$kernel.img ]; then - cp -p /boot/initrd-$kernel.img $BOOTDESTDIR/initrd.img -fi -[ $? = 0 ] || failed=1 -[ -n "$verbose" ] && echo "done." - -[ -n "$verbose" ] && echo -n "Configuring bootloader... " - -[ -f $BOOTDESTDIR/initrd.img ] && INITRDARG="initrd=initrd.img" - -if [ $(echo $rootdev | cut -b 6-9) = "loop" ]; then - rootdev=$(ls -l $rootdev | sed 's/,//' | awk '{ printf("%02x%02x\n", $5, $6); }') -fi - -cat > $cfgfile <> $bootmsg < (or wait 10 seconds) to boot your $title system from -$rootdev. You may override the default linux kernel parameters by typing -"linux ", followed by if you like. - -EOF - -[ $? = 0 ] || failed=1 - -[ -n "$verbose" ] && echo "done." - -mkisofs \ - -A "Red Hat Linux Boot CD" \ - -V "Red Hat Linux Boot CD" \ - -J -R -T -quiet \ - -o $device \ - -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ - -boot-load-size 4 -boot-info-table $MOUNTDIR -rm -rf $MOUNTDIR/* -rmdir $MOUNTDIR - - -if [ $failed -eq 1 ]; then - exit 1 -else - exit 0 -fi diff --git a/rescue/linux/cdrom/mkinitrd b/rescue/linux/cdrom/mkinitrd deleted file mode 100755 index 9bbf268..0000000 --- a/rescue/linux/cdrom/mkinitrd +++ /dev/null @@ -1,741 +0,0 @@ -#!/bin/bash - -# mkinitrd -# -# Written by Erik Troan -# -# Contributors: -# Elliot Lee -# Miguel de Icaza -# Christian 'Dr. Disk' Hechelmann -# Michael K. Johnson -# Pierre Habraken -# Jakub Jelinek -# Carlo Arenas Belon (carenas@chasqui.lared.net.pe> -# Keith Owens -# Bernhard Rosenkraenzer -# Matt Wilson -# Trond Eivind Glomsrød -# Jeremy Katz -# Preston Brown -# Bill Nottingham -# Guillaume Cottenceau - - -PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH -export PATH - -VERSION=4.1.18 - -compress=1 -allowmissing="" -target="cdtree/boot/isolinux/initrd.img" -kernel=2.6.10-1.770_FC3 -force="" -verbose="" -MODULES="" -img_vers="" -builtins="" -pivot=1 -initramfs="1" -modulefile=/etc/modules.conf -rc=0 - -IMAGESIZE=8000 -PRESCSIMODS="scsi_mod sd_mod unknown" -fstab="/etc/fstab" - -rm -f $target -if [ -f /etc/udev/udev.conf ]; then - USE_UDEV="yes" - UDEV_TMPFS="yes" - UDEV_KEEP_DEV="yes" - . /etc/udev/udev.conf - [ -x /sbin/udev.static ] || USE_UDEV= -fi - -usage () { - echo "usage: `basename $0` [--version] [-v] [-f] [--preload ]" >&2 - echo " [--omit-scsi-modules] [--omit-raid-modules] [--omit-lvm-modules]" >&2 - echo " [--with=] [--image-version] [--fstab=] [--nocompress]" >&2 - echo " [--builtin=] [--nopivot] " >&2 - echo "" >&2 - echo " (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)" >&2 - exit 1 -} - -moduledep() { - if [ ! -f "/lib/modules/$kernel/modules.dep" ]; then - echo "No dep file found for kernel $kernel" >&2 - exit 1 - fi - - [ -n "$verbose" ] && echo -n "Looking for deps of module $1" - deps=$(awk 'BEGIN { searched=ARGV[2]; ARGV[2]=""; rc=1 } \ - function modname(filename) { match(filename, /\/([^\/]+)\.k?o:?$/, ret); return ret[1] } \ - function show() { if (orig == searched) { print dep; orig=""; rc=0; exit } } \ - /^\/lib/ { show(); \ - orig=modname($1); dep=""; \ - if ($2) { for (i = 2; i <= NF; i++) { dep=sprintf("%s %s", dep, modname($i)); } } } \ - /^ / { dep=sprintf("%s %s", dep, modname($1)); } \ - END { show(); exit(rc) }' /lib/modules/$kernel/modules.dep $1) - [ -n "$verbose" ] && echo -e "\t$deps" -} - -findmodule() { - skiperrors="" - - if [ $1 == "--skiperrors" ]; then - skiperrors=--skiperrors - shift - fi - - local modName=$1 - - if [ "$modName" = "off" -o "$modName" = "null" ]; then - return - fi - - if [ $(echo $modName | cut -b1) = "-" ]; then - skiperrors=--skiperrors - modName=$(echo $modName | cut -b2-) - fi - - if echo $builtins | egrep -q '(^| )'$modName'( |$)' ; then - [ -n "$verbose" ] && echo "module $modName assumed to be built in" - set +x - return - fi - - # special cases - if [ "$modName" = "i2o_block" ]; then - findmodule i2o_core - findmodule -i2o_pci - modName="i2o_block" - elif [ "$modName" = "ppa" ]; then - findmodule parport - findmodule parport_pc - modName="ppa" - elif [ "$modName" = "sbp2" ]; then - findmodule ieee1394 - findmodule ohci1394 - modName="sbp2" - else - moduledep $modName - for i in $deps; do - findmodule $i - done - fi - - for modExt in o.gz o ko ; do - if [ -d /lib/modules/$kernel/updates ]; then - fmPath=`(cd /lib/modules/$kernel/updates; echo find . -name $modName.$modExt -type f | /sbin/nash --quiet) | /bin/awk {'print $1; exit;'}` - fi - - if [ -f /lib/modules/$kernel/updates/$fmPath ]; then - fmPath=updates/$fmPath - break - fi - - fmPath=`(cd /lib/modules/$kernel; echo find . -name $modName.$modExt -type f | /sbin/nash --quiet) | /bin/awk {'print $1; exit;'}` - if [ -f /lib/modules/$kernel/$fmPath ]; then - break - fi - done - - if [ ! -f /lib/modules/$kernel/$fmPath ]; then - if [ -n "$skiperrors" ]; then - return - fi - - # ignore the absence of the scsi modules - for n in $PRESCSIMODS; do - if [ "$n" = "$modName" ]; then - return; - fi - done; - - if [ -n "$allowmissing" ]; then - echo "WARNING: No module $modName found for kernel $kernel, continuing anyway" >&2 - return - fi - - echo "No module $modName found for kernel $kernel, aborting." >&2 - exit 1 - fi - - # only need to add each module once - if ! echo $MODULES | grep -q "$fmPath" 2>/dev/null ; then - MODULES="$MODULES $fmPath" - fi -} - -inst() { - if [ "$#" != "2" ];then - echo "usage: inst " - return - fi - [ -n "$verbose" ] && echo "$1 -> $2" - cp $1 $2 -} - -while [ $# -gt 0 ]; do - case $1 in - --fstab*) - if echo $1 | grep -q '=' ; then - fstab=`echo $1 | sed 's/^--fstab=//'` - else - fstab=$2 - shift - fi - ;; - - --with-usb) - withusb=yes - ;; - - --with*) - if echo $1 | grep -q '=' ; then - modname=`echo $1 | sed 's/^--with=//'` - else - modname=$2 - shift - fi - - basicmodules="$basicmodules $modname" - ;; - - --builtin*) - if echo $1 | grep -q '=' ; then - modname=`echo $1 | sed 's/^--builtin=//'` - else - modname=$2 - shift - fi - builtins="$builtins $modname" - ;; - - --version) - echo "mkinitrd: version $VERSION" - exit 0 - ;; - - -v) - verbose=-v - ;; - - --nocompress) - compress="" - ;; - - --nopivot) - pivot="" - ;; - - --ifneeded) - # legacy - ;; - - -f) - force=1 - ;; - --preload*) - if echo $1 | grep -q '=' ; then - modname=`echo $1 | sed 's/^--preload=//'` - else - modname=$2 - shift - fi - PREMODS="$PREMODS $modname" - ;; - --omit-scsi-modules) - PRESCSIMODS="" - noscsi=1; - ;; - --omit-raid-modules) - noraid=1; - ;; - --omit-lvm-modules) - nolvm=1 - ;; - --image-version) - img_vers=yes - ;; - --noudev) - USE_UDEV= - ;; - --allow-missing) - allowmissing=yes - ;; - *) - if [ -z "$target" ]; then - target=$1 - elif [ -z "$kernel" ]; then - kernel=$1 - else - usage - fi - ;; - esac - - shift -done - -if [ -z "$target" -o -z "$kernel" ]; then - usage -fi - -if [ -n "$img_vers" ]; then - target="$target-$kernel" -fi - -if [ -z "$force" -a -f $target ]; then - echo "$target already exists." >&2 - exit 1 -fi - -if [ ! -d /lib/modules/$kernel ]; then - echo "/lib/modules/$kernel is not a directory." >&2 - exit 1 -fi - -if [ $UID != 0 ]; then - echo "mkinitrd must be run as root" - exit 1 -fi - -kernelmajor=`echo $kernel | cut -d . -f 1,2` - -if [ "$kernelmajor" == "2.4" ]; then - if [ -n "$verbose" ]; then echo "Creating old-style initrd"; fi - USE_UDEV= -else - if [ -n "$verbose" ]; then echo "Creating initramfs"; fi - modulefile=/etc/modprobe.conf - initramfs=1 - pivot="" -fi - -# if we're not using udev, don't set any of the other bits -[ -z "$USE_UDEV" ] && UDEV_TMPFS= && UDEV_KEEP_DEV= - -# find a temporary directory which doesn't use tmpfs -TMPDIR="" -for t in /tmp /var/tmp /root ${PWD}; do - if [ ! -d $t ]; then continue; fi - if ! echo access -w $t | /sbin/nash --quiet; then continue; fi - - fs=$(df -T $t 2>/dev/null | awk '{line=$1;} END {printf $2;}') - if [ "$fs" != "tmpfs" ]; then - TMPDIR=$t - break - fi -done - -if [ -z "$TMPDIR" ]; then - echo "no temporary directory could be found" >&2 - exit 1 -fi - -if [ $TMPDIR = "/root" -o $TMPDIR = "${PWD}" ]; then - echo "WARNING: using $TMPDIR for temporary files" >&2 -fi - -for n in $PREMODS; do - findmodule $n -done - -needusb="" -if [ -n "$withusb" ]; then - # If / or /boot is on a USB device include the driver. With root by - # label we could still get some odd behaviors - for fs in / /boot ; do - esc=$(echo $fs | sed 's,/,\\/,g') - dev=$(mount | awk "/ on ${esc} / { print \$1 }" | sed 's/[0-9]*$//' | cut -d/ -f3) - if [ "$(echo $dev | cut -c1-2)" = sd ]; then - if [ `which kudzu 2>/dev/null` ]; then - host=$(kudzu --probe -b scsi | - gawk '/^device: '${dev}'/,/^host:/ { if (/^host/) { print $2; exit; } }') - if [ -d /proc/scsi/usb-storage-${host} -o -f /proc/scsi/usb-storage/${host} ]; then - needusb=1 - fi - fi - fi - done -fi - -if [ -n "$needusb" ]; then - drivers=$(awk '/^alias[[:space:]]+usb-controller[0-9]* / { print $3}' < $modulefile) - if [ -n "$drivers" ]; then - for driver in $drivers; do - findmodule $driver - done - findmodule scsi_mod - findmodule sd_mod - findmodule usb-storage - fi -fi - -if [ -z "$noscsi" ]; then - if [ ! -f $modulefile ]; then - modulefile=/etc/conf.modules - fi - - if [ -f $modulefile ]; then - scsimodules=`grep "alias[[:space:]]\+scsi_hostadapter" $modulefile | grep -v '^[ ]*#' | LC_ALL=C sort -u | awk '{ print $3 }'` - - if [ -n "$scsimodules" ]; then - for n in $PRESCSIMODS; do - findmodule $n - done - - for n in $scsimodules; do - # for now allow scsi modules to come from anywhere. There are some - # RAID controllers with drivers in block/ - findmodule $n - done - fi - fi -fi - -# If we have ide devices and module ide, do the right thing -ide=/proc/ide/ide* -if [ -n "$ide" ]; then - findmodule -ide-disk -fi - -# If we use LVM, include lvm-mod -if [ -z "$nolvm" ]; then - if [ -f /proc/lvm/global ]; then - if grep -q '^VG:' /proc/lvm/global ; then - if [ "$kernelmajor" == "2.4" ]; then - findmodule -lvm-mod - else - findmodule -dm-mod - fi - fi - fi - - if [ -x /sbin/dmsetup -a -e /dev/mapper/control ]; then - dmout=$(/sbin/dmsetup ls 2>/dev/null) - if [ "$dmout" != "No devices found" -a "$dmout" != "" ]; then - findmodule -dm-mod - fi - fi -fi - -# If we have dasd devices, include the necessary modules (S/390) -if [ -d /proc/dasd ]; then - findmodule -dasd_mod - findmodule -dasd_eckd_mod - findmodule -dasd_fba_mod -fi - -if [ -z "$noraid" -a -f /proc/mdstat ]; then - # load appropriate raid devices if necessary -- we'll load whatever - # /proc/mdstat suggests - - # note that the awk below contains a space and a tab - for level in $(awk '/^md[0-9][0-9]*[ ]*:/ { print $4 }' \ - /proc/mdstat | sort -u); do - case $level in - linear) - findmodule linear - startraid=1 - ;; - multipath) - findmodule multipath - startraid=1 - ;; - raid[01456]) - findmodule $level - startraid=1 - ;; - *) - echo "raid level $level (in /proc/mdstat) not recognized" >&2 - ;; - esac - done - - if [ -n "$startraid" ]; then - raiddevices=$(awk '/^md[0-9][0-9]*[ ]*:/ { print $1 }' \ - /proc/mdstat | sort) - fi -fi - -# check to see if we need to set up a loopback filesystem -rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab) -if echo $rootdev | cut -d/ -f3 | grep -q loop ; then - key="^# $(echo $rootdev | cut -d/ -f3 | tr '[a-z]' '[A-Z]'):" - if ! grep "$key" $fstab > /dev/null; then - echo "The root filesystem is on a $rootdev, but there is no magic entry in $fstab" 1>&2 - echo "for this device. Consult the mkinitrd man page for more information" 2>&2 - exit 1 - fi - - line=$(grep "$key" $fstab) - loopDev=$(echo $line | awk '{print $3}') - loopFs=$(echo $line | awk '{print $4}') - loopFile=$(echo $line | awk '{print $5}') - - basicmodules="$basicmodules -loop" - if [ "$loopFs" = "vfat" -o "$loopFs" = "msdos" ]; then - basicmodules="$basicmodules -fat" - fi - basicmodules="$basicmodules -${loopFs}" -# check if the root fs is on a logical volume -elif ! echo $rootdev | cut -c1-6 |grep -q "LABEL=" ; then - rootdev=$(echo "readlink $rootdev" | /sbin/nash --quiet) - major=`ls -l $rootdev | sed -e "s/.* \\([0-9]\+\\), *[0-9]\+.*/\\1/"` - [ "$major" != "58" ] || root_lvm=1 - if echo $rootdev |grep -q /dev/mapper 2>/dev/null ; then root_lvm=1 ; fi -fi - -rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $3; }}' $fstab) -rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $4; }}' $fstab) - -# in case the root filesystem is modular -findmodule -${rootfs} - -if [ -n "$root_lvm" ]; then - if [ "$kernelmajor" == "2.4" ]; then - findmodule -lvm-mod - else - findmodule -dm-mod - # DM requires all of these to be there in case someone used the - # feature. broken. (#132001) - findmodule -dm-mirror - findmodule -dm-zero - findmodule -dm-snapshot - fi -fi - -for n in $basicmodules; do - findmodule $n -done - -if [ -n "$verbose" ]; then - echo "Using modules: $MODULES" -fi - - -MNTIMAGE=roottree -IMAGE=root -RCFILE=$MNTIMAGE/init - -if [ -z "$MNTIMAGE" -o -z "$IMAGE" ]; then - echo "Error creating temporaries. Try again" >&2 - exit 1 -fi - -mkdir -p $MNTIMAGE -mkdir -p $MNTIMAGE/lib -mkdir -p $MNTIMAGE/bin -mkdir -p $MNTIMAGE/etc -mkdir -p $MNTIMAGE/dev -mkdir -p $MNTIMAGE/loopfs -mkdir -p $MNTIMAGE/proc -mkdir -p $MNTIMAGE/sys -mkdir -p $MNTIMAGE/sysroot -ln -s bin $MNTIMAGE/sbin - -inst /sbin/nash "$MNTIMAGE/bin/nash" -inst /sbin/insmod.static "$MNTIMAGE/bin/insmod" -ln -s /sbin/nash $MNTIMAGE/sbin/modprobe - -if [ -n "$USE_UDEV" ]; then - inst /sbin/udev.static $MNTIMAGE/sbin/udev - ln -s udev $MNTIMAGE/sbin/udevstart - mkdir -p $MNTIMAGE/etc/udev - inst /etc/udev/udev.conf $MNTIMAGE/etc/udev/udev.conf - ln -s /sbin/nash $MNTIMAGE/sbin/hotplug -fi - -for MODULE in $MODULES; do - if [ -x /usr/bin/strip ]; then - /usr/bin/strip -g $verbose /lib/modules/$kernel/$MODULE -o $MNTIMAGE/lib/$(basename $MODULE) - else - cp $verbose -a /lib/modules/$kernel/$MODULE $MNTIMAGE/lib - fi -done - -# mknod'ing the devices instead of copying them works both with and -# without devfs... -mknod $MNTIMAGE/dev/console c 5 1 -mknod $MNTIMAGE/dev/null c 1 3 -mknod $MNTIMAGE/dev/ram b 1 1 -mknod $MNTIMAGE/dev/systty c 4 0 -for i in 1 2 3 4; do - mknod $MNTIMAGE/dev/tty$i c 4 $i -done - -# FIXME -- this won't work if you're using devfs -if [ -n "$root_lvm" -a "$kernelmajor" == "2.4" ]; then - pvs=$(/sbin/pvscan | grep " PV " | /bin/awk {'print $5;'} |sed 's/"//g') - for pv in $pvs; do - cp $verbose --parents -a $pv $MNTIMAGE/ - done - - inst /sbin/vgwrapper "$MNTIMAGE/bin/vgwrapper" - ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgscan" - ln "$MNTIMAGE/bin/vgwrapper" "$MNTIMAGE/bin/vgchange" - - mknod $MNTIMAGE/dev/lvm b 109 0 -fi - -if [ -n "$root_lvm" -a "$kernelmajor" == "2.6" ]; then - inst /sbin/lvm.static "$MNTIMAGE/bin/lvm" - if [ -f /etc/lvm/lvm.conf ]; then - cp $verbose --parents /etc/lvm/lvm.conf $MNTIMAGE/ - fi -fi - -echo "#!/bin/nash" > $RCFILE -echo "" >> $RCFILE - -echo "mount -t proc /proc /proc" >> $RCFILE -echo "setquiet" >> $RCFILE -echo "echo Mounted /proc filesystem" >> $RCFILE - -if [ "$kernelmajor" != "2.4" ]; then - echo "echo Mounting sysfs" >> $RCFILE - echo "mount -t sysfs none /sys" >> $RCFILE -fi - -if [ -n "$USE_UDEV" ]; then - if [ -n "$UDEV_TMPFS" ]; then - cat >> $RCFILE <> $RCFILE < /proc/sys/kernel/hotplug -EOF -fi - -for MODULE in $MODULES; do - text="" - module=`echo $MODULE | sed "s|.*/||" | sed "s/.k\?o$//"` - fullmodule=`echo $MODULE | sed "s|.*/||"` - - options=`sed -n -e "s/^options[ ][ ]*$module[ ][ ]*//p" $modulefile 2>/dev/null` - - if [ -n "$verbose" ]; then - if [ -n "$options" ]; then - text=" with options $options" - fi - echo "Loading module $module$text" - fi - echo "echo \"Loading $fullmodule module\"" >> $RCFILE - echo "insmod /lib/$fullmodule $options" >> $RCFILE - - # Hack - we need a delay after loading usb-storage to give things - # time to settle down before we start looking a block devices - if [ "$module" = "usb-storage" ]; then - echo "sleep 5" >> $RCFILE - fi - if [ "$module" = "zfcp" -a -f /etc/zfcp.conf ]; then - echo "sleep 2" >> $RCFILE - cat /etc/zfcp.conf | grep -v "^#" | tr "A-Z" "a-z" | while read DEVICE SCSIID WWPN SCSILUN FCPLUN; do - echo "echo -n $WWPN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/port_add" >>$RCFILE - echo "echo -n $FCPLUN > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/$WWPN/unit_add" >>$RCFILE - echo "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online" >>$RCFILE - done - fi -done - -# HACK: module loading + device creation isn't necessarily synchronous... -# this will make sure that we have all of our devices before trying -# things like RAID or LVM -if [ -n "$USE_UDEV" ]; then - echo "/sbin/udevstart" >> $RCFILE -fi - -if [ -n "$startraid" ]; then - for dev in $raiddevices; do - cp -a /dev/${dev} $MNTIMAGE/dev - echo "raidautorun /dev/${dev}" >> $RCFILE - done -fi - -if [ -z "$USE_UDEV" ]; then - echo "echo Creating block devices" >> $RCFILE - echo "mkdevices /dev" >> $RCFILE -fi - -if [ -n "$loopDev" ]; then - mkdir /initrd - cp -a $loopDev $MNTIMAGE/dev - cp -a $rootdev $MNTIMAGE/dev - echo "echo Mounting device containing loopback root filesystem" >> $RCFILE - echo "mount -t $loopFs $loopDev /loopfs" >> $RCFILE - echo "echo Setting up loopback device $rootdev" >> $RCFILE - echo "losetup $rootdev /loopfs$loopFile" >> $RCFILE -elif [ -n "$root_lvm" ]; then - if [ "$kernelmajor" == "2.4" ]; then - echo "echo Scanning logical volumes" >> $RCFILE - echo "vgscan" >> $RCFILE - echo "echo Activating logical volumes" >> $RCFILE - echo "vgchange -ay" >> $RCFILE - else - echo "echo Making device-mapper control node" >> $RCFILE - echo "mkdmnod" >> $RCFILE - echo "echo Scanning logical volumes" >> $RCFILE - echo "lvm vgscan" >> $RCFILE - echo "echo Activating logical volumes" >> $RCFILE - echo "lvm vgchange -ay" >> $RCFILE - echo "echo Making device nodes" >> $RCFILE - echo "lvm vgmknodes" >> $RCFILE - fi -fi - -echo "echo Creating root device" >> $RCFILE -echo "mkrootdev /dev/root" >> $RCFILE -rootdev=/dev/root - -if [ "$kernelmajor" != "2.4" ]; then - echo "umount /sys" >> $RCFILE -fi - -if [ -n "$initramfs" ]; then - echo "echo Mounting root filesystem" >> $RCFILE - echo "mount -o $rootopts --ro -t $rootfs $rootdev /sysroot" >> $RCFILE - - [ -n "$UDEV_KEEP_DEV" ] && echo "mount -t tmpfs --bind /dev /sysroot/dev" >> $RCFILE - - echo "echo Switching to new root" >> $RCFILE - echo "switchroot /sysroot" >> $RCFILE -else - if [ -n "$pivot" ]; then - echo "echo 0x0100 > /proc/sys/kernel/real-root-dev" >> $RCFILE - - echo "echo Mounting root filesystem" >> $RCFILE - echo "mount -o $rootopts --ro -t $rootfs $rootdev /sysroot" >> $RCFILE - - echo "pivot_root /sysroot /sysroot/initrd" >> $RCFILE - echo "umount /initrd/proc" >> $RCFILE - else - echo "umount /proc" >> $RCFILE - fi -fi - -[ -n "$UDEV_TMPFS" ] && echo "umount /initrd/dev" >> $RCFILE -chmod +x $RCFILE - - (cd $MNTIMAGE; find . | cpio --quiet -c -o) > $IMAGE || exit 1 - -if [ -n "$compress" ]; then - gzip -9 < $IMAGE > $target || rc=1 -else - cp -a $IMAGE $target || rc=1 -fi - -exit $rc diff --git a/rescue/linux/cdrom/rootsbin.list b/rescue/linux/cdrom/rootsbin.list index 176fe58..035649e 100644 --- a/rescue/linux/cdrom/rootsbin.list +++ b/rescue/linux/cdrom/rootsbin.list @@ -48,6 +48,7 @@ roottree/sbin/fsck.jfs roottree/sbin/fsck.msdos roottree/sbin/fsck.vfat roottree/sbin/ftp +roottree/sbin/gdb roottree/sbin/getkey roottree/sbin/grep roottree/sbin/grub @@ -109,6 +110,7 @@ roottree/sbin/more roottree/sbin/mount roottree/sbin/mt roottree/sbin/mv +roottree/sbin/nash roottree/sbin/netstat roottree/sbin/nice roottree/sbin/nm diff --git a/rescue/linux/cdrom/roottree/init b/rescue/linux/cdrom/roottree/init deleted file mode 100755 index e29be74..0000000 --- a/rescue/linux/cdrom/roottree/init +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/ash -# -# First script called by Linux when booting -# - -echo "======== init called ========" -sbin/sleep 3 -sbin/chroot . -#trap "" 1 2 3 15 -# exec >/dev/console &1 -PATH=sbin -sbin/mount -t proc none /proc -sbin/mount -t sysfs none /sys -echo Creating /dev -sbin/mount -o mode=0755 -t tmpfs none /dev -sbin/mknod /dev/console c 5 1 -sbin/mknod /dev/null c 1 3 -sbin/mknod /dev/zero c 1 5 -sbin/mkdir /dev/pts -sbin/mkdir /dev/shm -echo Starting udev -sbin/udevstart -echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug -echo "Loading scsi_mod.ko module" -sbin/insmod /lib/scsi_mod.ko -echo "Loading sd_mod.ko module" -sbin/insmod /lib/sd_mod.ko -echo "Loading aic7xxx.ko module" -sbin/insmod /lib/aic7xxx.ko -echo "Loading libata.ko module" -sbin/insmod /lib/libata.ko -echo "Loading ata_piix.ko module" -sbin/insmod /lib/ata_piix.ko -sbin/udevstart - -# CMDLINE=`cat /proc/cmdline` -# DEBUG="" -# case "$CMDLINE" in *debug*) DEBUG="yes"; ;; esac -# export DEBUG - -# Magic incantation for root to remain in ram -echo 0x0100 > /proc/sys/kernel/real-root-dev - -sbin/mount -o remount,rw /dev/root / - -# sh - -exec /sbin/init diff --git a/rescue/linux/cdrom/roottree/init.new b/rescue/linux/cdrom/roottree/init.new deleted file mode 100755 index e29be74..0000000 --- a/rescue/linux/cdrom/roottree/init.new +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/ash -# -# First script called by Linux when booting -# - -echo "======== init called ========" -sbin/sleep 3 -sbin/chroot . -#trap "" 1 2 3 15 -# exec >/dev/console &1 -PATH=sbin -sbin/mount -t proc none /proc -sbin/mount -t sysfs none /sys -echo Creating /dev -sbin/mount -o mode=0755 -t tmpfs none /dev -sbin/mknod /dev/console c 5 1 -sbin/mknod /dev/null c 1 3 -sbin/mknod /dev/zero c 1 5 -sbin/mkdir /dev/pts -sbin/mkdir /dev/shm -echo Starting udev -sbin/udevstart -echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug -echo "Loading scsi_mod.ko module" -sbin/insmod /lib/scsi_mod.ko -echo "Loading sd_mod.ko module" -sbin/insmod /lib/sd_mod.ko -echo "Loading aic7xxx.ko module" -sbin/insmod /lib/aic7xxx.ko -echo "Loading libata.ko module" -sbin/insmod /lib/libata.ko -echo "Loading ata_piix.ko module" -sbin/insmod /lib/ata_piix.ko -sbin/udevstart - -# CMDLINE=`cat /proc/cmdline` -# DEBUG="" -# case "$CMDLINE" in *debug*) DEBUG="yes"; ;; esac -# export DEBUG - -# Magic incantation for root to remain in ram -echo 0x0100 > /proc/sys/kernel/real-root-dev - -sbin/mount -o remount,rw /dev/root / - -# sh - -exec /sbin/init diff --git a/rescue/linux/cdrom/roottree/linuxrc b/rescue/linux/cdrom/roottree/linuxrc index 6a5f7c1..21415ba 100755 --- a/rescue/linux/cdrom/roottree/linuxrc +++ b/rescue/linux/cdrom/roottree/linuxrc @@ -1,21 +1,20 @@ -#!/bin/ash +#!/bin/sh # # First script called by Linux when booting # -echo "============ in linuxrc ============" + export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/initrd/bin trap "" 1 2 3 15 exec >/dev/console &1 -echo Creating /dev -mount -o mode=0755 -t tmpfs none /dev -mknod /dev/console c 5 1 -mknod /dev/null c 1 3 -mknod /dev/zero c 1 5 -mkdir /dev/pts -mkdir /dev/shm - +# echo Creating /dev +# mount -o mode=0755 -t tmpfs none /dev +# mknod /dev/console c 5 1 +# mknod /dev/null c 1 3 +# mknod /dev/zero c 1 5 +mkdir -p /dev/pts +mkdir -p /dev/shm mount -t proc none /proc mount -t sysfs /sys /sys >/dev/null 2>&1 @@ -31,9 +30,8 @@ echo -n "/sbin/hotplug" > /proc/sys/kernel/hotplug udevstart # Magic incantation for root to remain in ram -#ln -s /dev/ram0 /dev/root echo 0x0100 > /proc/sys/kernel/real-root-dev + mount -o remount,rw /dev/root / # sh -echo "================ exit linuxrc ============" exit 0 diff --git a/rescue/linux/cdrom/yaird-0.0.5.tar.gz b/rescue/linux/cdrom/yaird-0.0.5.tar.gz deleted file mode 100644 index dd3bb06..0000000 Binary files a/rescue/linux/cdrom/yaird-0.0.5.tar.gz and /dev/null differ