207 lines
4.5 KiB
Bash
Executable File
207 lines
4.5 KiB
Bash
Executable File
#!/bin/sh
|
||
|
||
|
||
SDDEV="/dev/block/mmcblk0p"
|
||
SDSYS="/sys/block/mmcblk0/mmcblk0p"
|
||
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
|
||
echo " * *"
|
||
echo " * Ramdisk for Toshiba G900 from Angell Fear *"
|
||
echo " * *"
|
||
echo " *~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*"
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
echo ""
|
||
|
||
mkdir -m 0755 /proc
|
||
mount -t proc proc /proc
|
||
mkdir -m 0755 /sys
|
||
mount -t sysfs sys /sys
|
||
mkdir -m 0755 /var
|
||
mkdir -m 0755 /var/run
|
||
mkdir -m 0755 /rootfs
|
||
mkdir -m 0755 /etc
|
||
touch /etc/mtab
|
||
|
||
#Configure Devices
|
||
MAKEDEVS
|
||
|
||
|
||
fail() {
|
||
echo "======================="
|
||
echo "$1"
|
||
while [ true ] ; do
|
||
exec /bin/sh
|
||
sleep 1
|
||
done
|
||
}
|
||
|
||
startup(){
|
||
if [ ! -f rootfs/bin/sh ]; then
|
||
fail "RootFS not found..."
|
||
fi
|
||
if [ -f rootfs/bin/sh ]; then
|
||
dmesg > rootfs/kernel.log
|
||
if [ -f /proc/sys/net/ipv4/tcp_syncookies ];then
|
||
if [ `cat /proc/sys/net/ipv4/tcp_syncookies` != 0 ]; then
|
||
sysctl -w net.ipv4.tcp_syncookies=0
|
||
fi
|
||
fi
|
||
mount -t proc proc /rootfs/proc
|
||
mount -t sysfs sys /rootfs/sys
|
||
#mkdir -p /rootfs/mnt/sd
|
||
|
||
mount -t tmpfs -o size=100K tmpfs /rootfs/dev
|
||
cp -a /dev/* /rootfs/dev
|
||
|
||
#mount -o bind /sdcard /rootfs/mnt/sd
|
||
|
||
umount -l /proc
|
||
umount -l /sys
|
||
|
||
#copy Firmware
|
||
#
|
||
# if [ ! -f /rootfs/lib/firmware/libertas/gspi8385_hlp.bin ]; then
|
||
# echo "Copy firmware: libertas gspi8385_hlp.bin"
|
||
# mkdir -p /rootfs/lib
|
||
# mkdir -p /rootfs/lib/firmware
|
||
# mkdir -p /rootfs/lib/firmware/libertas
|
||
# cp /lib/firmware/libertas/gspi8385_hlp.bin /rootfs/lib/firmware/libertas/gspi8385_hlp.bin
|
||
# fi
|
||
# if [ ! -f /rootfs/lib/firmware/libertas/gspi8385.bin ]; then
|
||
# echo "Copy firmware: libertas gspi8385.bin"
|
||
# mkdir -p /rootfs/lib
|
||
# mkdir -p /rootfs/lib/firmware
|
||
# mkdir -p /rootfs/lib/firmware/libertas
|
||
# cp /lib/firmware/libertas/gspi8385.bin /rootfs/lib/firmware/libertas/gspi8385.bin
|
||
# fi
|
||
#done
|
||
|
||
|
||
|
||
cd /rootfs
|
||
mkdir -p initrd
|
||
#pivot_root . initrd
|
||
#/bin/sh
|
||
exec switch_root /rootfs /sbin/init
|
||
#exec chroot . /sbin/init <dev/console >dev/console 2>&1
|
||
|
||
#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> initrd <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RAM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||
# umount /initrd
|
||
# blockdev -flushbufs /dev/ram0 # /dev/rd/0 if using devfs
|
||
|
||
fail "no chroot =("
|
||
#chroot rootfs /sbin/init
|
||
fi
|
||
}
|
||
|
||
fsckdisk()
|
||
{
|
||
echo "-------------------------"
|
||
echo "fsck '${1}' "
|
||
echo "${1} /sdcard/${1} ext2 relatime 1 1" >> /etc/fstab
|
||
e2fsck -y ${1}
|
||
echo "-------------------------"
|
||
}
|
||
|
||
mountloop()
|
||
{
|
||
if [ -f /sdcard/part${1}/${2} ]; then
|
||
echo "Found image RootFS on ${SDDEV}${1} in file ${2}"
|
||
/bin/losetup /dev/block/loop${1} /sdcard/part${1}/${2}
|
||
[ $? -eq 0 ] || fail "Failed to losetup part${1} ${2} "
|
||
fsckdisk /dev/block/loop${1}
|
||
[ $? -eq 0 ] || echo "${2} fixed!!!!"
|
||
echo "Mount 'part${1}/${2}' to /rootfs"
|
||
/bin/mount -t ext2 -o rw /dev/block/loop${1} /rootfs
|
||
[ $? -eq 0 ] || fail "Failed to mount RootFS part${1} ${2}"
|
||
echo "Mount 'part${1}' to /mnt/mmc${1}"
|
||
mkdir -p /rootfs/mnt
|
||
mkdir -p /rootfs/mnt/mmc${1}
|
||
/bin/mount -t vfat -o rw,flush,noatime ${SDDEV}${1} /rootfs/mnt/mmc${1}
|
||
ver=`uname -r`
|
||
if [ -f /sdcard/part${1}/modules-${ver}.tar.gz ]; then
|
||
echo "Found new modules modules-${ver}.tar.gz"
|
||
echo "Unpack modules-${ver}.tar.gz"
|
||
rm -fr /rootfs/lib/modules/${ver}
|
||
tar -xzf /sdcard/part${1}/modules-${ver}.tar.gz -C /rootfs
|
||
# echo "Delete modules modules-${ver}.tar.gz"
|
||
# rm -f /sdcard/part${1}/modules-${ver}.tar.gz
|
||
fi
|
||
fi
|
||
|
||
}
|
||
|
||
sdpart() {
|
||
if [ -e ${SDSYS}${1} ] ; then
|
||
echo "SD card: part ${1} - found";
|
||
/bin/mkdir -p /sdcard/part${1}
|
||
/bin/mount ${SDDEV}${1} /sdcard/part${1} > /dev/null 2>&1
|
||
if [ -f /sdcard/part${1}/bin/sh ]; then
|
||
echo "Found RootFS on ${SDDEV}${1}"
|
||
|
||
/bin/umount /sdcard/part${1}
|
||
rm -rf /sdcard/part${1}
|
||
[ ! $? -eq 0 ] || rm -rf /sdcard/part${1}
|
||
|
||
fsckdisk ${SDDEV}${1}
|
||
/bin/mount -t ext2 ${SDDEV}${1} rootfs > /dev/null 2>&1
|
||
[ $? -eq 0 ] || fail "Failed to mount rootfs SDpart${1} "
|
||
|
||
startup
|
||
fi
|
||
|
||
mountloop ${1} ubuntu.ext2
|
||
mountloop ${1} rootfs.ext2
|
||
mountloop ${1} rootfs.img
|
||
|
||
if [ -f /sdcard/part${1}/init.sh ]; then
|
||
echo "found initial script exec"
|
||
sh /sdcard/part${1}/init.sh
|
||
fi
|
||
fi
|
||
|
||
}
|
||
|
||
while [ ! -e /sys/block/mmcblk0 ] ; do
|
||
echo "Waiting for SD Card"
|
||
sleep 2
|
||
done
|
||
|
||
|
||
sdpart 1
|
||
sdpart 2
|
||
sdpart 3
|
||
sdpart 4
|
||
sdpart 5
|
||
|
||
startup
|
||
|