1 |
#!/bin/bash |
#!/bin/bash |
2 |
# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.7 2005-12-15 20:44:55 niro Exp $ |
# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.14 2007-09-01 19:17:36 niro Exp $ |
3 |
|
|
4 |
# mkinitrd |
# mkinitrd |
5 |
# |
# |
411 |
shift |
shift |
412 |
done |
done |
413 |
|
|
414 |
# enforce loopback method as default |
# enforce initramfs method as default |
415 |
[[ -z ${IMAGE_TYPE} ]] && IMAGE_TYPE=loopback |
[[ -z ${IMAGE_TYPE} ]] && IMAGE_TYPE=initramfs |
416 |
|
|
417 |
if [ -z "${target}" -o -z "${kernel}" ] |
if [ -z "${target}" -o -z "${kernel}" ] |
418 |
then |
then |
649 |
|
|
650 |
|
|
651 |
# create basic filesystem layout |
# create basic filesystem layout |
652 |
install -d ${DEST}/{bin,dev,etc,lib,loopfs,proc,sys,sysroot} || die |
install -d ${DEST}/{bin,dev,etc,lib,loopfs,proc,sbin,sys,sysroot} || die |
653 |
|
|
654 |
# install busybox |
# install busybox |
655 |
echo "$(which busybox.mkinitrd)" |
echo "$(which busybox.mkinitrd)" |
656 |
install -m0755 $(which busybox.mkinitrd) ${DEST}/bin/busybox || die |
install -m0755 $(which busybox.mkinitrd) ${DEST}/bin/busybox || die |
657 |
for i in '[' ash basename cat cut chroot clear cp dirname echo env false find \ |
for i in '[' ash basename cat cut clear cp dirname echo env false find \ |
658 |
grep gunzip gzip init ln ls loadkmap losetup mkdir mknod modprobe more mount mv \ |
grep gunzip gzip ln ls loadkmap mkdir mknod more mount mv \ |
659 |
pivot_root ps pwd rm rmdir sh sleep test touch true umount uname \ |
ps pwd rm rmdir sh sleep test touch true umount uname \ |
660 |
xargs yes chmod chown |
xargs yes chmod chown |
661 |
do |
do |
662 |
|
# use soft links from now on; |
663 |
|
# hardlinks in initramfs apears to be broken on newer kernels |
664 |
|
# -> "request module: runaway loop modprobe binfmt-0000" |
665 |
|
# see: http://www.gossamer-threads.com/lists/linux/kernel/728042 |
666 |
|
ln -s /bin/busybox ${DEST}/bin/${i} || die "${i}" |
667 |
|
done |
668 |
|
|
669 |
|
# sbin related |
670 |
|
for i in chroot init losetup modprobe pivot_root |
671 |
|
do |
672 |
# static links |
# static links |
673 |
ln ${DEST}/bin/busybox ${DEST}/bin/${i} || die "${i}" |
ln ${DEST}/bin/busybox ${DEST}/sbin/${i} || die "${i}" |
674 |
done |
done |
675 |
|
|
676 |
# install run-init |
# install run-init |
677 |
echo "$(which run-init.mkinitrd)" |
echo "$(which run-init.mkinitrd)" |
678 |
install -m0755 $(which run-init.mkinitrd) ${DEST}/bin/run-init || die |
install -m0755 $(which run-init.mkinitrd) ${DEST}/sbin/run-init || die |
679 |
|
|
680 |
# install insmod.static |
# install insmod.static |
681 |
echo "$(which insmod.static)" |
echo "$(which insmod.static)" |
682 |
install -m0755 $(which insmod.static) ${DEST}/bin/insmod || die |
install -m0755 $(which insmod.static) ${DEST}/sbin/insmod || die |
|
|
|
|
# install udev |
|
|
cp -a /etc/udev ${DEST}/etc || die |
|
|
install -m0755 /sbin/udev.static ${DEST}/bin/udev || die |
|
|
install -m0755 /sbin/udevd.static ${DEST}/bin/udevd || die |
|
|
install -m0755 /sbin/udevstart.static ${DEST}/bin/udevstart || die |
|
683 |
|
|
684 |
# install lvm |
# install lvm |
685 |
if [ -n "${vg_list}" ] |
if [ -n "${vg_list}" ] |
686 |
then |
then |
687 |
inst /sbin/lvm.static "${DEST}/bin/lvm" |
inst /sbin/lvm.static "${DEST}/sbin/lvm" |
688 |
if [ -f /etc/lvm/lvm.conf ] |
if [ -f /etc/lvm/lvm.conf ] |
689 |
then |
then |
690 |
cp ${verbose} --parents /etc/lvm/lvm.conf ${DEST}/ |
cp ${verbose} --parents /etc/lvm/lvm.conf ${DEST}/ |
692 |
fi |
fi |
693 |
|
|
694 |
# create some needed device nodes |
# create some needed device nodes |
695 |
|
mkdir ${DEST}/dev/pts || die |
696 |
|
mkdir ${DEST}/dev/shm || die |
697 |
mkdir ${DEST}/dev/mapper || die |
mkdir ${DEST}/dev/mapper || die |
698 |
|
mkdir ${DEST}/dev/misc || die |
699 |
|
mkdir ${DEST}/dev/fb || die |
700 |
|
mkdir ${DEST}/dev/vc || die |
701 |
mknod ${DEST}/dev/console c 5 1 || die |
mknod ${DEST}/dev/console c 5 1 || die |
702 |
mknod ${DEST}/dev/null c 1 3 || die |
mknod ${DEST}/dev/null c 1 3 || die |
703 |
mknod ${DEST}/dev/ram b 1 1 || die |
mknod ${DEST}/dev/ram b 1 1 || die |
723 |
|
|
724 |
[[ ${IMAGE_TYPE} = loopback ]] && add_initrd 'mount -t ramfs -o remount,rw /dev/ram /' |
[[ ${IMAGE_TYPE} = loopback ]] && add_initrd 'mount -t ramfs -o remount,rw /dev/ram /' |
725 |
|
|
726 |
|
# silencio |
727 |
|
add_initrd 'echo 0 > /proc/sys/kernel/printk' |
728 |
|
|
729 |
add_initrd 'echo "-- Creating inital device nodes ..."' |
add_initrd 'echo "-- Creating inital device nodes ..."' |
730 |
add_initrd 'mount -o mode=0755 -t tmpfs udev /dev' |
add_initrd 'mount -o exec,nosuid,mode=0755,size=10M -t tmpfs udev /dev' |
731 |
add_initrd 'mkdir /dev/pts' |
add_initrd 'mkdir /dev/pts' |
732 |
add_initrd 'mkdir /dev/shm' |
add_initrd 'mkdir /dev/shm' |
733 |
add_initrd 'mkdir /dev/mapper' |
add_initrd 'mkdir /dev/mapper' |
734 |
|
add_initrd 'mkdir /dev/misc' |
735 |
|
add_initrd 'mkdir /dev/fb' |
736 |
|
add_initrd 'mkdir /dev/vc' |
737 |
add_initrd 'mknod /dev/console c 5 1' |
add_initrd 'mknod /dev/console c 5 1' |
738 |
add_initrd 'mknod /dev/null c 1 3' |
add_initrd 'mknod /dev/null c 1 3' |
739 |
add_initrd 'mknod /dev/ram b 1 1' |
add_initrd 'mknod /dev/ram b 1 1' |
748 |
add_initrd "mknod /dev/ttyS$((${i} - 64)) c 4 ${i}" |
add_initrd "mknod /dev/ttyS$((${i} - 64)) c 4 ${i}" |
749 |
done |
done |
750 |
|
|
751 |
add_initrd 'echo "-- Starting udevd ..."' |
# some needed symlinks |
|
add_initrd 'ln -snf bin /sbin' |
|
|
add_initrd '/sbin/udevstart' |
|
752 |
add_initrd 'ln -snf /proc/self/fd /dev/fd' |
add_initrd 'ln -snf /proc/self/fd /dev/fd' |
753 |
add_initrd 'ln -snf fd/0 /dev/stdin' |
add_initrd 'ln -snf fd/0 /dev/stdin' |
754 |
add_initrd 'ln -snf fd/1 /dev/stdout' |
add_initrd 'ln -snf fd/1 /dev/stdout' |
755 |
add_initrd 'ln -snf fd/2 /dev/stderr' |
add_initrd 'ln -snf fd/2 /dev/stderr' |
756 |
add_initrd 'ln -snf /proc/kcore /dev/core' |
add_initrd 'ln -snf /proc/kcore /dev/core' |
|
add_initrd 'touch /dev/.udev' |
|
|
|
|
|
add_initrd 'echo "-- Setting up hotplug ..."' |
|
|
add_initrd 'echo "/sbin/hotplug" > /proc/sys/kernel/hotplug' |
|
|
# add_initrd 'for i in $(find /lib -type f -name *.ko)' |
|
|
# add_initrd 'do' |
|
|
# add_initrd ' echo "-- Loading module ${i}"' |
|
|
# add_initrd ' insmod ${i};' |
|
|
# # handle special cases like usb |
|
|
# add_initrd ' if [ "${i}" = "usb-storage" ]' |
|
|
# add_initrd ' then' |
|
|
# add_initrd ' echo "Waiting 8 seconds for usb-driver initialization."' |
|
|
# add_initrd ' sleep 8' |
|
|
# add_initrd ' fi' |
|
|
# add_initrd 'done' |
|
757 |
|
|
758 |
# loading detected modules with options |
# loading detected modules with options |
759 |
for MODULE in ${MODULES} |
for MODULE in ${MODULES} |
819 |
# software suspend |
# software suspend |
820 |
if [ -z "${noresume}" ] |
if [ -z "${noresume}" ] |
821 |
then |
then |
822 |
add_initrd "resume ${swsuspdev}" |
add_initrd "[ -x /bin/resume ] && resume ${swsuspdev}" |
823 |
fi |
fi |
824 |
|
|
825 |
# raid |
# raid |
838 |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
839 |
add_initrd 'mount /sysroot' |
add_initrd 'mount /sysroot' |
840 |
|
|
841 |
|
# de-silencio |
842 |
|
add_initrd 'echo 3 > /proc/sys/kernel/printk' |
843 |
|
|
844 |
add_initrd 'echo "-- Switching to real sysroot ..."' |
add_initrd 'echo "-- Switching to real sysroot ..."' |
845 |
add_initrd 'umount /sys' |
add_initrd 'umount /sys' |
846 |
add_initrd 'umount /proc' |
add_initrd 'umount /proc' |
847 |
|
add_initrd 'umount /dev' |
848 |
|
|
849 |
[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console' |
[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot /sbin/init $@ </sysroot/dev/console >/sysroot/dev/console' |
850 |
if [[ ${IMAGE_TYPE} = loopback ]] |
if [[ ${IMAGE_TYPE} = loopback ]] |