#!/bin/sh set -e umask 002 # Rootpath of initrd hierachy export ROOT=/var/tmp/initrd # Paths of source directories to uClibc, BusyBox, e2fsprogs, ... export UCLIBC_SRC=uClibc export BUSYBOX_SRC=busybox-0.51 export DUMP_SRC=dump-0.4b21 export E2FSPROGS_SRC=e2fsprogs-1.19 export MODUTILS_SRC=modutils-2.4.6 export RAIDTOOLS_SRC=raidtools-0.90 export UTIL_LINUX_SRC=util-linux-2.10r export LDCONFIG="chroot $ROOT /sbin/ldconfig -v" ######################################################################## # uClibc # ######################################################################## # Patch uClibc patch_uClibc() { : No patch required } # Build the complete uClibc environment build_uClibc() { make -C $UCLIBC_SRC INSTALL_DIR=/ DEVEL=false \ DYNAMIC_LINKER=/lib/ld-linux-uclibc.so.0 all } # Install uClibc environment (including ldconfig) install_uClibc() { make -C $UCLIBC_SRC INSTALL_DIR=$ROOT DEVEL=false \ DYNAMIC_LINKER=/lib/ld-linux-uclibc.so.0 install # Currently, make install overwrites /etc/ld.so.cache on the build system, # which isn't really what we want. ldconfig install -d $ROOT/usr/lib $ROOT/etc $ROOT/sbin install -s -m 755 $UCLIBC_SRC/ld.so-1/util/ldconfig $ROOT/sbin $LDCONFIG } # Remove any uClibc stuff not needed for runtime cleanup_uClibc() { set /bin/addr2line /bin/ar /bin/as /bin/cc /bin/cpp /bin/gasp /bin/gcc \ /bin/ld /bin/nm /bin/objcopy /bin/objdump /bin/ranlib /bin/readelf \ /bin/size /bin/strings /bin/strip /sbin/ldconfig for i; do rm -f $ROOT/$i; done rm -f $ROOT/usr/bin/i386-uclibc-* rm -rf $ROOT/include rm -f $ROOT/lib/*.o $ROOT/lib/*.a } ######################################################################## # BusyBox # ######################################################################## patch_BusyBox() { patch -d $BUSYBOX_SRC -E -p1 << 'EOF' diff -rNu ../busybox-0.51/Config.h ./Config.h --- ../busybox-0.51/Config.h Tue Apr 10 00:48:11 2001 +++ ./Config.h Tue May 8 21:34:32 2001 @@ -15,13 +15,13 @@ #define BB_CHROOT #define BB_CHVT #define BB_CLEAR -//#define BB_CMP +#define BB_CMP #define BB_CP_MV #define BB_CUT #define BB_DATE //#define BB_DC #define BB_DD -//#define BB_DEALLOCVT +#define BB_DEALLOCVT #define BB_DF #define BB_DIRNAME #define BB_DMESG @@ -33,29 +33,29 @@ //#define BB_DUMPKMAP #define BB_ECHO #define BB_ENV -//#define BB_EXPR +#define BB_EXPR //#define BB_FBSET //#define BB_FDFLUSH #define BB_FIND #define BB_FREE -//#define BB_FREERAMDISK +#define BB_FREERAMDISK //#define BB_FSCK_MINIX -//#define BB_GETOPT +#define BB_GETOPT #define BB_GREP #define BB_GUNZIP #define BB_GZIP #define BB_HALT #define BB_HEAD -//#define BB_HOSTID -//#define BB_HOSTNAME +#define BB_HOSTID +#define BB_HOSTNAME #define BB_ID -//#define BB_IFCONFIG +#define BB_IFCONFIG #define BB_INIT //#define BB_INSMOD #define BB_KILL #define BB_KILLALL #define BB_KLOGD -//#define BB_LENGTH +#define BB_LENGTH #define BB_LN //#define BB_LOADACM //#define BB_LOADFONT @@ -63,53 +63,53 @@ #define BB_LOGGER //#define BB_LOGNAME #define BB_LS -#define BB_LSMOD -//#define BB_MAKEDEVS -//#define BB_MD5SUM +//#define BB_LSMOD +#define BB_MAKEDEVS +#define BB_MD5SUM #define BB_MKDIR -//#define BB_MKFIFO +#define BB_MKFIFO //#define BB_MKFS_MINIX #define BB_MKNOD #define BB_MKSWAP -//#define BB_MKTEMP -//#define BB_NC +#define BB_MKTEMP +#define BB_NC #define BB_MORE #define BB_MOUNT -//#define BB_MT -//#define BB_NSLOOKUP -//#define BB_PING -//#define BB_PIVOT_ROOT +#define BB_MT +#define BB_NSLOOKUP +#define BB_PING +#define BB_PIVOT_ROOT #define BB_POWEROFF -//#define BB_PRINTF +#define BB_PRINTF #define BB_PS #define BB_PWD //#define BB_RDATE -//#define BB_READLINK +#define BB_READLINK #define BB_REBOOT -//#define BB_RENICE +#define BB_RENICE #define BB_RESET #define BB_RM #define BB_RMDIR //#define BB_RMMOD -//#define BB_ROUTE +#define BB_ROUTE //#define BB_RPMUNPACK #define BB_SED //#define BB_SETKEYCODES #define BB_SH #define BB_SLEEP #define BB_SORT -//#define BB_STTY +#define BB_STTY #define BB_SWAPONOFF #define BB_SYNC #define BB_SYSLOGD #define BB_TAIL #define BB_TAR -//#define BB_TEE -//#define BB_TEST -//#define BB_TELNET -//#define BB_TFTP +#define BB_TEE +#define BB_TEST +#define BB_TELNET +#define BB_TFTP #define BB_TOUCH -//#define BB_TR +#define BB_TR #define BB_TRUE_FALSE #define BB_TTY //#define BB_UUENCODE @@ -119,11 +119,11 @@ #define BB_UNAME //#define BB_UPDATE #define BB_UPTIME -//#define BB_USLEEP -//#define BB_VI -//#define BB_WATCHDOG +#define BB_USLEEP +#define BB_VI +#define BB_WATCHDOG #define BB_WC -//#define BB_WGET +#define BB_WGET #define BB_WHICH #define BB_WHOAMI #define BB_XARGS @@ -189,19 +189,19 @@ #define BB_FEATURE_USE_INITTAB // //Enable init being called as /linuxrc -#define BB_FEATURE_LINUXRC +//#define BB_FEATURE_LINUXRC // //Have init enable core dumping for child processes (for debugging only) //#define BB_FEATURE_INIT_COREDUMPS // //Make sure nothing is printed to the console on boot -//#define BB_FEATURE_EXTRA_QUIET +#define BB_FEATURE_EXTRA_QUIET // // enable syslogd -R remotehost #define BB_FEATURE_REMOTE_LOG // // enable syslogd -C -//#define BB_FEATURE_IPC_SYSLOG +#define BB_FEATURE_IPC_SYSLOG // //Simple tail implementation (2.34k vs 3k for the full one). //Both provide 'tail -f', but this cuts out -c, -q, -s, and -v. @@ -277,33 +277,33 @@ //#define BB_FEATURE_FBSET_READMODE // // Support insmod/lsmod/rmmod for post 2.1 kernels -//#define BB_FEATURE_NEW_MODULE_INTERFACE +#define BB_FEATURE_NEW_MODULE_INTERFACE // // Support insmod/lsmod/rmmod for pre 2.1 kernels //#define BB_FEATURE_OLD_MODULE_INTERFACE // // Support module version checking -//#define BB_FEATURE_INSMOD_VERSION_CHECKING +#define BB_FEATURE_INSMOD_VERSION_CHECKING // // Support for Minix filesystem, version 2 //#define BB_FEATURE_MINIX2 // // Enable ifconfig status reporting output -- this feature adds 12k. -//#define BB_FEATURE_IFCONFIG_STATUS +#define BB_FEATURE_IFCONFIG_STATUS // // Enable ifconfig slip-specific options "keepalive" and "outfill" //#define BB_FEATURE_IFCONFIG_SLIP // // Enable ifconfig options "mem_start", "io_addr", and "irq". -//#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ +#define BB_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ // // Enable ifconfig option "hw". Currently works for only with "ether". -//#define BB_FEATURE_IFCONFIG_HW +#define BB_FEATURE_IFCONFIG_HW // // Enable busybox --install [-s] // to create links (or symlinks) for all the commands that are // compiled into the binary. (needs /proc filesystem) -// #define BB_FEATURE_INSTALLER +#define BB_FEATURE_INSTALLER // // Enable a nifty progress meter in wget (adds just under 2k) #define BB_FEATURE_WGET_STATUSBAR @@ -329,10 +329,10 @@ #define BB_FEATURE_FIND_MTIME // // Support for the -A -B and -C context flags in grep -//#define BB_FEATURE_GREP_CONTEXT +#define BB_FEATURE_GREP_CONTEXT // // Support for the EGREP applet (alias to the grep applet) -//#define BB_FEATURE_GREP_EGREP_ALIAS +#define BB_FEATURE_GREP_EGREP_ALIAS // // Tell tftp what commands that should be supported. #define BB_FEATURE_TFTP_PUT EOF } build_BusyBox() { make -C $BUSYBOX_SRC CROSS=$ROOT/bin/ } install_BusyBox() { make -C $BUSYBOX_SRC PREFIX=$ROOT install-hardlinks } cleanup_BusyBox() { : } ######################################################################## # e2fsprogs # ######################################################################## patch_e2fsprogs() { : No patch required } build_e2fsprogs() { ( cd $E2FSPROGS_SRC ./configure --prefix=$ROOT \ --with-root-prefix=$ROOT \ --with-cc=$ROOT/bin/gcc \ --with-ccopts=-Os \ --with-linker=$ROOT/bin/ld \ --with-ldopts=-s \ --enable-dynamic-e2fsck --enable-elf-shlibs make all ) } install_e2fsprogs() { make -C $E2FSPROGS_SRC install install-libs ( cd $ROOT/lib ln -sf libcom_err.so.2 libcom_err.so ln -sf libe2p.so.2 libe2p.so ln -sf libext2fs.so.2 libext2fs.so ln -sf libss.so.2 libss.so ln -sf libuuid.so.1 libuuid.so ) $LDCONFIG } cleanup_e2fsprogs() { rm -rf $ROOT/include $ROOT/info $ROOT/man $ROOT/share rm -f $ROOT/bin/mk_cmds $ROOT/bin/compile_et rm -f $ROOT/lib/*.a } ######################################################################## # dump/restore # ######################################################################## patch_dump() { patch -d $DUMP_SRC -E -p1 << 'EOF' diff -rNu ../dump-0.4b21/MCONFIG.in ./MCONFIG.in --- ../dump-0.4b21/MCONFIG.in Wed Apr 25 22:00:15 2001 +++ ./MCONFIG.in Sun May 6 20:13:51 2001 @@ -24,8 +24,8 @@ INSTALLBIN= $(INSTALL) -o $(BINOWNER) -g $(BINGRP) -m $(BINMODE) INSTALLMAN= $(INSTALL) -o $(MANOWNER) -g $(MANGRP) -m $(MANMODE) -BINDIR= /sbin -MANDIR= /usr/man/man8 +BINDIR= @prefix@/sbin +MANDIR= @prefix@/man/man8 DUMPDATESPATH= @DUMPDATESPATH@ # diff -rNu ../dump-0.4b21/common/dumprmt.c ./common/dumprmt.c --- ../dump-0.4b21/common/dumprmt.c Wed Apr 25 22:00:15 2001 +++ ./common/dumprmt.c Sun May 6 20:04:02 2001 @@ -110,12 +110,8 @@ static void rmtgets __P((char *, size_t)); static int rmtreply __P((const char *)); static int piped_child __P((const char **command)); -#ifdef KERBEROS -int krcmd __P((char **, int /*u_short*/, char *, char *, int *, char *)); -#endif static int errfd = -1; -extern int dokerberos; extern int ntrec; /* blocking factor on tape */ #ifndef errno extern int errno; @@ -164,7 +160,6 @@ { register char *cp; register const char *rmt; - static struct servent *sp = NULL; static struct passwd *pwd = NULL; const char *tuser; const char *rsh; @@ -174,13 +169,10 @@ char *rmtpeercopy; rsh = getenv("RSH"); - - if (!rsh && sp == NULL) { - sp = getservbyname(dokerberos ? "kshell" : "shell", "tcp"); - if (sp == NULL) - errx(1, "%s/tcp: unknown service", - dokerberos ? "kshell" : "shell"); + if(!rsh) { + rsh = "rsh"; } + if (pwd == NULL) { pwd = getpwuid(getuid()); if (pwd == NULL) @@ -198,7 +190,7 @@ rmt = _PATH_RMT; msg(""); - if (rsh) { + { const char *rshcmd[6]; rshcmd[0] = rsh; rshcmd[1] = rmtpeer; @@ -217,41 +209,6 @@ msg("cannot open connection\n"); return 0; } - } - else { - /* Copy rmtpeer to rmtpeercopy to ignore the - return value from rcmd. I cannot figure if - this is this a bug in rcmd or in my code... */ - rmtpeercopy = (char *)rmtpeer; -#ifdef KERBEROS - if (dokerberos) - tormtape = krcmd(&rmtpeercopy, sp->s_port, tuser, rmt, &errfd, - (char *)0); - else -#endif - tormtape = rcmd(&rmtpeercopy, (u_short)sp->s_port, pwd->pw_name, - tuser, rmt, &errfd); - if (tormtape < 0) { - msg("login to %s as %s failed.\n", rmtpeer, tuser); - return 0; - } - size = ntrec * TP_BSIZE; - if (size > 60 * 1024) /* XXX */ - size = 60 * 1024; - /* Leave some space for rmt request/response protocol */ - size += 2 * 1024; - while (size > TP_BSIZE && - setsockopt(tormtape, SOL_SOCKET, SO_SNDBUF, &size, sizeof (size)) < 0) - size -= TP_BSIZE; - (void)setsockopt(tormtape, SOL_SOCKET, SO_RCVBUF, &size, sizeof (size)); - throughput = IPTOS_THROUGHPUT; - if (setsockopt(tormtape, IPPROTO_IP, IP_TOS, - &throughput, sizeof(throughput)) < 0) - perror("IP_TOS:IPTOS_THROUGHPUT setsockopt"); - on = 1; - if (setsockopt(tormtape, IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on)) < 0) - perror("TCP_NODELAY setsockopt"); - fromrmtape = tormtape; } (void)fprintf(stderr, "Connection to %s established.\n", rmtpeer); return 1; diff -rNu ../dump-0.4b21/dump/dump.8.in ./dump/dump.8.in --- ../dump-0.4b21/dump/dump.8.in Wed Apr 25 22:00:15 2001 +++ ./dump/dump.8.in Sun May 6 19:58:38 2001 @@ -425,8 +425,8 @@ uses the contents of this variable to determine the name of the remote shell command to use when doing remote backups (rsh, ssh etc.). If this variable is not set, -.Xr rcmd 3 -will be used, but only root will be able to do remote backups. +.Xr rsh 1 +will be used as default. .Sh FILES .Bl -tag -width __DUMPDATES__ -compact .It Pa /dev/st0 diff -rNu ../dump-0.4b21/restore/restore.8.in ./restore/restore.8.in --- ../dump-0.4b21/restore/restore.8.in Wed Apr 25 22:00:15 2001 +++ ./restore/restore.8.in Sun May 6 19:59:03 2001 @@ -524,8 +524,8 @@ uses the contents of this variable to determine the name of the remote shell command to use when doing a network restore (rsh, ssh etc.). If this variable is not set, -.Xr rcmd 3 -will be used, but only root will be able to do a network restore. +.Xr rsh 1 +will be used as default. .Sh FILES .Bl -tag -width "./restoresymtable" -compact .It Pa /dev/st0 EOF } build_dump() { ( cd $DUMP_SRC ./configure --prefix=$ROOT \ --with-cc=$ROOT/bin/gcc \ --with-ccopts=-Os \ --with-linker=$ROOT/bin/gcc \ --with-ldopts=-s --disable-readline --enable-rmt \ --with-manowner=root --with-mangrp=root --with-manmode=644 make ) } install_dump() { ( cd $DUMP_SRC strip dump/dump strip restore/restore strip rmt/rmt make install ) } cleanup_dump() { rm -rf $ROOT/man } ######################################################################## # util-linux (fdisk and sfdisk only) # ######################################################################## patch_util_linux() { patch -d $UTIL_LINUX_SRC -E -p1 << 'EOF' diff -rNu ../util-linux-2.10r/fdisk/fdisk.c ./fdisk/fdisk.c --- ../util-linux-2.10r/fdisk/fdisk.c Sun Dec 3 01:34:34 2000 +++ ./fdisk/fdisk.c Wed May 9 01:28:34 2001 @@ -2138,7 +2138,6 @@ int j, c; int optl = 0, opts = 0; - setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); diff -rNu ../util-linux-2.10r/fdisk/sfdisk.c ./fdisk/sfdisk.c --- ../util-linux-2.10r/fdisk/sfdisk.c Tue Apr 25 20:37:20 2000 +++ ./fdisk/sfdisk.c Wed May 9 01:30:08 2001 @@ -2338,7 +2338,6 @@ char *activatearg = 0; char *unhidearg = 0; - setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); EOF } build_util_linux() { ( cd $UTIL_LINUX_SRC CC=$ROOT/bin/gcc CFLAGS=-Os \ LD=$ROOT/bin/gcc LDFLAGS=-s \ ./configure make -C fdisk DESTDIR=$ROOT ) } install_util_linux() { ( cd $UTIL_LINUX_SRC CC=$ROOT/bin/gcc CFLAGS=-Os \ LD=$ROOT/bin/gcc LDFLAGS=-s \ make -C fdisk DESTDIR=$ROOT install ) } cleanup_util_linux() { : } ######################################################################## # modutils # ######################################################################## patch_modutils() { : } build_modutils() { ( cd $MODUTILS_SRC CC=$ROOT/bin/gcc CFLAGS=-Os \ LD=$ROOT/bin/gcc LDFLAGS=-s \ ./configure --disable-compat-2-0 \ --prefix=$ROOT --exec-prefix=$ROOT make all ) } install_modutils() { make -C $MODUTILS_SRC install install -d $ROOT/etc cat > $ROOT/etc/modules.conf << 'EOF' alias scsi_hostadapter sym53c8xx alias block-major-1 rd alias block-major-7 loop alias char-major-4 serial alias char-major-5 serial alias char-major-10 misc alias char-major-10-130 softdog alias char-major-10-1 psaux alias block-major-3 off alias char-major-35 off alias net-pf-3 off alias net-pf-4 off alias net-pf-5 off alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate EOF } cleanup_modutils() { rm -rf $ROOT/man } ######################################################################## # raidtools # ######################################################################## patch_raidtools() { : } build_raidtools() { ( cd $RAIDTOOLS_SRC CC=$ROOT/bin/gcc \ LD=$ROOT/bin/gcc \ CFLAGS=-Os LDFLAGS=-s ./configure --prefix=$ROOT make ) } install_raidtools() { make -C $RAIDTOOLS_SRC ROOTDIR=$ROOT install_bin install_dev install -d $ROOT/etc cat > $ROOT/etc/raidtab << 'EOF' # /tmp: 512M x 2, blocksize = 1K, stride = 16 raiddev /dev/md0 raid-level 0 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 chunk-size 16 device /dev/sda6 raid-disk 0 device /dev/sdb6 raid-disk 1 # /var: 1G x 2, blocksize = 1K, stride = 4 raiddev /dev/md1 raid-level 0 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 chunk-size 4 device /dev/sda7 raid-disk 0 device /dev/sdb7 raid-disk 1 # /usr: 2G x 2, blocksize = 4K, stride = 16 raiddev /dev/md2 raid-level 0 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 chunk-size 64 device /dev/sda8 raid-disk 0 device /dev/sdb8 raid-disk 1 # /home: 4G x 2, blocksize = 4K, stride = 8 raiddev /dev/md3 raid-level 0 nr-raid-disks 2 nr-spare-disks 0 persistent-superblock 1 chunk-size 32 device /dev/sda9 raid-disk 0 device /dev/sdb9 raid-disk 1 EOF } cleanup_raidtools() { : } ######################################################################## # devices # ######################################################################## install_devices() { # Note: /dev/md* allready created by install_raidtools install -d $ROOT/dev # Setup some symlinks while read n l; do rm -f $ROOT/dev/$n ln -s $l $ROOT/dev/$n done << 'EOF' fd /proc/self/fd console tty0 stderr fd/2 stdin fd/0 stdout fd/1 tape nst0 EOF # Create device files while read t ma mi name; do rm -f $ROOT/dev/$name mknod $ROOT/dev/$name $t $ma $mi done << 'EOF' b 2 0 fd0 b 2 1 fd1 b 3 0 hda b 3 1 hda1 b 3 2 hda2 b 3 3 hda3 b 3 4 hda4 b 3 5 hda5 b 3 6 hda6 b 3 7 hda7 b 3 8 hda8 b 3 9 hda9 b 3 10 hda10 b 3 11 hda11 b 3 12 hda12 b 3 13 hda13 b 3 14 hda14 b 3 15 hda15 c 9 128 nst0 c 9 129 nst1 c 9 130 nst2 c 9 131 nst3 c 9 132 nst4 c 9 133 nst5 c 9 134 nst6 c 9 135 nst7 c 1 3 null b 1 0 ram0 b 1 1 ram1 b 1 2 ram2 b 1 3 ram3 b 1 4 ram4 b 1 5 ram5 b 1 6 ram6 b 1 7 ram7 b 8 0 sda b 8 1 sda1 b 8 2 sda2 b 8 3 sda3 b 8 4 sda4 b 8 5 sda5 b 8 6 sda6 b 8 7 sda7 b 8 8 sda8 b 8 9 sda9 b 8 10 sda10 b 8 11 sda11 b 8 12 sda12 b 8 13 sda13 b 8 14 sda14 b 8 15 sda15 b 8 16 sdb b 8 17 sdb1 b 8 18 sdb2 b 8 19 sdb3 b 8 20 sdb4 b 8 21 sdb5 b 8 22 sdb6 b 8 23 sdb7 b 8 24 sdb8 b 8 25 sdb9 b 8 26 sdb10 b 8 27 sdb11 b 8 28 sdb12 b 8 29 sdb13 b 8 30 sdb14 b 8 31 sdb15 c 9 0 st0 c 9 1 st1 c 9 2 st2 c 9 3 st3 c 9 4 st4 c 9 5 st5 c 9 6 st6 c 9 7 st7 c 5 0 tty c 4 0 tty0 c 4 1 tty1 c 4 2 tty2 c 4 3 tty3 c 4 4 tty4 c 4 5 tty5 c 4 6 tty6 c 4 7 tty7 c 4 8 tty8 c 4 9 tty9 c 1 5 zero EOF } ######################################################################## # Kernel modules # ######################################################################## install_modules() { modules_dir="/lib/modules/`uname -r`" while read mod; do dir="`dirname $mod`" install -d $ROOT/$modules_dir/$dir cp -p $modules_dir/$mod $ROOT/$modules_dir/$mod done << 'EOF' kernel/drivers/md/raid0.o kernel/drivers/md/md.o kernel/drivers/scsi/scsi_mod.o kernel/drivers/scsi/sym53c8xx.o kernel/drivers/scsi/st.o kernel/drivers/scsi/sd_mod.o kernel/fs/ext2/ext2.o kernel/fs/ramfs/ramfs.o kernel/net/unix/unix.o EOF chroot $ROOT /sbin/depmod -ae } ######################################################################## # misc. configuration files and directories # ######################################################################## install_misc() { install -d $ROOT/dev $ROOT/etc cat > $ROOT/etc/fstab << 'EOF' none /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 EOF cat > $ROOT/etc/passwd << 'EOF' root:x:0:0:root:/:/bin/sh EOF cat > $ROOT/etc/group << 'EOF' root::0:root EOF cat > $ROOT/linuxrc << 'EOF' #!/bin/sh export PATH=/bin:/sbin:/usr/bin:/usr/sbin. mount /proc mount /tmp chmod a+rwxt /tmp echo "Welcome to Kili's universal rescue disk" sh -i echo "Unmounting all mounted file systems." umount -a umount /proc echo "Now trying to continue normal boot." EOF chmod +x $ROOT/linuxrc install -d $ROOT/mnt $ROOT/proc $ROOT/tmp $ROOT/var chmod a+rwxt $ROOT/tmp } # Build and install all stuff install_all() { patch_uClibc build_uClibc install_uClibc patch_BusyBox build_BusyBox install_BusyBox patch_util_linux build_util_linux install_util_linux patch_e2fsprogs build_e2fsprogs install_e2fsprogs patch_dump build_dump install_dump patch_modutils build_modutils install_modutils patch_raidtools build_raidtools install_raidtools install_misc install_devices install_modules } # Cleanup cleanup_all() { cleanup_uClibc cleanup_BusyBox cleanup_util_linux cleanup_e2fsprogs cleanup_dump cleanup_modutils cleanup_raidtools } if [ $# -eq 0 ]; then install_all cleanup_all else for cmd; do $cmd; done fi