Browse Source

Stefan Fiedler:


			
			
				rocklinux
			
			
		
Stefan Fiedler 17 years ago
parent
commit
617a54308c
2 changed files with 68 additions and 61 deletions
  1. +57
    -53
      target/bootdisk/linuxrc.sh
  2. +11
    -8
      target/bootdisk/linuxrc2.sh

+ 57
- 53
target/bootdisk/linuxrc.sh

@ -30,46 +30,52 @@ mod_load_info () { # {{{
fi fi
} # }}} } # }}}
doboot() { # {{{ doboot() { # {{{
if ! mkdir /mnt_root/old_root ; then
if ! mkdir -p /mnt_root/old_root ; then
echo "Can't create /mnt_root/old_root" echo "Can't create /mnt_root/old_root"
exit_linuxrc=0
return 1
fi fi
if [ ! -f /mnt_root/sbin/init ] ; then if [ ! -f /mnt_root/sbin/init ] ; then
echo "Can't find /mnt_root/sbin/init!" echo "Can't find /mnt_root/sbin/init!"
exit_linuxrc=0
return 1
fi fi
if [ ${exit_linuxrc} -ne 0 ] ; then
if ! pivot_root "/mnt_root" "/mnt_root/old_root" ; then
echo "Can't call pivot_root"
exit_linuxrc=0
return
fi
# pivot_root may or may not change the PWD and root of the
# caller, so we change into the new root directory first.
cd /mnt_root
if ! pivot_root . "/mnt_root/old_root" ; then
echo "Can't call pivot_root"
cd / cd /
return 1
fi
if ! mount --move /old_root/dev /dev ; then
echo "Can't remount /old_root/dev as /dev"
fi
if ! mount --move /old_root/dev /dev ; then
echo "Can't remount /old_root/dev as /dev"
fi
if ! mount --move /old_root/proc /proc ; then
echo "Can't remount /old_root/proc as /proc"
fi
if ! mount --move /old_root/proc /proc ; then
echo "Can't remount /old_root/proc as /proc"
fi
if [[ "$( < /proc/version )" == "Linux version 2.6."* ]] ; then
if ! mount --move /old_root/sys /sys ; then if ! mount --move /old_root/sys /sys ; then
echo "Can't remount /old_root/sys as /sys" echo "Can't remount /old_root/sys as /sys"
fi fi
fi
if ! umount /old_root/tmp ; then
echo "Can't umount /old_root/tmp"
fi
if ! umount /old_root/tmp ; then
echo "Can't umount /old_root/tmp"
fi
else
rmdir /mnt_root/old_root || echo "Can't remove /mnt_root/old_root"
sed -e "s, /mnt_root , / ," /old_root/etc/mtab > /etc/mtab
umount /mnt_root || echo "Can't umount /mnt_root"
rmdir /mnt_root || echo "Can't remove /mnt_root"
fi
# Kill udevd so /old_root can be unmounted.
killall udevd
exec chroot . sh -c "exec /sbin/init" <dev/console >dev/console 2>&1
echo "Can't exec /sbin/init!"
return 1
} # }}} } # }}}
trymount() { # {{{ trymount() { # {{{
source=${1} source=${1}
@ -109,15 +115,14 @@ EOF
echo "[ ${url} ]" echo "[ ${url} ]"
export ROCK_INSTALL_SOURCE_URL=${baseurl} export ROCK_INSTALL_SOURCE_URL=${baseurl}
exit_linuxrc=1;
if ! mkdir /mnt_root ; then
if ! mkdir -p /mnt_root ; then
echo "Can't create /mnt_root" echo "Can't create /mnt_root"
exit_linuxrc=0
return 1
fi fi
if ! mount -t tmpfs -O ${TMPFS_OPTIONS} none /mnt_root ; then
if ! mount -t tmpfs -O ${TMPFS_OPTIONS} tmpfs /mnt_root ; then
echo "Can't mount /mnt_root" echo "Can't mount /mnt_root"
exit_linuxrc=0
return 1
fi fi
wget -O - ${url} | tar ${STAGE_2_COMPRESS_ARG} -C /mnt_root -xf - wget -O - ${url} | tar ${STAGE_2_COMPRESS_ARG} -C /mnt_root -xf -
@ -294,44 +299,40 @@ EOF
filename="${text}" filename="${text}"
fi fi
exit_linuxrc=1
echo "Using ${devicefile}:${filename}." echo "Using ${devicefile}:${filename}."
if ! mkdir -p /mnt_source ; then if ! mkdir -p /mnt_source ; then
echo "Can't create /mnt_source" echo "Can't create /mnt_source"
exit_linuxrc=0
return 1
fi fi
if ! mount ${mountopts} ${devicefile} "/mnt_source" ; then if ! mount ${mountopts} ${devicefile} "/mnt_source" ; then
echo "Can't mount /mnt_source" echo "Can't mount /mnt_source"
exit_linuxrc=0
return 1
fi fi
if ! mkdir -p /mnt_root ; then if ! mkdir -p /mnt_root ; then
echo "Can't create /mnt_root" echo "Can't create /mnt_root"
exit_linuxrc=0
return 1
fi fi
if ! mount -t tmpfs -o ${TMPFS_OPTIONS} tmpfs /mnt_root ; then if ! mount -t tmpfs -o ${TMPFS_OPTIONS} tmpfs /mnt_root ; then
echo "Can't mount tmpfs on /mnt_root" echo "Can't mount tmpfs on /mnt_root"
exit_linuxrc=0
return 1
fi fi
echo "Extracting 2nd stage filesystem to ram ..." echo "Extracting 2nd stage filesystem to ram ..."
if ! tar ${STAGE_2_COMPRESS_ARG} -C /mnt_root -xf /mnt_source/${filename} ; then if ! tar ${STAGE_2_COMPRESS_ARG} -C /mnt_root -xf /mnt_source/${filename} ; then
echo "Can't extract /mnt/source/${filename}" echo "Can't extract /mnt/source/${filename}"
exit_linuxrc=0
return 1 return 1
fi fi
if ! umount "/mnt_source" ; then if ! umount "/mnt_source" ; then
echo "Can't umount /mnt_source" echo "Can't umount /mnt_source"
exit_linuxrc=0
fi fi
if ! rmdir "/mnt_source" ; then if ! rmdir "/mnt_source" ; then
echo "Can't remove /mnt_source" echo "Can't remove /mnt_source"
exit_linuxrc=0
fi fi
export ROCK_INSTALL_SOURCE_DEV=${devicefile} export ROCK_INSTALL_SOURCE_DEV=${devicefile}
@ -401,31 +402,38 @@ emit_udev_events() { # {{{
} # }}} } # }}}
input=1 input=1
exit_linuxrc=0
[ -z "${autoboot}" ] && autoboot=0 [ -z "${autoboot}" ] && autoboot=0
# mount / / -o remount,rw || echo "Can't remount / read-/writeable" # mount / / -o remount,rw || echo "Can't remount / read-/writeable"
# mount / / -o remount,rw || echo "Can't remount / read-/writeable (for mount log)" # mount / / -o remount,rw || echo "Can't remount / read-/writeable (for mount log)"
mount -t tmpfs tmpfs /tmp -o ${TMPFS_OPTIONS} || echo "Can't mount a tmpfs on /tmp" mount -t tmpfs tmpfs /tmp -o ${TMPFS_OPTIONS} || echo "Can't mount a tmpfs on /tmp"
mount -t proc proc /proc || echo "Can't mount proc on /proc!" mount -t proc proc /proc || echo "Can't mount proc on /proc!"
mount -t sysfs sysfs /sys || echo "Can't mount sysfs on /sys!"
mount -t tmpfs tmpfs /dev || echo "Can't mount a tmpfs on /dev!"
/sbin/depmod -ae /sbin/depmod -ae
cp -r /lib/udev/devices/* /dev
case "$( < /proc/version )" in
"Linux version 2.4."*)
mount -t devfs devfs /dev || echo "Can't mount devfs on /dev!" ;;
"Linux version 2.6."*)
mount -t sysfs sysfs /sys || echo "Can't mount sysfs on /sys!"
echo "" > /proc/sys/kernel/hotplug
/sbin/udevd --daemon
if type -p udevd > /dev/null ; then
mount -t tmpfs tmpfs /dev || echo "Can't mount a tmpfs on /dev!"
# create nodes for devices already in kernel
emit_udev_events
cp -r /lib/udev/devices/* /dev
mod_load_info
echo "" > /proc/sys/kernel/hotplug
/sbin/udevd --daemon
# some devices (scsi...) need time to settle...
echo "Waiting for devices to settle..."
sleep 5
# create nodes for devices already in kernel
emit_udev_events
mod_load_info
# some devices (scsi...) need time to settle...
echo "Waiting for devices to settle..."
sleep 5
fi ;;
esac
ip addr add 127.0.0.1 dev lo ip addr add 127.0.0.1 dev lo
ip link set lo up ip link set lo up
@ -445,7 +453,7 @@ you will not spend much time here. Just load your SCSI and networking
drivers (if needed) and configure the installation source so the drivers (if needed) and configure the installation source so the
2nd stage boot system can be loaded and you can start the installation. 2nd stage boot system can be loaded and you can start the installation.
EOF EOF
while [ ${exit_linuxrc} -eq 0 ] ; do
while : ; do
cat <<EOF cat <<EOF
0. Load 2nd stage system from cdrom or floppy drive 0. Load 2nd stage system from cdrom or floppy drive
1. Load 2nd stage system from any device 1. Load 2nd stage system from any device
@ -499,7 +507,3 @@ EOF
echo "No such option present!" echo "No such option present!"
esac esac
done done
exec /sbin/init
echo "Can't start /sbin/init!! Life sucks.\n\n"

+ 11
- 8
target/bootdisk/linuxrc2.sh

@ -1,20 +1,23 @@
#!/bin/sh #!/bin/sh
export PATH="/sbin:/bin:/usr/sbin:/usr/bin" export PATH="/sbin:/bin:/usr/sbin:/usr/bin"
if type -p gzip > /dev/null ; then
umount -d /old_root ; rmdir /old_root
if [ -d /old_root ] && umount /old_root ; then
rmdir /old_root
else else
PATH="$PATH:/old_root/bin"
for x in /old_root/* ; do
rmdir $x 2> /dev/null || rm -f $x 2> /dev/null
done
echo "Can't umount /old_root"
fi fi
grep -v "^rootfs " /proc/mounts > /etc/mtab
freeramdisk /dev/rd/* 2> /dev/null
mkdir -p /lib/modules/$( uname -r ) mkdir -p /lib/modules/$( uname -r )
echo -n >> /lib/modules/$( uname -r )/modules.dep echo -n >> /lib/modules/$( uname -r )/modules.dep
if [[ "$( < /proc/version)" == "Linux version 2.6."* ]] \
&& type -p udevd > /dev/null ; then
/sbin/udevd --daemon
udevtrigger
udevsettle
fi
setterm -blank 0 -powersave off -powerdown 0 setterm -blank 0 -powersave off -powerdown 0
echo echo

Loading…
Cancel
Save