summaryrefslogtreecommitdiffstats
path: root/initramfs/preboot
diff options
context:
space:
mode:
authorDirk von Suchodoletz2008-05-31 19:41:03 +0200
committerDirk von Suchodoletz2008-05-31 19:41:03 +0200
commit48bb21983a43062e3f4ff1129e607f4a0decb2dd (patch)
tree9fa8d35d152091b4f30b2297bd09eb94373b7f0a /initramfs/preboot
parentNewly built busybox (linked against uclib 0.9.29) (diff)
downloadcore-48bb21983a43062e3f4ff1129e607f4a0decb2dd.tar.gz
core-48bb21983a43062e3f4ff1129e607f4a0decb2dd.tar.xz
core-48bb21983a43062e3f4ff1129e607f4a0decb2dd.zip
Renamed cdboot to more generic name "preboot" (for more information of
the idea of PreBoot check the projects Trac/Wiki) git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1822 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'initramfs/preboot')
-rwxr-xr-xinitramfs/preboot/init179
-rw-r--r--initramfs/preboot/isolinux.binbin0 -> 12331 bytes
-rwxr-xr-xinitramfs/preboot/kexec.uclib.i586bin0 -> 129292 bytes
-rwxr-xr-xinitramfs/preboot/mkcdboot94
-rwxr-xr-xinitramfs/preboot/mkcdboot.uclib92
-rwxr-xr-xinitramfs/preboot/uclib/ld-uClibc-0.9.27.sobin0 -> 16592 bytes
l---------initramfs/preboot/uclib/ld-uClibc.so.01
l---------initramfs/preboot/uclib/libc.so.01
-rw-r--r--initramfs/preboot/uclib/libcrypt-0.9.27.sobin0 -> 9040 bytes
l---------initramfs/preboot/uclib/libcrypt.so.01
-rw-r--r--initramfs/preboot/uclib/libdl-0.9.27.sobin0 -> 5960 bytes
l---------initramfs/preboot/uclib/libdl.so.01
-rw-r--r--initramfs/preboot/uclib/libm-0.9.27.sobin0 -> 48172 bytes
l---------initramfs/preboot/uclib/libm.so.01
-rw-r--r--initramfs/preboot/uclib/libnsl-0.9.27.sobin0 -> 1328 bytes
l---------initramfs/preboot/uclib/libnsl.so.01
-rw-r--r--initramfs/preboot/uclib/libresolv-0.9.27.sobin0 -> 1332 bytes
l---------initramfs/preboot/uclib/libresolv.so.01
-rw-r--r--initramfs/preboot/uclib/librt-0.9.27.sobin0 -> 1228 bytes
l---------initramfs/preboot/uclib/librt.so.01
-rw-r--r--initramfs/preboot/uclib/libthread_db-0.9.27.sobin0 -> 13684 bytes
-rw-r--r--initramfs/preboot/uclib/libuClibc-0.9.27.sobin0 -> 283908 bytes
-rw-r--r--initramfs/preboot/uclib/libutil-0.9.27.sobin0 -> 4092 bytes
l---------initramfs/preboot/uclib/libutil.so.01
24 files changed, 374 insertions, 0 deletions
diff --git a/initramfs/preboot/init b/initramfs/preboot/init
new file mode 100755
index 00000000..e8d42e27
--- /dev/null
+++ b/initramfs/preboot/init
@@ -0,0 +1,179 @@
+#!/bin/ash
+# Copyright (c) 2008 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+#
+# Main script for cd-boot demo initial ramfs - preloading environment for
+# for running OpenSLX linux stateless clients version 4 for testing
+
+fetchip () {
+# we expect to get an ip address within 10++ seconds
+( sleep 6 ; killall udhcpc >/dev/null 2>&1 ) &
+for i in 1 2 ; do
+ udhcpc -f -n -q $vci -s /usr/share/udhcpc/default.script -i $nwif 2>/dev/null
+ if grep "ip=" /tmp/ipstuff >/dev/null 2>&1 ; then
+ . /tmp/ipstuff
+ for i in $dns ; do
+ echo "nameserver $i" >> /etc/resolv.conf
+ done
+ return
+ else
+ if [ $i -eq 1 ] ; then
+ sleep 1
+ else
+ echo "Did not get any proper IP configuration"; /bin/ash
+ fi
+ fi
+done
+}
+
+#############################################################################
+# device files get their own filesystem (to be move mounted later)
+devdir="/dev"
+mount -n -t tmpfs -o 'size=25%,mode=0755' initramfsdevs ${devdir}
+NWMODULES="forcedeth e1000 e100 tg3 3c59x via-rhine r8169 pcnet32 b44 8139too"
+DEBUGLEVEL=0
+
+# create basic device files an directories in dev (for most hardware related
+# devices mdev should handle that)
+for i in "/dev/mem c 1 1" "/dev/null c 1 3" "/dev/zero c 1 5" \
+ "/dev/urandom c 1 9" "/dev/kmsg c 1 11" "/dev/tty0 c 4 0" \
+ "/dev/tty1 c 4 1" "/dev/tty2 c 4 2" "/dev/tty3 c 4 3" \
+ "/dev/tty4 c 4 4" "/dev/tty5 c 4 5" "/dev/tty6 c 4 6" \
+ "/dev/tty7 c 4 7" "/dev/tty8 c 4 8" "/dev/tty9 c 4 9" \
+ "/dev/tty10 c 4 10" "/dev/tty c 5 0" "/dev/console c 5 1" \
+ "/dev/ptmx c 5 2" "/dev/psaux c 10 1" "/dev/agpgart c 10 175" \
+ "/dev/fb0 c 29 0" "/dev/bootsplash p" "/dev/xconsole p"; do
+ mknod $i
+done
+mkdir -p ${devdir}/pts ${devdir}/shm ${devdir}/.udevdb ${devdir}/.udev
+
+# source functions file common for all distros, messages contains all error
+# and info output (for some reason the error output is not produced properly
+# - crash)
+
+# initramfs-setup configuration (common settings for all clients using a
+# certain InitRamFS generated by slxmkramfs/mkdxsinitrd)
+[ -f /etc/initramfs-setup ] && . /etc/initramfs-setup 2>/dev/null
+
+export PATH=/bin:/sbin:/usr/bin/:/usr/sbin
+
+# set a default LAN interface, might be modified for WLAN or on machines with
+# more than one ethernet card built in
+nwif="eth0"
+
+# mount the important standard directories
+[ ! -f /proc/cpuinfo ] && mount -n -t proc proc /proc
+[ ! -d /sys/class ] && mount -n -t sysfs sysfs /sys
+
+# keep quiet
+#echo "0 0 0 0" >/proc/sys/kernel/printk
+
+# fixme: shut down if script fails
+trap "exec (sleep 30; echo o>/proc/sysrq-trigger)" \
+ SIGHUP SIGINT SIGPIPE SIGTERM
+
+# if no kernel version is set, try to get it directly from /proc
+if [ -z $KERNEL ] ; then
+ KERNEL=$(cat /proc/version)
+ KERNEL=${KERNEL#*version }
+ KERNEL=${KERNEL% (*) (*}
+fi
+
+# load network adaptor modules
+for mod in ${NWMODULES}; do
+ modprobe ${MODPRV} $mod || echo "module $mod did not load for some reason"
+ usleep 10000
+done
+
+# read kernel commandline
+read KCMDLINE < /proc/cmdline
+# read the system wide machine-setup and then the kernel commandline
+for opts in ${KCMDLINE} ; do
+ case ${opts} in
+ debug)
+ DEBUGLEVEL=1;;
+ # ... or a specified debug level (will be passed to next stage)
+ debug=*)
+ DEBUGLEVEL=${opts#debug=};;
+ nbd)
+ type=nbd
+ file=irfsnbd;;
+ nfs)
+ type=nfs
+ file=irfsnfs;;
+ dnbd2)
+ type=dnbd2
+ file=irfsd2;;
+ esac
+done
+# at this point a timer should be started to ensure an automated reboot
+# or halt of the machine if SLX init does not succeed (e.g. missing kernel
+# module for the network adaptor)
+if [ "${DEBUGLEVEL}" -gt 0 ] ; then
+ cat<<EOF > /bin/watchdog
+#!/bin/ash
+echo \$$ > /tmp/watchdogpid
+[ ! -f /proc/version ] && mount -n -t proc proc /proc
+sleep 120 2> /dev/null
+echo "o" > /proc/sysrq-trigger
+EOF
+ chmod u+x /bin/watchdog
+ watchdog &
+fi
+
+if [ -n "${essid}" ] ; then
+ # WLAN setup will most probably change the network interface name stored in
+ # nwif (to wlan0 or something like that)
+ :
+else
+ # check here for the active ethernet link
+ ip link show dev eth1 >/dev/null 2>&1 && echo "more than one nw if found"
+fi
+
+# set up loopback networking and power up ethernet
+ip link set dev lo up
+ip addr add 127.0.0.1/8 dev lo
+ip link set dev $nwif up || echo "I did not find any usable network adaptor."
+
+# start udhcpc, if no lease could be optained, start debug shell
+mkdir -p /usr/share/udhcpc
+echo -e "#!/bin/ash\nunset infomsg HOME IFS mask lease interface DEBUGLEVEL \
+BOOT_IMAGE\nset >/tmp/ipstuff" >/usr/share/udhcpc/default.script
+chmod u+x /usr/share/udhcpc/default.script
+modprobe -q af_packet
+[ -n $vci ] && vci="-V $vci"
+fetchip
+ip addr add $ip/$(ipcalc -s -p $ip $subnet|sed s/.*=//) dev $nwif
+ip route add default via $router
+
+# at this point a little selection script could be downloaded, which lets the
+# user choose what kind of SLX client he wants to get
+
+# get kernel and initramfs, if something fails start debug shell
+echo "Fetching selected kernel and initial ramfs ($type) from the net ..."
+( wget -q -c -O /tmp/kernel \
+ ftp://openslx:OpenS1X@archive.ruf.uni-freiburg.de/kernel 2>/dev/null && \
+wget -q -c -O /tmp/iramfs \
+ ftp://openslx:OpenS1X@archive.ruf.uni-freiburg.de/$file 2>/dev/null ) || \
+ /bin/ash
+
+# start a debug shell if needed, else set quiet kernel parameter
+if [ "${DEBUGLEVEL}" -gt 0 ] ; then
+ /bin/ash
+else
+ quiet=quiet
+ echo -e "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
+fi
+
+# start the new kernel with initialramfs and cmdline
+echo "Booting OpenSLX client ..."
+kexec -l /tmp/kernel --initrd=/tmp/iramfs --append="ip=$ip:$siaddr:$router:$subnet\
+ file=ftp://132.230.4.4/default.tgz debug=${DEBUGLEVEL} $quiet"
+kexec -e
diff --git a/initramfs/preboot/isolinux.bin b/initramfs/preboot/isolinux.bin
new file mode 100644
index 00000000..8253549e
--- /dev/null
+++ b/initramfs/preboot/isolinux.bin
Binary files differ
diff --git a/initramfs/preboot/kexec.uclib.i586 b/initramfs/preboot/kexec.uclib.i586
new file mode 100755
index 00000000..8c65716b
--- /dev/null
+++ b/initramfs/preboot/kexec.uclib.i586
Binary files differ
diff --git a/initramfs/preboot/mkcdboot b/initramfs/preboot/mkcdboot
new file mode 100755
index 00000000..bea5f20f
--- /dev/null
+++ b/initramfs/preboot/mkcdboot
@@ -0,0 +1,94 @@
+#!/bin/bash
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+#
+# Script for generating an InitRamFS for using a demo CD/DVD (via kexec
+# mechanism) instead of PXE/linux boot functionality
+
+BUILDDIR=/tmp/slxcdboot
+SLX_SHARE_PATH=/opt/openslx/share
+NWMODULES="forcedeth e1000 e100 tg3 3c59x via-rhine r8169 pcnet32 b44 8139too"
+KERNVER=$(uname -r)
+
+rm -rf ${BUILDDIR}
+mkdir -p ${BUILDDIR}/{dev,proc,tmp,root,bin,sys,lib,etc}
+mkdir -p ${BUILDDIR}/var/{lib,run}
+ln -s /bin ${BUILDDIR}/sbin
+
+cp ${SLX_SHARE_PATH}/cdboot/init ${BUILDDIR}/init
+ chmod 755 ${BUILDDIR}/init
+
+cp ${SLX_SHARE_PATH}/busybox/busybox.i586 ${BUILDDIR}/bin/busybox
+for bbins in [ ar arping ash bunzip2 cat chmod chown chroot cp cpio cut \
+ date dd df dmesg du echo env expr fdisk free grep gunzip hwclock \
+ insmod id ip kill killall ln ls lsmod mdev mkdir \
+ mknod mkswap modprobe mount mv nice ping printf ps rdate \
+ rm rmmod sed sleep sort swapoff swapon switch_root tar test tftp \
+ time touch tr udhcpc umount uptime usleep vconfig vi wget zcat zcip; do
+ ln -fs /bin/busybox ${BUILDDIR}/bin/$bbins
+done
+cp /sbin/kexec ${BUILDDIR}/bin
+
+cp /lib/{libc.so.6,libresolv.so.2,libz.so.1,libcrypt.so.1,libnss_dns.so.2} \
+ ${BUILDDIR}/lib
+cp /lib/ld-linux.so.2 ${BUILDDIR}/lib
+
+mkdir -p ${BUILDDIR}/lib/modules/${KERNVER}/kernel/drivers/net
+cp /lib/modules/${KERNVER}/modules.dep ${BUILDDIR}/lib/modules/${KERNVER}
+for module in af_packet unix ${NWMODULES} mii ; do
+ mod=$(cd /; find "lib/modules/${KERNVER}" -name ${module}.ko 2>/dev/null)
+ mpath=${BUILDDIR}/${mod%/*}
+ mkdir -p ${mpath}
+ cp /$mod /${mpath}
+done
+
+# finally create the compressed initial ramfs cpio archive
+mkdir -p ${BUILDDIR}/iso/isolinux
+cp ${SLX_SHARE_PATH}/cdboot/isolinux.bin ${BUILDDIR}/iso/isolinux
+cp ${SLX_SHARE_PATH}/tftpboot/menu.c32 ${BUILDDIR}/iso/isolinux
+cp /boot/vmlinuz-${KERNVER} ${BUILDDIR}/iso/isolinux/vmlinuz
+pushd . > /dev/null 2>&1
+ cd ${BUILDDIR}
+ find . ! -name "*~" ! -path "./iso/*" | cpio -H newc --create | gzip -9 \
+ > ${BUILDDIR}/iso/isolinux/cdirfs
+popd > /dev/null 2>&1
+
+# starting to setup the menu driven boot chooser
+echo -e "DEFAULT menu.c32\nPROMPT 0\nMENU WIDTH 78\nMENU MARGIN 9\n\
+MENU ROWS 9\nMENU TABMSGROW 15\nMENU CMDLINEROW 15\nMENU ENDROW -1\n\
+MENU TIMEOUTROW 15\nMENU HELPMSGROW 15\nMENU HELPMSGENDROW -1\n\
+MENU HSHIFT 0\nMENU VSHIFT 5\n\nMENU TITLE OpenSLX PreBoot ISO\
+" > ${BUILDDIR}/iso/isolinux/isolinux.cfg
+for i in NBD NFS DNBD2 ; do
+ echo -e "LABEL OpenSLX\n\tMENU LABEL OpenSLX Client with $i as RootFS" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+ echo -e "\tTEXT HELP\n\tYou should have DHCP running ...\n\tFor more \
+information on this project consult the homepage on\n\t\t\
+http://www.openslx.org\n\tENDTEXT" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+ type=$(echo $i|tr [:upper:] [:lower:])
+ echo -e "\tKERNEL vmlinuz\n\tAPPEND initrd=cdirfs $type quiet" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+done
+
+# write some info, if CD/DVD is still in drive
+echo -e "You seem to have the OpenSLX network demo CD/DVD still in your \
+optical\ndrive! This is not required. You may safely remove the medium \
+just\nafter the first kernel/initramfs is loaded ...\n\nIf you have any \
+feedback please consult http://openslx.org/feedback\nand send your comments \
+to feedback@openslx.org!" > ${BUILDDIR}/iso/README
+echo -e "This package is free software distributed under the GPL version 2.\
+\nSee http://openslx.org/COPYING" > ${BUILDDIR}/iso/LICENSE
+
+# produce the iso image
+mkisofs -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -r -J -l \
+ -boot-info-table -o OpenSLX.iso -joliet-long -publisher "OpenSLX \
+Project - http://www.openslx.org" -p "OpenSLX Project - \
+openslx-devel@openslx.org" -relaxed-filenames -V "OpenSLX BootCD" \
+ -volset "OpenSLX Project - PreBoot CD for non PXE/TFTP start of a \
+Linux Stateless Client" -c isolinux/boot.cat ${BUILDDIR}/iso
diff --git a/initramfs/preboot/mkcdboot.uclib b/initramfs/preboot/mkcdboot.uclib
new file mode 100755
index 00000000..2ae16809
--- /dev/null
+++ b/initramfs/preboot/mkcdboot.uclib
@@ -0,0 +1,92 @@
+#!/bin/bash
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found at http://openslx.org
+#
+# Script for generating an uClib based InitRamFS for using a demo CD/DVD
+# (via kexec mechanism) instead of PXE/linux boot functionality
+
+BUILDDIR=/tmp/slxcdboot
+SLX_SHARE_PATH=/opt/openslx/share
+NWMODULES="forcedeth e1000 e100 tg3 3c59x via-rhine r8169 pcnet32 b44 8139too"
+KERNVER=$(uname -r)
+
+rm -rf ${BUILDDIR}
+mkdir -p ${BUILDDIR}/{dev,proc,tmp,root,bin,sys,lib,etc}
+mkdir -p ${BUILDDIR}/var/{lib,run}
+ln -s /bin ${BUILDDIR}/sbin
+
+cp ${SLX_SHARE_PATH}/cdboot/init ${BUILDDIR}/init
+ chmod 755 ${BUILDDIR}/init
+
+cp ${SLX_SHARE_PATH}/busybox/busybox.uclib.i586 ${BUILDDIR}/bin/busybox
+for bbins in [ ar arping ash bunzip2 cat chmod chown chroot cp cpio cut \
+ date dd df dmesg du echo env expr fdisk free grep gunzip hwclock \
+ insmod id ip ipcalc kill killall ln ls lsmod mdev mkdir \
+ mknod mkswap modprobe mount mv nice ping printf ps rdate \
+ rm rmmod sed sleep sort swapoff swapon switch_root tar test tftp \
+ time touch tr udhcpc umount uptime usleep vconfig vi wget zcat zcip; do
+ ln -fs /bin/busybox ${BUILDDIR}/bin/$bbins
+done
+cp ${SLX_SHARE_PATH}/cdboot/kexec.uclib.i586 ${BUILDDIR}/bin/kexec
+
+cp -a ${SLX_SHARE_PATH}/cdboot/uclib/* ${BUILDDIR}/lib
+
+mkdir -p ${BUILDDIR}/lib/modules/${KERNVER}/kernel/drivers/net
+cp /lib/modules/${KERNVER}/modules.dep ${BUILDDIR}/lib/modules/${KERNVER}
+for module in af_packet unix ${NWMODULES} mii ; do
+ mod=$(cd /; find "lib/modules/${KERNVER}" -name ${module}.ko 2>/dev/null)
+ mpath=${BUILDDIR}/${mod%/*}
+ mkdir -p ${mpath}
+ cp /$mod /${mpath}
+done
+
+# finally create the compressed initial ramfs cpio archive
+mkdir -p ${BUILDDIR}/iso/isolinux
+cp ${SLX_SHARE_PATH}/cdboot/isolinux.bin ${BUILDDIR}/iso/isolinux
+cp ${SLX_SHARE_PATH}/tftpboot/menu.c32 ${BUILDDIR}/iso/isolinux
+cp /boot/vmlinuz-${KERNVER} ${BUILDDIR}/iso/isolinux/vmlinuz
+pushd . > /dev/null 2>&1
+ cd ${BUILDDIR}
+ find . ! -name "*~" ! -path "./iso/*" | cpio -H newc --create | gzip -9 \
+ > ${BUILDDIR}/iso/isolinux/cdirfs
+popd > /dev/null 2>&1
+
+# starting to setup the menu driven boot chooser
+echo -e "DEFAULT menu.c32\nPROMPT 0\nMENU WIDTH 78\nMENU MARGIN 9\n\
+MENU ROWS 9\nMENU TABMSGROW 15\nMENU CMDLINEROW 15\nMENU ENDROW -1\n\
+MENU TIMEOUTROW 15\nMENU HELPMSGROW 15\nMENU HELPMSGENDROW -1\n\
+MENU HSHIFT 0\nMENU VSHIFT 5\n\nMENU TITLE OpenSLX PreBoot ISO\
+" > ${BUILDDIR}/iso/isolinux/isolinux.cfg
+for i in NBD NFS DNBD2 ; do
+ echo -e "LABEL OpenSLX\n\tMENU LABEL OpenSLX Client with $i as RootFS" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+ echo -e "\tTEXT HELP\n\tYou should have DHCP running ...\n\tFor more \
+information on this project consult the homepage on\n\t\t\
+http://www.openslx.org\n\tENDTEXT" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+ type=$(echo $i|tr [:upper:] [:lower:])
+ echo -e "\tKERNEL vmlinuz\n\tAPPEND initrd=cdirfs $type quiet" \
+ >> ${BUILDDIR}/iso/isolinux/isolinux.cfg
+done
+
+# write some info, if CD/DVD is still in drive
+echo -e "You seem to have the OpenSLX network demo CD/DVD still in your \
+optical\ndrive! This is not required. You may safely remove the medium \
+just\nafter the first kernel/initramfs is loaded ...\n\nIf you have any \
+feedback please consult http://openslx.org/feedback\nand send your comments \
+to feedback@openslx.org!" > ${BUILDDIR}/iso/README
+echo -e "This package is free software distributed under the GPL version 2.\
+\nSee http://openslx.org/COPYING" > ${BUILDDIR}/iso/LICENSE
+
+# produce the iso image
+mkisofs -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -r -J -l \
+ -boot-info-table -o OpenSLX.iso -joliet-long -publisher "OpenSLX \
+Project - http://www.openslx.org" -p "OpenSLX Project - \
+openslx-devel@openslx.org" -relaxed-filenames -V "OpenSLX BootCD" \
+ -volset "OpenSLX Project - PreBoot CD for non PXE/TFTP start of a \
+Linux Stateless Client" -c isolinux/boot.cat ${BUILDDIR}/iso
diff --git a/initramfs/preboot/uclib/ld-uClibc-0.9.27.so b/initramfs/preboot/uclib/ld-uClibc-0.9.27.so
new file mode 100755
index 00000000..9ad7e98b
--- /dev/null
+++ b/initramfs/preboot/uclib/ld-uClibc-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/ld-uClibc.so.0 b/initramfs/preboot/uclib/ld-uClibc.so.0
new file mode 120000
index 00000000..e0849821
--- /dev/null
+++ b/initramfs/preboot/uclib/ld-uClibc.so.0
@@ -0,0 +1 @@
+ld-uClibc-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libc.so.0 b/initramfs/preboot/uclib/libc.so.0
new file mode 120000
index 00000000..9c0dc22b
--- /dev/null
+++ b/initramfs/preboot/uclib/libc.so.0
@@ -0,0 +1 @@
+libuClibc-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libcrypt-0.9.27.so b/initramfs/preboot/uclib/libcrypt-0.9.27.so
new file mode 100644
index 00000000..8d18cb75
--- /dev/null
+++ b/initramfs/preboot/uclib/libcrypt-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libcrypt.so.0 b/initramfs/preboot/uclib/libcrypt.so.0
new file mode 120000
index 00000000..baac9b0c
--- /dev/null
+++ b/initramfs/preboot/uclib/libcrypt.so.0
@@ -0,0 +1 @@
+libcrypt-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libdl-0.9.27.so b/initramfs/preboot/uclib/libdl-0.9.27.so
new file mode 100644
index 00000000..6ca4d9e7
--- /dev/null
+++ b/initramfs/preboot/uclib/libdl-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libdl.so.0 b/initramfs/preboot/uclib/libdl.so.0
new file mode 120000
index 00000000..64571159
--- /dev/null
+++ b/initramfs/preboot/uclib/libdl.so.0
@@ -0,0 +1 @@
+libdl-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libm-0.9.27.so b/initramfs/preboot/uclib/libm-0.9.27.so
new file mode 100644
index 00000000..30e9c358
--- /dev/null
+++ b/initramfs/preboot/uclib/libm-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libm.so.0 b/initramfs/preboot/uclib/libm.so.0
new file mode 120000
index 00000000..25b1d11e
--- /dev/null
+++ b/initramfs/preboot/uclib/libm.so.0
@@ -0,0 +1 @@
+libm-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libnsl-0.9.27.so b/initramfs/preboot/uclib/libnsl-0.9.27.so
new file mode 100644
index 00000000..40afd103
--- /dev/null
+++ b/initramfs/preboot/uclib/libnsl-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libnsl.so.0 b/initramfs/preboot/uclib/libnsl.so.0
new file mode 120000
index 00000000..c783c65a
--- /dev/null
+++ b/initramfs/preboot/uclib/libnsl.so.0
@@ -0,0 +1 @@
+libnsl-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libresolv-0.9.27.so b/initramfs/preboot/uclib/libresolv-0.9.27.so
new file mode 100644
index 00000000..11285423
--- /dev/null
+++ b/initramfs/preboot/uclib/libresolv-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libresolv.so.0 b/initramfs/preboot/uclib/libresolv.so.0
new file mode 120000
index 00000000..d34218a9
--- /dev/null
+++ b/initramfs/preboot/uclib/libresolv.so.0
@@ -0,0 +1 @@
+libresolv-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/librt-0.9.27.so b/initramfs/preboot/uclib/librt-0.9.27.so
new file mode 100644
index 00000000..1558117a
--- /dev/null
+++ b/initramfs/preboot/uclib/librt-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/librt.so.0 b/initramfs/preboot/uclib/librt.so.0
new file mode 120000
index 00000000..5e13a1b1
--- /dev/null
+++ b/initramfs/preboot/uclib/librt.so.0
@@ -0,0 +1 @@
+librt-0.9.27.so \ No newline at end of file
diff --git a/initramfs/preboot/uclib/libthread_db-0.9.27.so b/initramfs/preboot/uclib/libthread_db-0.9.27.so
new file mode 100644
index 00000000..f5fecbf7
--- /dev/null
+++ b/initramfs/preboot/uclib/libthread_db-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libuClibc-0.9.27.so b/initramfs/preboot/uclib/libuClibc-0.9.27.so
new file mode 100644
index 00000000..963dfd64
--- /dev/null
+++ b/initramfs/preboot/uclib/libuClibc-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libutil-0.9.27.so b/initramfs/preboot/uclib/libutil-0.9.27.so
new file mode 100644
index 00000000..8b39886d
--- /dev/null
+++ b/initramfs/preboot/uclib/libutil-0.9.27.so
Binary files differ
diff --git a/initramfs/preboot/uclib/libutil.so.0 b/initramfs/preboot/uclib/libutil.so.0
new file mode 120000
index 00000000..a6852d1f
--- /dev/null
+++ b/initramfs/preboot/uclib/libutil.so.0
@@ -0,0 +1 @@
+libutil-0.9.27.so \ No newline at end of file