#!/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 " * LINUX SUPPORT *" 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 2>&1 #Теперь можно демонтировать initrd и освободить память занятую RAM диском: # 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