39 |
MODULES="" |
MODULES="" |
40 |
PREMODS="" |
PREMODS="" |
41 |
NOSTRIP=false |
NOSTRIP=false |
42 |
|
FIRMWARE_PATH="/lib/firmware" |
43 |
|
FIRMWARE_FILES="" |
44 |
|
|
45 |
[ -e /etc/conf.d/mkinitrd ] && . /etc/conf.d/mkinitrd |
[ -e /etc/conf.d/mkinitrd ] && . /etc/conf.d/mkinitrd |
46 |
|
|
344 |
echo ${UUID} |
echo ${UUID} |
345 |
} |
} |
346 |
|
|
347 |
|
add_firmware() |
348 |
|
{ |
349 |
|
local firmware="$1" |
350 |
|
local i |
351 |
|
|
352 |
|
# check if given firmware is already included in FIRMWARE_FILES |
353 |
|
for i in ${FIRMWARE_FILES} |
354 |
|
do |
355 |
|
[[ ${firmware} = ${i} ]] && return 0 |
356 |
|
done |
357 |
|
|
358 |
|
# include firmware |
359 |
|
FIRMWARE_FILES="${FIRMWARE_FILES} ${firmware}" |
360 |
|
} |
361 |
|
|
362 |
# need r00t privs |
# need r00t privs |
363 |
[[ $(id -u) != 0 ]] && die "you must be r00t." |
[[ $(id -u) != 0 ]] && die "you must be r00t." |
364 |
|
|
771 |
|
|
772 |
add_initrd 'mount -t proc proc /proc' |
add_initrd 'mount -t proc proc /proc' |
773 |
add_initrd 'mount -t sysfs sysfs /sys' |
add_initrd 'mount -t sysfs sysfs /sys' |
774 |
add_initrd 'mount -t tmpfs tmpfs /dev -o rw,mode=0644,size=1024' |
add_initrd "if [[ -z \$(grep '[[:space:]]/dev[[:space:]]' /proc/mounts | cut -d ' ' -f2) ]]" |
775 |
|
add_initrd 'then' |
776 |
|
add_initrd ' # many video drivers needed exec access' |
777 |
|
add_initrd ' fstype=ramfs' |
778 |
|
add_initrd ' # tmpfs was suggested by Greg Kroah-Hartman' |
779 |
|
add_initrd " [[ \$(grep '[[:space:]]tmpfs' /proc/filesystems | cut -d \$'\\t' -f2) = tmpfs ]] && fstype=tmpfs" |
780 |
|
add_initrd ' # mount devtmpfs if supported' |
781 |
|
add_initrd " [[ \$(grep '[[:space:]]devtmpfs' /proc/filesystems | cut -d \$'\\t' -f2) = devtmpfs ]] && fstype=devtmpfs" |
782 |
|
add_initrd ' mount -t ${fstype} dev /dev -o exec,nosuid,mode=0755,size=10M' |
783 |
|
add_initrd 'fi' |
784 |
|
|
785 |
[[ ${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 /' |
786 |
|
|
833 |
add_initrd "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online" |
add_initrd "echo -n 1 > /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online" |
834 |
done |
done |
835 |
fi |
fi |
836 |
|
|
837 |
|
# get firmware files if neccessary |
838 |
|
if [ -x $(which modinfo 2> /dev/null) ] |
839 |
|
then |
840 |
|
firmware_blobs=$(modinfo ${module}${text} | grep 'firmware:' | sed 's:^firmware\:.*[[:space:]]\(.*\):\1:') |
841 |
|
if [[ ! -z ${firmware_blobs} ]] |
842 |
|
then |
843 |
|
for firmware in ${firmware_blobs} |
844 |
|
do |
845 |
|
add_firmware "${firmware}" |
846 |
|
done |
847 |
|
fi |
848 |
|
else |
849 |
|
echo "Warning 'modinfo' not found" |
850 |
|
fi |
851 |
done |
done |
852 |
|
|
853 |
# respect rootdelay kernel param |
# respect rootdelay kernel param |
854 |
add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in rootdelay=*) ROOTDELAY="${i#*=}";; esac; done' |
add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in rootdelay=*) ROOTDELAY="${i#*=}";; esac; done' |
855 |
add_initrd 'if [ ! -z "${ROOTDELAY}" ]; then echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."; sleep ${ROOTDELAY};fi' |
add_initrd 'if [ ! -z "${ROOTDELAY}" ]; then echo "-- Requested a rootdelay of ${ROOTDELAY} seconds ..."; sleep ${ROOTDELAY};fi' |
856 |
|
|
857 |
|
# respect cpufreq.governor kernel param |
858 |
|
add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in cpufreq.governor=*) CPUFREQ_GOVERNOR="${i#*=}";; esac; done' |
859 |
|
add_initrd 'if [ ! -z "${CPUFREQ_GOVERNOR}" ]; then case "${CPUFREQ_GOVERNOR}" in performance|conservative|powersave|ondemand|userspace) echo "-- Set ${CPUFREQ_GOVERNOR} as default cpufreq.governor"; for cpu in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "${CPUFREQ_GOVERNOR}" > "${cpu}"; done;; *) echo "-- Unknown cpufreq.governor ${CPUFREQ_GOVERNOR} selected, doing nothing";; esac; fi' |
860 |
|
|
861 |
# lvm support |
# lvm support |
862 |
if [ -n "${vg_list}" ] |
if [ -n "${vg_list}" ] |
863 |
then |
then |
899 |
# get the right initexec |
# get the right initexec |
900 |
add_initrd "INITEXEC=\"${INITEXEC}\"" |
add_initrd "INITEXEC=\"${INITEXEC}\"" |
901 |
# support init=* from cmdline |
# support init=* from cmdline |
902 |
add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = init=* ]]; then INITEXEC=${i/init=}; fi; done' |
add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in init=*) INITEXEC="${i#*=}";; esac; done' |
903 |
|
|
904 |
add_initrd 'echo "-- Mounting sysroot ..."' |
add_initrd 'echo "-- Mounting sysroot ..."' |
905 |
add_initrd '. /etc/rootdev' |
add_initrd '. /etc/rootdev' |
913 |
add_initrd 'echo 3 > /proc/sys/kernel/printk' |
add_initrd 'echo 3 > /proc/sys/kernel/printk' |
914 |
|
|
915 |
add_initrd 'BREAK_ENABLED=no' |
add_initrd 'BREAK_ENABLED=no' |
916 |
add_initrd 'for i in $(cat /proc/cmdline); do if [[ ${i} = break ]]; then BREAK_ENABLED=yes; fi; done' |
add_initrd 'for i in $(cat /proc/cmdline); do case ${i} in break) BREAK_ENABLED=yes;; esac; done' |
917 |
add_initrd 'if [[ ${BREAK_ENABLED} = yes ]]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi' |
add_initrd 'if [ "${BREAK_ENABLED}" = "yes" ]; then echo "-- Break requested, type 'exit' to resume operation ..."; ash; fi' |
918 |
|
|
919 |
add_initrd 'echo "-- Switching to real sysroot ..."' |
add_initrd 'echo "-- Switching to real sysroot ..."' |
920 |
add_initrd 'umount /dev' |
add_initrd 'mount --move /dev /sysroot/dev' |
921 |
add_initrd 'umount /sys' |
add_initrd 'mount --move /sys /sysroot/sys' |
922 |
add_initrd 'umount /proc' |
add_initrd 'mount --move /proc /sysroot/proc' |
923 |
|
|
924 |
[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console' |
[[ ${IMAGE_TYPE} = initramfs ]] && add_initrd 'exec run-init /sysroot ${INITEXEC} $@ </sysroot/dev/console >/sysroot/dev/console' |
925 |
if [[ ${IMAGE_TYPE} = loopback ]] |
if [[ ${IMAGE_TYPE} = loopback ]] |
952 |
fi |
fi |
953 |
done |
done |
954 |
|
|
955 |
|
# install firmware if neccessary |
956 |
|
if [[ ! -z ${FIRMWARE_FILES} ]] |
957 |
|
then |
958 |
|
for firmware in ${FIRMWARE_FILES} |
959 |
|
do |
960 |
|
if [ -e ${FIRMWARE_PATH}/${firmware} ] |
961 |
|
then |
962 |
|
echo "installing firmware '${firmware}'" |
963 |
|
install ${verbose} -d ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die |
964 |
|
cp ${verbose} -a ${FIRMWARE_PATH}/${firmware} ${DEST}/${FIRMWARE_PATH}/${firmware%/*} || die |
965 |
|
fi |
966 |
|
done |
967 |
|
fi |
968 |
|
|
969 |
# create the image |
# create the image |
970 |
echo "Creating initrd image '${target}' ..." |
echo "Creating initrd image '${target}' ..." |
971 |
if [[ ${IMAGE_TYPE} = initramfs ]] |
if [[ ${IMAGE_TYPE} = initramfs ]] |