35 |
populate_udev() |
populate_udev() |
36 |
{ |
{ |
37 |
/sbin/udevstart |
/sbin/udevstart |
38 |
|
|
39 |
#not provided by sysfs but needed |
# not provided by sysfs but needed |
40 |
ln -snf /proc/self/fd /dev/fd |
ln -snf /proc/self/fd /dev/fd |
41 |
ln -snf fd/0 /dev/stdin |
ln -snf fd/0 /dev/stdin |
42 |
ln -snf fd/1 /dev/stdout |
ln -snf fd/1 /dev/stdout |
44 |
ln -snf /proc/kcore /dev/core |
ln -snf /proc/kcore /dev/core |
45 |
ln -snf /proc/asound/oss/sndstat /dev/sndstat |
ln -snf /proc/asound/oss/sndstat /dev/sndstat |
46 |
|
|
47 |
#create problematic directories |
# create problematic directories |
48 |
mkdir -p /dev/pts |
mkdir -p /dev/pts |
49 |
mkdir -p /dev/shm |
mkdir -p /dev/shm |
50 |
|
|
51 |
#same as /dev/.devfsd |
#same as /dev/.devfsd |
52 |
touch /dev/.udev |
touch /dev/.udev |
53 |
|
|
54 |
return 0 |
return 0 |
55 |
} |
} |
56 |
|
|
86 |
echo -e ${COLWHITE}"-- ${i}"${COLDEFAULT} |
echo -e ${COLWHITE}"-- ${i}"${COLDEFAULT} |
87 |
fi |
fi |
88 |
else |
else |
89 |
echo -e ${COLWHITE}"-- ${i} not found."${COLDEFAULT} |
echo -e ${COLWHITE}"-- ${i} not found."${COLDEFAULT} |
90 |
fi |
fi |
91 |
done |
done |
92 |
} |
} |
113 |
media_id_ok=$? |
media_id_ok=$? |
114 |
fi |
fi |
115 |
umount /mnt/mnt/tmp |
umount /mnt/mnt/tmp |
116 |
|
|
117 |
if [ "${media_id_ok}" -eq 0 ] |
if [ "${media_id_ok}" -eq 0 ] |
118 |
then |
then |
119 |
echo -e ${COLOREDSTAR}"${COLGREEN}Magellan boot device found.${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLGREEN}Magellan boot device found.${COLDEFAULT}" |
126 |
|
|
127 |
} |
} |
128 |
|
|
129 |
#first of all read in kernel-config params |
# first of all read in kernel-config params |
130 |
. /etc/conf.d/kernel |
. /etc/conf.d/kernel |
131 |
|
|
132 |
#remount / writeable |
# remount / writeable |
133 |
mount -n -oremount,rw /dev/ram0 / -t cramfs |
mount -n -oremount,rw /dev/ram0 / -t cramfs |
134 |
|
|
135 |
#mount proc |
# mount proc |
136 |
if [ ! -e /proc/mounts ] |
if [ ! -e /proc/mounts ] |
137 |
then |
then |
138 |
[ ! -d "/proc" ] && mkdir -p /proc |
[ ! -d "/proc" ] && mkdir -p /proc |
140 |
mount -t proc proc /proc |
mount -t proc proc /proc |
141 |
fi |
fi |
142 |
|
|
143 |
#kernel 2.6-x needs sysfs |
# kernel 2.6-x needs sysfs |
144 |
if [ "$(kernel_major_version)" = "2.6" ] |
if [ "$(kernel_major_version)" = "2.6" ] |
145 |
then |
then |
146 |
[ ! -d /sys ] && mkdir /sys |
[ ! -d /sys ] && mkdir /sys |
149 |
fi |
fi |
150 |
|
|
151 |
### load devfs ### |
### load devfs ### |
152 |
#mount devfs only with a 2.4 kernel or its really wanted with a 2.6 |
# mount devfs only with a 2.4 kernel or its really wanted with a 2.6 |
153 |
if [ "$(kernel_major_version)" = "2.4" -o "${RC_USED_DEV}" = "devfs" ] |
if [ "$(kernel_major_version)" = "2.4" -o "${RC_USED_DEV}" = "devfs" ] |
154 |
then |
then |
155 |
[ ! -d "/dev" ] && mkdir -p /dev |
[ ! -d "/dev" ] && mkdir -p /dev |
156 |
|
|
157 |
if [ ! -e /dev/.devfsd ] |
if [ ! -e /dev/.devfsd ] |
158 |
then |
then |
159 |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devfs file system ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devfs file system ...${COLDEFAULT}" |
162 |
fi |
fi |
163 |
|
|
164 |
#### load udev #### |
#### load udev #### |
165 |
#load udev only with a 2.6 kernel |
# load udev only with a 2.6 kernel |
166 |
if [ "$(kernel_major_version)" = "2.6" -a "${RC_USED_DEV}" = "udev" ] |
if [ "$(kernel_major_version)" = "2.6" -a "${RC_USED_DEV}" = "udev" ] |
167 |
then |
then |
168 |
#create a ramdisk for populating udev |
# create a ramdisk for populating udev |
169 |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting ramfs at /dev ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting ramfs at /dev ...${COLDEFAULT}" |
170 |
mount -n -t ramfs none /dev |
mount -n -t ramfs none /dev |
171 |
|
|
172 |
#if a device tarball exists load it and if it is activated |
# if a device tarball exists load it and if it is activated |
173 |
echo -e ${COLOREDSTAR}"${COLWHITE}Configurating system to use udev ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Configurating system to use udev ...${COLDEFAULT}" |
174 |
|
|
175 |
#now load udev |
# now load udev |
176 |
populate_udev |
populate_udev |
177 |
|
|
178 |
#if hotplug support exists in the kernel use it to manage udev |
# if hotplug support exists in the kernel use it to manage udev |
179 |
echo -e ${COLOREDSTAR}"${COLWHITE} Setting /sbin/udev as hotplug agent ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE} Setting /sbin/udev as hotplug agent ...${COLDEFAULT}" |
180 |
echo "/sbin/udev" > /proc/sys/kernel/hotplug |
echo "/sbin/udev" > /proc/sys/kernel/hotplug |
181 |
fi |
fi |
182 |
|
|
183 |
#kernel2.6 needs again devpts |
# kernel2.6 needs again devpts |
184 |
if [ "$(kernel_major_version)" = "2.6" ] |
if [ "$(kernel_major_version)" = "2.6" ] |
185 |
then |
then |
186 |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devpts at /dev/pts ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting devpts at /dev/pts ...${COLDEFAULT}" |
188 |
mount -n -t devpts -o gid=4,mode=0620 none /dev/pts |
mount -n -t devpts -o gid=4,mode=0620 none /dev/pts |
189 |
fi |
fi |
190 |
|
|
191 |
#disable kernel messages to console |
# disable kernel messages to console |
192 |
echo "0" > /proc/sys/kernel/printk |
echo "0" > /proc/sys/kernel/printk |
193 |
|
|
194 |
#check command line for params |
# check command line for params |
195 |
for i in $(cat /proc/cmdline) |
for i in $(cat /proc/cmdline) |
196 |
do |
do |
197 |
case "${i}" in |
case "${i}" in |
204 |
esac |
esac |
205 |
done |
done |
206 |
|
|
207 |
#now load all needed modules |
# now load all needed modules |
208 |
if [ -n "${MODS_SCSI}" -a "${DOSCSI}" = "yes" ] |
if [ -n "${MODS_SCSI}" -a "${DOSCSI}" = "yes" ] |
209 |
then |
then |
210 |
scan_kernel_modules "scsi" "${MODS_SCSI}" |
scan_kernel_modules "scsi" "${MODS_SCSI}" |
218 |
fi |
fi |
219 |
|
|
220 |
|
|
221 |
#create newroot mount point with tmpfs |
# create newroot mount point with tmpfs |
222 |
mkdir -p /mnt |
mkdir -p /mnt |
223 |
mount -t tmpfs tmpfs /mnt |
mount -t tmpfs tmpfs /mnt |
224 |
|
|
227 |
mkdir -p /mnt/mnt/cloop |
mkdir -p /mnt/mnt/cloop |
228 |
mkdir -p /mnt/mnt/magellan |
mkdir -p /mnt/mnt/magellan |
229 |
|
|
230 |
#needed for the usbstick, the timeout maybe to short |
# needed for the usbstick, the timeout maybe to short |
231 |
echo -e ${COLOREDSTAR}"${COLWHITE}Waiting 3 seconds for possible usb mount ..." |
echo -e ${COLOREDSTAR}"${COLWHITE}Waiting 3 seconds for possible usb mount ..." |
232 |
sleep 3 |
sleep 3 |
233 |
|
|
234 |
#searching cdrom with cdid |
# searching cdrom with cdid |
235 |
BOOT_DEVICE="" |
BOOT_DEVICE="" |
236 |
FSTYPE="" |
FSTYPE="" |
237 |
|
|
238 |
echo -e ${COLOREDSTAR}"${COLWHITE}Searching for a boot device ..." |
echo -e ${COLOREDSTAR}"${COLWHITE}Searching for a boot device ..." |
239 |
#searching usbstick |
# searching usbstick |
240 |
check_drives "/dev/scsi/host[0-99]/bus[0-99]/target[0-99]/lun[0-99]/part[0-99]" "vfat" |
check_drives "/dev/scsi/host[0-99]/bus[0-99]/target[0-99]/lun[0-99]/part[0-99]" "vfat" |
241 |
|
|
242 |
#for cdrom_device in $CDROM_LIST (ide) |
# for cdrom_device in $CDROM_LIST (ide) |
243 |
check_drives "/dev/cdroms/*" iso9660 |
check_drives "/dev/cdroms/*" iso9660 |
244 |
|
|
245 |
#scsi cdroms |
# scsi cdroms |
246 |
check_drives "/dev/sr*" iso9660 |
check_drives "/dev/sr*" iso9660 |
247 |
|
|
248 |
#mount our rootfs from cdrom |
# mount our rootfs from cdrom |
249 |
if [ "${BOOT_DEVICE}" = "" ] |
if [ "${BOOT_DEVICE}" = "" ] |
250 |
then |
then |
251 |
echo -e ${COLREDSTAR}"${COLRED}No Magellan boot CD/USBStick found!!!${COLDEFAULT}" |
echo -e ${COLREDSTAR}"${COLRED}No Magellan boot CD/USBStick found!!!${COLDEFAULT}" |
253 |
exit 1 |
exit 1 |
254 |
else |
else |
255 |
echo -e ${COLOREDSTAR}"${COLWHITE}Booting from: $BOOT_DEVICE ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Booting from: $BOOT_DEVICE ...${COLDEFAULT}" |
256 |
|
mount -o ro -t "${FSTYPE}" "${BOOT_DEVICE}" /mnt/mnt/cdrom >/dev/null 2>&1 |
257 |
#mount cdrom |
|
258 |
#mkdir -p /mnt/mnt/cdrom |
# write our boot_device to /mnt/.bootdev for later use (mtab) |
|
if [ "${FSTYPE}" = "iso9660" ] |
|
|
then |
|
|
mount -o ro -t iso9660 ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1 |
|
|
fi |
|
|
|
|
|
if [ "${FSTYPE}" = "vfat" ] |
|
|
then |
|
|
mount -o ro -t vfat ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1 |
|
|
fi |
|
|
|
|
|
#mount -o ro -t ${FSTYPE} ${BOOT_DEVICE} /mnt/mnt/cdrom >/dev/null 2>&1 |
|
|
|
|
|
#write our boot_device to /mnt/.bootdev for later use (mtab) |
|
259 |
echo "BOOTDEV=${BOOT_DEVICE}" > /mnt/.bootdev |
echo "BOOTDEV=${BOOT_DEVICE}" > /mnt/.bootdev |
260 |
echo "FSTYPE=${FSTYPE}" >> /mnt/.bootdev |
echo "FSTYPE=${FSTYPE}" >> /mnt/.bootdev |
|
|
|
|
#mount rootfs (loopback) |
|
|
#mknod /dev/loop0 b 7 0 |
|
|
#losetup /dev/loop0 /mnt/mnt/cdrom/livecdrootfs |
|
|
#mount -o ro -t ext2 /dev/loop0 /mnt |
|
|
|
|
261 |
|
|
262 |
if [ -f /mnt/mnt/cdrom/livecdrootfs.cloop ] |
if [ -f /mnt/mnt/cdrom/livecdrootfs.cloop ] |
263 |
then |
then |
264 |
#mount rootfs (cloop) |
# mount rootfs (cloop) |
265 |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting cloop system image ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting cloop system image ...${COLDEFAULT}" |
266 |
echo |
echo |
267 |
[ ! -e /dev/cloop ] && mknod /dev/cloop b 240 0 |
[ ! -e /dev/cloop ] && mknod /dev/cloop b 240 0 |
269 |
mkdir -p /mnt/mnt/cloop |
mkdir -p /mnt/mnt/cloop |
270 |
mount -o ro -t ext2 /dev/cloop /mnt/mnt/cloop |
mount -o ro -t ext2 /dev/cloop /mnt/mnt/cloop |
271 |
else |
else |
272 |
#mount squashfs |
# mount squashfs |
273 |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting squashfs system image ...${COLDEFAULT}" |
echo -e ${COLOREDSTAR}"${COLWHITE}Mounting squashfs system image ...${COLDEFAULT}" |
274 |
echo |
echo |
275 |
[ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0 |
[ ! -e /dev/loop0 ] && mknod /dev/loop0 b 7 0 |
276 |
mount -o loop,ro -t squashfs /mnt/mnt/cdrom/livecdrootfs.sqsh /mnt/mnt/cloop |
mount -o loop,ro -t squashfs /mnt/mnt/cdrom/livecdrootfs.sqsh /mnt/mnt/cloop |
277 |
fi |
fi |
278 |
|
|
279 |
#symlinking cloop rootfs to /mnt as newroot |
# symlinking cloop rootfs to /mnt as newroot |
280 |
cd /mnt |
cd /mnt |
281 |
#if [ ! -e /mnt/dev/.devfsd ] |
|
|
#then |
|
|
# mkdir -p dev |
|
|
# mount -t devfs devfs /mnt/dev |
|
|
#fi |
|
|
|
|
282 |
for x in bin sbin lib boot usr opt |
for x in bin sbin lib boot usr opt |
283 |
do |
do |
284 |
ln -s mnt/cloop/${x} ${x} |
ln -s mnt/cloop/${x} ${x} |
285 |
done |
done |
286 |
mkdir -p initrd proc tmp sys var/tmp dev |
mkdir -p initrd proc tmp sys var/tmp dev |
287 |
chmod 1777 tmp var/tmp |
chmod 1777 tmp var/tmp |
288 |
|
|
289 |
#make /mnt/dev/console & /mnt/dev/null |
# make /mnt/dev/console & /mnt/dev/null |
290 |
[ ! -e /mnt/dev/console ] && mknod -m 600 /mnt/dev/console c 5 1 |
[ ! -e /mnt/dev/console ] && mknod -m 600 /mnt/dev/console c 5 1 |
291 |
[ ! -e /mnt/dev/null ] && mknod -m 666 /mnt/dev/null c 1 3 |
[ ! -e /mnt/dev/null ] && mknod -m 666 /mnt/dev/null c 1 3 |
292 |
|
|
|
#(cd /mnt/mnt/cloop/fake/needwrite; cp -a etc root home var /mnt) |
|
293 |
(cd /mnt/mnt/cloop; cp -a etc root home var /mnt) |
(cd /mnt/mnt/cloop; cp -a etc root home var /mnt) |
294 |
#cp -aR /mnt/mnt/cloop/fake/needwrite/etc /mnt |
|
295 |
#cp -aR /mnt/mnt/cloop/fake/needwrite/root /mnt |
# shurely change to correct permissions |
296 |
#cp -aR /mnt/mnt/cloop/fake/needwrite/home /mnt |
chmod 1777 /mnt/tmp |
|
#cp -aR /mnt/mnt/cloop/fake/needwrite/var /mnt |
|
|
|
|
|
#coping all fake/needwrite files to tmpfs |
|
|
#cp -aR /mnt/mnt/cloop/fake/needwrite/* /mnt |
|
|
|
|
|
#shurely change |
|
|
chmod 1777 /mnt/tmp |
|
297 |
chmod 1777 /mnt/var/tmp |
chmod 1777 /mnt/var/tmp |
298 |
|
|
299 |
#ash |
#ash |
300 |
|
|
301 |
#enable kernel messages to console |
# set default verbose level for kernel messages |
|
#echo "6" > /proc/sys/kernel/printk |
|
|
#set default verbose level for kernel messages |
|
302 |
[ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3 |
[ -z "${RC_VERBOSE_LEVEL}" ] && RC_VERBOSE_LEVEL=3 |
303 |
echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk |
echo "${RC_VERBOSE_LEVEL}" > /proc/sys/kernel/printk |
304 |
|
|
305 |
cd /mnt |
cd /mnt |
306 |
|
|
|
#needed to check whether something else is mounted |
|
|
#proc isn't needed anymore |
|
|
#umount /proc |
|
|
|
|
|
|
|
307 |
pivot_root . initrd |
pivot_root . initrd |
|
#umount -n /mnt/proc >/dev/null 2>&1 |
|
|
#exec chroot . sh -c 'umount -n /mnt >/dev/null 2>&1;\ |
|
|
# exec -a init.new /sbin/init 3'\ |
|
|
# </dev/console >/dev/console 2>&1 |
|
|
|
|
|
# #umount devpts |
|
|
# DEVPTS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/dev/pts | cut -d ' ' -f2)" |
|
|
# if [ -n "${DEVPTS_MOUNTED}" ] |
|
|
# then |
|
|
# umount -n /initrd/dev/pts |
|
|
# fi |
|
|
# |
|
|
# #umount devfs or udev |
|
|
# DEVFS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/dev | cut -d ' ' -f2)" |
|
|
# if [ -n "${DEVFS_MOUNTED}" ] |
|
|
# then |
|
|
# umount -n /initrd/dev |
|
|
# fi |
|
|
# |
|
|
# #umount sysfs |
|
|
# SYSFS_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/sys | cut -d ' ' -f2)" |
|
|
# if [ -n "${SYSFS_MOUNTED}" ] |
|
|
# then |
|
|
# umount -n /initrd/sys |
|
|
# fi |
|
|
# |
|
|
# #umount proc |
|
|
# PROC_MOUNTED="$(cat /initrd/proc/mounts | grep /initrd/proc | cut -d ' ' -f2)" |
|
|
# if [ "${PROC_MOUNTED}" = "/initrd/proc" ] |
|
|
# then |
|
|
# umount -n /initrd/proc |
|
|
# fi |
|
308 |
|
|
309 |
#dirty but working |
# dirty but working |
310 |
#umount devpts |
# umount devpts |
311 |
umount -n /initrd/dev/pts &> /dev/null |
umount -n /initrd/dev/pts &> /dev/null |
312 |
#wait a little bit to be safe |
# wait a little bit to be safe |
313 |
sleep 1 |
sleep 1 |
314 |
#umount devfs or udev |
# umount devfs or udev |
315 |
umount -n /initrd/dev &> /dev/null |
umount -n /initrd/dev &> /dev/null |
316 |
#umount sysfs |
# umount sysfs |
317 |
umount -n /initrd/sys &> /dev/null |
umount -n /initrd/sys &> /dev/null |
318 |
#umount proc |
# umount proc |
319 |
umount -n /initrd/proc &> /dev/null |
umount -n /initrd/proc &> /dev/null |
320 |
|
|
321 |
#debug |
#debug |
322 |
#/initrd/bin/busybox ash |
#/initrd/bin/busybox ash |
323 |
|
|
324 |
#enter chroot and umount /initrd |
#enter chroot and umount /initrd |
325 |
exec chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;\ |
exec chroot . sh -c 'umount -n /initrd >/dev/null 2>&1;\ |
326 |
exec -a init.new /sbin/init'\ |
exec -a init.new /sbin/init'\ |