1 |
#!/bin/sh |
#!/bin/sh |
2 |
# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd-magellan/livecd/linuxrc.sh,v 1.2 2007-11-10 19:56:21 niro Exp $ |
# $Id$ |
3 |
|
|
4 |
# loads given kernel modules |
# loads given kernel modules |
5 |
load_kernel_modules() |
load_kernel_modules() |
45 |
then |
then |
46 |
echo -e "Magellan boot device found." |
echo -e "Magellan boot device found." |
47 |
BOOT_DEVICE="${dev}" |
BOOT_DEVICE="${dev}" |
48 |
FSTYPE=${fs} |
FSTYPE="${fs}" |
49 |
break |
break |
50 |
fi |
fi |
51 |
fi |
fi |
55 |
## some defaults ## |
## some defaults ## |
56 |
DOSCSI=no |
DOSCSI=no |
57 |
DOUSB=no |
DOUSB=no |
58 |
DOSATA=no |
DOSATA=yes |
59 |
NOPATA=no |
DOFB=no |
60 |
|
DOPATA=yes |
61 |
|
FORCED_ROOTFS="" |
62 |
|
|
63 |
## starts here ## |
## starts here ## |
64 |
|
|
65 |
# mount essential filesystems |
# mount essential filesystems |
66 |
mount -t proc proc /proc |
mount -t proc proc /proc |
67 |
mount -t sysfs sysfs /sys |
mount -t sysfs sysfs /sys |
68 |
|
mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024 |
69 |
|
|
70 |
|
# install all busybox applets |
71 |
|
busybox --install -s |
72 |
|
|
73 |
# silencio |
# silencio |
74 |
echo 0 > /proc/sys/kernel/printk |
echo 0 > /proc/sys/kernel/printk |
77 |
for i in $(cat /proc/cmdline) |
for i in $(cat /proc/cmdline) |
78 |
do |
do |
79 |
case "${i}" in |
case "${i}" in |
80 |
doscsi) |
doscsi) DOSCSI=yes;; |
81 |
DOSCSI=yes |
noscsi) DOSCSI=no;; |
82 |
;; |
dousb) DOUSB=yes;; |
83 |
dousb) |
nousb) DOUSB=no;; |
84 |
DOUSB=yes |
dosata) DOSATA=yes ;; |
85 |
;; |
nosata) DOSATA=no ;; |
86 |
dosata) |
dofb) DOFB=yes;; |
87 |
DOSATA=yes |
nofb) DOFB=no;; |
88 |
;; |
dopata) DOPATA=yes;; |
89 |
nopata) |
nopata) DOPATA=no;; |
90 |
NOPATA=yes |
rootfs=*) FORCED_ROOTFS="${i#*=}";; |
|
;; |
|
91 |
esac |
esac |
92 |
done |
done |
93 |
|
|
94 |
# now load all needed modules |
# now load all needed modules |
95 |
|
[ "${DOFB}" = "yes" ] && load_kernel_modules "framebuffer" |
96 |
load_kernel_modules "generic" |
load_kernel_modules "generic" |
97 |
[ "${NOPATA}" != "yes" ] && load_kernel_modules "pata" |
[ "${DOPATA}" = "yes" ] && load_kernel_modules "pata" |
98 |
[ "${DOSCSI}" = "yes" ] && load_kernel_modules "scsi" |
[ "${DOSCSI}" = "yes" ] && load_kernel_modules "scsi" |
99 |
[ "${DOUSB}" = "yes" ] && load_kernel_modules "usb" |
[ "${DOUSB}" = "yes" ] && load_kernel_modules "usb" |
100 |
[ "${DOSATA}" = "yes" ] && load_kernel_modules "sata" |
[ "${DOSATA}" = "yes" ] && load_kernel_modules "sata" |
101 |
|
|
102 |
|
# populate dev |
103 |
|
mdev -s |
104 |
|
# handle hotplug events properly |
105 |
|
echo /sbin/mdev > /proc/sys/kernel/hotplug |
106 |
|
|
107 |
# create newroot mount point |
# create newroot mount point |
108 |
mkdir -p /sysroot |
mkdir -p /sysroot |
109 |
# fake a new filesystem (also needed with an initramfs!!) |
# fake a new filesystem (also needed with an initramfs!!) |
128 |
|
|
129 |
# searching usbstick |
# searching usbstick |
130 |
if [ "${DOUSB}" = "yes" ]; then |
if [ "${DOUSB}" = "yes" ]; then |
131 |
check_drives "/dev/sd*" "vfat" |
ROOTFS="vfat" |
132 |
check_drives "/dev/sg*" "vfat" |
[[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}" |
133 |
|
check_drives "/dev/sd*" "${ROOTFS}" |
134 |
|
check_drives "/dev/sg*" "${ROOTFS}" |
135 |
fi |
fi |
136 |
|
|
137 |
# for cdrom_device in $CDROM_LIST (ide) |
# for cdrom_device in $CDROM_LIST (ide) |
138 |
check_drives "/dev/cdroms/*" iso9660 |
ROOTFS="iso9660" |
139 |
check_drives "/dev/hd*" iso9660 |
[[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}" |
140 |
|
check_drives "/dev/cdroms/*" "${ROOTFS}" |
141 |
|
check_drives "/dev/hd*" "${ROOTFS}" |
142 |
|
|
143 |
# scsi cdroms |
# scsi cdroms |
144 |
if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then |
if [ "${DOSCSI}" = "yes" ] || [ "${DOSATA}" = "yes" ]; then |
145 |
check_drives "/dev/sr*" iso9660 |
ROOTFS="iso9660" |
146 |
check_drives "/dev/sg*" iso9660 |
[[ ! -z ${FORCED_ROOTFS} ]] && ROOTFS="${FORCED_ROOTFS}" |
147 |
check_drives "/dev/scd*" iso9660 |
check_drives "/dev/sr*" "${ROOTFS}" |
148 |
|
check_drives "/dev/sg*" "${ROOTFS}" |
149 |
|
check_drives "/dev/scd*" "${ROOTFS}" |
150 |
fi |
fi |
151 |
|
|
152 |
# mount our rootfs from cdrom |
# mount our rootfs from cdrom |
181 |
# make /sysroot/dev/console & /mnt/dev/null |
# make /sysroot/dev/console & /mnt/dev/null |
182 |
[ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 |
[ ! -e /sysroot/dev/console ] && mknod -m 600 /sysroot/dev/console c 5 1 |
183 |
[ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 |
[ ! -e /sysroot/dev/null ] && mknod -m 666 /sysroot/dev/null c 1 3 |
184 |
|
# only to be safe and to have a log channel |
185 |
|
[ ! -e /sysroot/dev/tty ] && mknod /sysroot/dev/tty c 5 0 |
186 |
|
# busybox needs this one |
187 |
|
[ ! -e /sysroot/dev/tty5 ] && mknod /sysroot/dev/tty5 c 4 5 |
188 |
|
|
189 |
(cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot) |
(cd /sysroot/mnt/cloop; cp -a etc root home var /sysroot) |
190 |
|
|
195 |
|
|
196 |
cd / |
cd / |
197 |
|
|
198 |
|
# unset hotplug event-manager |
199 |
|
echo > /proc/sys/kernel/hotplug |
200 |
|
|
201 |
# de-silencio |
# de-silencio |
202 |
echo 3 > /proc/sys/kernel/printk |
echo 3 > /proc/sys/kernel/printk |
203 |
|
|
204 |
echo "-- Switching to real sysroot ..." |
echo "-- Switching to real sysroot ..." |
205 |
|
umount /dev |
206 |
umount /sys |
umount /sys |
207 |
umount /proc |
umount /proc |
208 |
|
|