cleanup script provided
parent
eb7bb56f33
commit
45165c3a5e
|
|
@ -2,34 +2,22 @@
|
||||||
# Initial script for Linux Live Kit
|
# Initial script for Linux Live Kit
|
||||||
# Author: Tomas M <http://www.linux-live.org/>
|
# Author: Tomas M <http://www.linux-live.org/>
|
||||||
|
|
||||||
# This is needed to enable pivot_root
|
|
||||||
# We simply switch initramfs to mounted ramfs
|
|
||||||
if [ ! -r /lib/root_switched ]; then
|
|
||||||
echo "switch root from initramfs to ramfs"
|
|
||||||
SWITCH=/m
|
|
||||||
mkdir -p $SWITCH
|
|
||||||
mount -t ramfs ramfs $SWITCH
|
|
||||||
cp -a /* $SWITCH 2>/dev/null
|
|
||||||
cd $SWITCH
|
|
||||||
touch $SWITCH/lib/root_switched
|
|
||||||
exec switch_root -c /dev/console . $0
|
|
||||||
fi
|
|
||||||
|
|
||||||
MOUNTDIR=/mnt
|
|
||||||
CHANGES=$MOUNTDIR/changes
|
|
||||||
MEMORY=$MOUNTDIR/memory
|
|
||||||
UNION=$MOUNTDIR/union
|
|
||||||
DATAMNT=$MOUNTDIR/data
|
|
||||||
BUNDLES=$MOUNTDIR/bundles
|
|
||||||
|
|
||||||
export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin
|
export PATH=.:/:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
|
||||||
. /lib/.config
|
. /lib/.config
|
||||||
. /lib/livekitlib
|
. /lib/livekitlib
|
||||||
|
|
||||||
|
transfer_initramfs
|
||||||
|
|
||||||
|
MEMORY=/memory
|
||||||
|
CHANGES=$MEMORY/changes
|
||||||
|
UNION=$MEMORY/union
|
||||||
|
DATAMNT=$MEMORY/data
|
||||||
|
BUNDLES=$MEMORY/bundles
|
||||||
|
|
||||||
header "Starting $LIVEKITNAME ..."
|
header "Starting $LIVEKITNAME ..."
|
||||||
|
|
||||||
init_proc
|
init_proc_sysfs
|
||||||
init_devs
|
init_devs
|
||||||
init_aufs
|
init_aufs
|
||||||
init_zram
|
init_zram
|
||||||
|
|
@ -50,5 +38,5 @@ fstab_create "$UNION"
|
||||||
header "Live Kit phase ends, starting $LIVEKITNAME"
|
header "Live Kit phase ends, starting $LIVEKITNAME"
|
||||||
change_root "$UNION"
|
change_root "$UNION"
|
||||||
|
|
||||||
header "!!ERROR!!"
|
header "!!ERROR occured, you shouldn't be here.!!"
|
||||||
/bin/sh
|
/bin/sh
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@ mknod $INITRAMFS/dev/tty4 c 4 4
|
||||||
#done
|
#done
|
||||||
|
|
||||||
copy_including_deps /usr/bin/strace
|
copy_including_deps /usr/bin/strace
|
||||||
|
copy_including_deps /usr/bin/lsof
|
||||||
|
|
||||||
# TODO: add all comon filesystems which are NOT compiled in kernel already
|
# TODO: add all comon filesystems which are NOT compiled in kernel already
|
||||||
copy_including_deps /$LMK/kernel/fs/squashfs
|
copy_including_deps /$LMK/kernel/fs/squashfs
|
||||||
|
|
@ -74,8 +75,12 @@ depmod -b $INITRAMFS
|
||||||
echo "root::0:0::/root:/bin/bash" >$INITRAMFS/etc/passwd
|
echo "root::0:0::/root:/bin/bash" >$INITRAMFS/etc/passwd
|
||||||
touch $INITRAMFS/etc/{m,fs}tab
|
touch $INITRAMFS/etc/{m,fs}tab
|
||||||
|
|
||||||
cp init $INITRAMFS/
|
cp init $INITRAMFS
|
||||||
chmod a+x $INITRAMFS/init
|
chmod a+x $INITRAMFS/init
|
||||||
|
cp cleanup $INITRAMFS/lib
|
||||||
|
chmod a+x $INITRAMFS/lib/cleanup
|
||||||
|
ln -s ../init $INITRAMFS/bin/init
|
||||||
|
ln -s ../init $INITRAMFS/sbin/init
|
||||||
cp ../livekitlib $INITRAMFS/lib/
|
cp ../livekitlib $INITRAMFS/lib/
|
||||||
cp ../.config $INITRAMFS/lib/
|
cp ../.config $INITRAMFS/lib/
|
||||||
|
|
||||||
|
|
@ -84,4 +89,4 @@ find . -print | cpio -o -H newc 2>/dev/null | gzip -f --best >$INITRAMFS.img
|
||||||
echo $INITRAMFS.img
|
echo $INITRAMFS.img
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
#rm -Rf $INITRAMFS
|
rm -Rf $INITRAMFS
|
||||||
|
|
|
||||||
27
livekitlib
27
livekitlib
|
|
@ -98,9 +98,27 @@ create_bundle()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Move entire initramfs tree to ramfs mount.
|
||||||
|
# It's a bit tricky but is necessray to enable pivot_root
|
||||||
|
# even for initramfs boot image
|
||||||
|
#
|
||||||
|
transfer_initramfs()
|
||||||
|
{
|
||||||
|
if [ ! -r /lib/initramfs_escaped ]; then
|
||||||
|
echo "switch root from initramfs to ramfs"
|
||||||
|
SWITCH=/m # one letter directory
|
||||||
|
mkdir -p $SWITCH
|
||||||
|
mount -t ramfs ramfs $SWITCH
|
||||||
|
cp -a /??* $SWITCH 2>/dev/null # only copy two-and-more-letter directories
|
||||||
|
cd $SWITCH
|
||||||
|
echo "This file indicates that we successfully escaped initramfs" > $SWITCH/lib/initramfs_escaped
|
||||||
|
exec switch_root -c /dev/console . $0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# mount virtual filesystems like proc etc
|
# mount virtual filesystems like proc etc
|
||||||
#
|
#
|
||||||
init_proc()
|
init_proc_sysfs()
|
||||||
{
|
{
|
||||||
debug_log "vfs_mount_init"
|
debug_log "vfs_mount_init"
|
||||||
mount -n -t proc proc /proc
|
mount -n -t proc proc /proc
|
||||||
|
|
@ -231,6 +249,8 @@ fstab_create()
|
||||||
#
|
#
|
||||||
change_root()
|
change_root()
|
||||||
{
|
{
|
||||||
|
umount /proc
|
||||||
|
umount /sys
|
||||||
cd "$1"
|
cd "$1"
|
||||||
|
|
||||||
# make sure important devices are in union
|
# make sure important devices are in union
|
||||||
|
|
@ -248,9 +268,8 @@ change_root()
|
||||||
if [ -x sbin/init ]; then INIT=sbin/init; fi
|
if [ -x sbin/init ]; then INIT=sbin/init; fi
|
||||||
if [ "$INIT" = "" ]; then fatal "Can't find executable init command"; fi
|
if [ "$INIT" = "" ]; then fatal "Can't find executable init command"; fi
|
||||||
|
|
||||||
mkdir -p mnt/memory
|
mkdir -p mnt/live
|
||||||
mount -n -o remount,ro aufs .
|
mount -n -o remount,ro aufs .
|
||||||
pivot_root . mnt/memory
|
pivot_root . mnt/live
|
||||||
exec $CHROOT . $INIT < dev/console > dev/console 2>&1
|
exec $CHROOT . $INIT < dev/console > dev/console 2>&1
|
||||||
# exec switch_root -c /dev/console . $INIT
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue