Append e2fsck and mke2fs to initramfs
[genkernel.git] / gen_initramfs.sh
index 43ef1550526288ba0e741adeb050cc8a389c0c6c..ee21d2f908212dbe4f28e16d26eab1bf3effe065 100755 (executable)
@@ -127,6 +127,23 @@ append_busybox() {
        rm -rf "${TEMP}/initramfs-busybox-temp" > /dev/null
 }
 
+append_e2fstools(){
+       if [ -d "${TEMP}"/initramfs-e2fsprogs-temp ]
+       then
+               rm -r "${TEMP}"/initramfs-e2fsprogs-temp
+       fi
+
+       cd "${TEMP}" \
+                       || gen_die "cd '${TEMP}' failed"
+       mkdir -p initramfs-e2fsprogs-temp
+       copy_binaries "${TEMP}"/initramfs-e2fsprogs-temp/ /sbin/{e2fsck,mke2fs}
+
+       cd "${TEMP}"/initramfs-e2fsprogs-temp \
+                       || gen_die "cd '${TEMP}/initramfs-e2fsprogs-temp' failed"
+       find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}"
+       rm -rf "${TEMP}"/initramfs-e2fsprogs-temp > /dev/null
+}
+
 append_blkid(){
        if [ -d "${TEMP}/initramfs-blkid-temp" ]
        then
@@ -577,6 +594,41 @@ append_modules() {
        rm -r "${TEMP}/initramfs-modules-${KV}-temp/"   
 }
 
+append_modprobed() {
+       local TDIR="${TEMP}/initramfs-modprobe.d-temp"
+       if [ -d "${TDIR}" ]
+       then
+               rm -r "${TDIR}"
+       fi
+
+       mkdir -p "${TDIR}/etc/module_options/"
+
+       # Load module parameters
+       for dir in $(find "${MODPROBEDIR}"/*)
+       do
+               while read x
+               do
+                       case "${x}" in
+                               options*)
+                                       module_name="$(echo "$x" | cut -d ' ' -f 2)"
+                                       [ "${module_name}" != "$(echo)" ] || continue
+                                       module_options="$(echo "$x" | cut -d ' ' -f 3-)"
+                                       [ "${module_options}" != "$(echo)" ] || continue
+                                       echo "${module_options}" >> "${TDIR}/etc/module_options/${module_name}.conf"
+                               ;;
+                       esac
+               done < "${dir}"
+       done
+
+       cd "${TDIR}"
+       log_future_cpio_content
+       find . -print | cpio ${CPIO_ARGS} --append -F "${CPIO}" \
+                       || gen_die "compressing modprobe.d cpio"
+
+       cd "${TEMP}"
+       rm -rf "${TDIR}" > /dev/null
+}
+
 # check for static linked file with objdump
 is_static() {
        LANG="C" LC_ALL="C" objdump -T $1 2>&1 | grep "not a dynamic object" > /dev/null
@@ -706,6 +758,7 @@ create_initramfs() {
        append_data 'base_layout'
        append_data 'auxilary' "${BUSYBOX}"
        append_data 'busybox' "${BUSYBOX}"
+       append_data 'e2fstools'
        append_data 'lvm' "${LVM}"
        append_data 'dmraid' "${DMRAID}"
        append_data 'iscsi' "${ISCSI}"
@@ -729,6 +782,8 @@ create_initramfs() {
 
        append_data 'splash' "${SPLASH}"
 
+       append_data 'modprobed'
+
        if isTrue "${FIRMWARE}" && [ -n "${FIRMWARE_DIR}" ]
        then
                append_data 'firmware'