1 |
#!/bin/bash |
#!/bin/bash |
2 |
# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.5 2005-12-05 22:45:33 niro Exp $ |
# $Header: /home/cvsd/magellan-cvs/magellan-src/mkinitrd/mkinitrd.sh,v 1.10 2006-03-05 14:11:03 niro Exp $ |
3 |
|
|
4 |
# mkinitrd |
# mkinitrd |
5 |
# |
# |
38 |
PROBE="yes" |
PROBE="yes" |
39 |
MODULES="" |
MODULES="" |
40 |
PREMODS="" |
PREMODS="" |
41 |
|
NOSTRIP=false |
42 |
|
|
43 |
[ -e /etc/conf.d/mkinitrd ] && . /etc/conf.d/mkinitrd |
[ -e /etc/conf.d/mkinitrd ] && . /etc/conf.d/mkinitrd |
44 |
|
|
74 |
echo " [--force-ide-probe] [--force-scsi-probe | --omit-scsi-modules]" |
echo " [--force-ide-probe] [--force-scsi-probe | --omit-scsi-modules]" |
75 |
echo " [--image-version] [--force-scsi-probe | --omit-raid-modules]" |
echo " [--image-version] [--force-scsi-probe | --omit-raid-modules]" |
76 |
echo " [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]" |
echo " [--with=<module>] [--force-lvm-probe | --omit-lvm-modules]" |
77 |
echo " [--builtin=<module>] " |
echo " [--builtin=<module>] [--initramfs | --loopback] [--no-strip]" |
78 |
echo " [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>" |
echo " [--fstab=<fstab>] [--nocompress] <initrd-image> <kernel-version>" |
79 |
echo |
echo |
80 |
echo " (ex: $(basename $0) /boot/initrd-2.2.5-15.img 2.2.5-15)" |
echo " (ex: $(basename $0) /boot/initrd-2.2.5-15.img 2.2.5-15)" |
394 |
--help) usage -n ;; |
--help) usage -n ;; |
395 |
--initramfs) IMAGE_TYPE=initramfs ;; |
--initramfs) IMAGE_TYPE=initramfs ;; |
396 |
--loopback) IMAGE_TYPE=loopback ;; |
--loopback) IMAGE_TYPE=loopback ;; |
397 |
|
--no-strip) NOSTRIP=true ;; |
398 |
*) |
*) |
399 |
if [ -z "${target}" ] |
if [ -z "${target}" ] |
400 |
then |
then |
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 |
# static links |
# static links |
663 |
ln ${DEST}/bin/busybox ${DEST}/bin/${i} || die "${i}" |
ln ${DEST}/bin/busybox ${DEST}/bin/${i} || die "${i}" |
664 |
done |
done |
665 |
|
|
666 |
|
# sbin related |
667 |
|
for i in chroot init losetup modprobe pivot_root |
668 |
|
do |
669 |
|
# static links |
670 |
|
ln ${DEST}/bin/busybox ${DEST}/sbin/${i} || die "${i}" |
671 |
|
done |
672 |
|
|
673 |
# install run-init |
# install run-init |
674 |
echo "$(which run-init.mkinitrd)" |
echo "$(which run-init.mkinitrd)" |
675 |
install -m0755 $(which run-init.mkinitrd) ${DEST}/bin/run-init || die |
install -m0755 $(which run-init.mkinitrd) ${DEST}/sbin/run-init || die |
676 |
|
|
677 |
# install insmod.static |
# install insmod.static |
678 |
echo "$(which insmod.static)" |
echo "$(which insmod.static)" |
679 |
install -m0755 $(which insmod.static) ${DEST}/bin/insmod || die |
install -m0755 $(which insmod.static) ${DEST}/sbin/insmod || die |
680 |
|
|
681 |
# install udev |
# install udev |
682 |
cp -a /etc/udev ${DEST}/etc || die |
cp -a /etc/udev ${DEST}/etc || die |
683 |
install -m0755 /sbin/udev.static ${DEST}/bin/udev || die |
install -m0755 /sbin/udev.static ${DEST}/sbin/udev || die |
684 |
install -m0755 /sbin/udevd.static ${DEST}/bin/udevd || die |
install -m0755 /sbin/udevd.static ${DEST}/sbin/udevd || die |
685 |
install -m0755 /sbin/udevstart.static ${DEST}/bin/udevstart || die |
install -m0755 /sbin/udevstart.static ${DEST}/sbin/udevstart || die |
686 |
|
|
687 |
# install lvm |
# install lvm |
688 |
if [ -n "${vg_list}" ] |
if [ -n "${vg_list}" ] |
689 |
then |
then |
690 |
inst /sbin/lvm.static "${DEST}/bin/lvm" |
inst /sbin/lvm.static "${DEST}/sbin/lvm" |
691 |
if [ -f /etc/lvm/lvm.conf ] |
if [ -f /etc/lvm/lvm.conf ] |
692 |
then |
then |
693 |
cp ${verbose} --parents /etc/lvm/lvm.conf ${DEST}/ |
cp ${verbose} --parents /etc/lvm/lvm.conf ${DEST}/ |
695 |
fi |
fi |
696 |
|
|
697 |
# create some needed device nodes |
# create some needed device nodes |
698 |
|
mkdir ${DEST}/dev/pts || die |
699 |
|
mkdir ${DEST}/dev/shm || die |
700 |
mkdir ${DEST}/dev/mapper || die |
mkdir ${DEST}/dev/mapper || die |
701 |
|
mkdir ${DEST}/dev/misc || die |
702 |
|
mkdir ${DEST}/dev/fb || die |
703 |
|
mkdir ${DEST}/dev/vc || die |
704 |
mknod ${DEST}/dev/console c 5 1 || die |
mknod ${DEST}/dev/console c 5 1 || die |
705 |
mknod ${DEST}/dev/null c 1 3 || die |
mknod ${DEST}/dev/null c 1 3 || die |
706 |
mknod ${DEST}/dev/ram b 1 1 || die |
mknod ${DEST}/dev/ram b 1 1 || die |
726 |
|
|
727 |
[[ ${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 /' |
728 |
|
|
729 |
|
# silencio |
730 |
|
add_initrd 'echo 0 > /proc/sys/kernel/printk' |
731 |
|
|
732 |
add_initrd 'echo "-- Creating inital device nodes ..."' |
add_initrd 'echo "-- Creating inital device nodes ..."' |
733 |
add_initrd 'mount -o mode=0755 -t tmpfs udev /dev' |
add_initrd 'mount -o mode=0755 -t tmpfs udev /dev' |
734 |
add_initrd 'mkdir /dev/pts' |
add_initrd 'mkdir /dev/pts' |
735 |
add_initrd 'mkdir /dev/shm' |
add_initrd 'mkdir /dev/shm' |
736 |
add_initrd 'mkdir /dev/mapper' |
add_initrd 'mkdir /dev/mapper' |
737 |
|
add_initrd 'mkdir /dev/misc' |
738 |
|
add_initrd 'mkdir /dev/fb' |
739 |
|
add_initrd 'mkdir /dev/vc' |
740 |
add_initrd 'mknod /dev/console c 5 1' |
add_initrd 'mknod /dev/console c 5 1' |
741 |
add_initrd 'mknod /dev/null c 1 3' |
add_initrd 'mknod /dev/null c 1 3' |
742 |
add_initrd 'mknod /dev/ram b 1 1' |
add_initrd 'mknod /dev/ram b 1 1' |
752 |
done |
done |
753 |
|
|
754 |
add_initrd 'echo "-- Starting udevd ..."' |
add_initrd 'echo "-- Starting udevd ..."' |
|
add_initrd 'ln -snf bin /sbin' |
|
755 |
add_initrd '/sbin/udevstart' |
add_initrd '/sbin/udevstart' |
756 |
add_initrd 'ln -snf /proc/self/fd /dev/fd' |
add_initrd 'ln -snf /proc/self/fd /dev/fd' |
757 |
add_initrd 'ln -snf fd/0 /dev/stdin' |
add_initrd 'ln -snf fd/0 /dev/stdin' |
762 |
|
|
763 |
add_initrd 'echo "-- Setting up hotplug ..."' |
add_initrd 'echo "-- Setting up hotplug ..."' |
764 |
add_initrd 'echo "/sbin/hotplug" > /proc/sys/kernel/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' |
|
765 |
|
|
766 |
# loading detected modules with options |
# loading detected modules with options |
767 |
for MODULE in ${MODULES} |
for MODULE in ${MODULES} |
827 |
# software suspend |
# software suspend |
828 |
if [ -z "${noresume}" ] |
if [ -z "${noresume}" ] |
829 |
then |
then |
830 |
add_initrd "resume ${swsuspdev}" |
add_initrd "[ -x /bin/resume ] && resume ${swsuspdev}" |
831 |
fi |
fi |
832 |
|
|
833 |
# raid |
# raid |
846 |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
add_initrd 'echo "${device} /sysroot ${rootfs} defaults,ro 0 0" > /etc/fstab' |
847 |
add_initrd 'mount /sysroot' |
add_initrd 'mount /sysroot' |
848 |
|
|
849 |
|
# de-silencio |
850 |
|
add_initrd 'echo 3 > /proc/sys/kernel/printk' |
851 |
|
|
852 |
add_initrd 'echo "-- Switching to real sysroot ..."' |
add_initrd 'echo "-- Switching to real sysroot ..."' |
853 |
add_initrd 'umount /sys' |
add_initrd 'umount /sys' |
854 |
add_initrd 'umount /proc' |
add_initrd 'umount /proc' |
874 |
echo "Coping your modules to '${DEST}/lib' ..." |
echo "Coping your modules to '${DEST}/lib' ..." |
875 |
for MODULE in ${MODULES} |
for MODULE in ${MODULES} |
876 |
do |
do |
877 |
if [ -x /usr/bin/strip ] |
if [ -x /usr/bin/strip ] && [[ ${NOSTRIP} = false ]] |
878 |
then |
then |
879 |
/usr/bin/strip -g ${verbose} ${MODULE} -o ${DEST}/lib/$(basename ${MODULE}) || die |
/usr/bin/strip -g ${verbose} ${MODULE} -o ${DEST}/lib/$(basename ${MODULE}) || die |
880 |
else |
else |
911 |
# clean up |
# clean up |
912 |
[ -d ${DEST} ] && rm -rf ${DEST} |
[ -d ${DEST} ] && rm -rf ${DEST} |
913 |
[ -f ${IMAGE} ] && rm -f ${IMAGE} |
[ -f ${IMAGE} ] && rm -f ${IMAGE} |
914 |
|
|
915 |
|
# all went ok at this point |
916 |
|
exit 0 |