diff --git a/gen_cmdline.sh b/gen_cmdline.sh
index ef18dc9..bcb36b6 100755
--- a/gen_cmdline.sh
+++ b/gen_cmdline.sh
@@ -26,7 +26,8 @@ usage() {
echo " --no-install Do not install kernel after building"
echo " --kerneldir=
Location of kernel source"
echo " --kernel-config= Kernel configuration file to use for compilation"
- echo " Low-Level Compile settings"
+ echo " --no-initrdmodules Don't copy modules to initrd"
+ echo " Low-Level Compile settings"
echo " --kernel-cc= Compiler to use for kernel (e.g. distcc)"
echo " --kernel-ld= Linker to use for kernel"
echo " --kernel-as= Assembler to use for kernel"
@@ -142,6 +143,10 @@ parse_cmdline() {
CMD_NOINSTALL=1
print_info 2 "CMD_NOINSTALL: $CMD_NOINSTALL"
;;
+ --no-initrdmodules)
+ CMD_NOINITRDMODULES=1
+ print_info 2 "CMD_NOINITRDMODULES: $CMD_NOINITRDMODULES"
+ ;;
--arch-override*)
CMD_ARCHOVERRIDE=`parse_opt "${x}"`
print_info 2 "CMD_ARCHOVERRIDE: $CMD_ARCHOVERRIDE"
diff --git a/gen_determineargs.sh b/gen_determineargs.sh
index e26b55e..057f85b 100644
--- a/gen_determineargs.sh
+++ b/gen_determineargs.sh
@@ -122,4 +122,8 @@ determine_real_args() {
MINKERNPACKAGE="${CMD_MINKERNPACKAGE}"
fi
+ if [ "${CMD_NOINITRDMODULES}" != "" ]
+ then
+ NOINITRDMODULES="${CMD_NOINITRDMODULES}"
+ fi
}
diff --git a/gen_initrd.sh b/gen_initrd.sh
index c61d0d6..1bfbf56 100644
--- a/gen_initrd.sh
+++ b/gen_initrd.sh
@@ -53,17 +53,20 @@ create_base_initrd_sys() {
bunzip2 "${TEMP}/initrd-temp/bin/busybox.bz2" || gen_die "could not uncompress busybox"
chmod +x "${TEMP}/initrd-temp/bin/busybox"
- if [ "${PAT}" -gt "4" ]
+ if [ "${NOINITRDMODULES}" = "" ]
then
- cp "${MODULE_INIT_TOOLS_BINCACHE}" "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not copy insmod.static from bincache"
- else
- cp "${MODUTILS_BINCACHE}" "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not copy insmod.static from bincache"
+ if [ "${PAT}" -gt "4" ]
+ then
+ cp "${MODULE_INIT_TOOLS_BINCACHE}" "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not copy insmod.static from bincache"
+ else
+ cp "${MODUTILS_BINCACHE}" "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not copy insmod.static from bincache"
+ fi
+
+ bunzip2 "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not uncompress insmod.static"
+ mv "${TEMP}/initrd-temp/bin/insmod.static" "${TEMP}/initrd-temp/bin/insmod"
+ chmod +x "${TEMP}/initrd-temp/bin/insmod"
fi
- bunzip2 "${TEMP}/initrd-temp/bin/insmod.static.bz2" || gen_die "could not uncompress insmod.static"
- mv "${TEMP}/initrd-temp/bin/insmod.static" "${TEMP}/initrd-temp/bin/insmod"
- chmod +x "${TEMP}/initrd-temp/bin/insmod"
-
cp "${DEVFSD_BINCACHE}" "${TEMP}/initrd-temp/bin/devfsd.bz2" || gen_die "could not copy devfsd executable from bincache"
bunzip2 "${TEMP}/initrd-temp/bin/devfsd.bz2" || gen_die "could not uncompress devfsd"
chmod +x "${TEMP}/initrd-temp/bin/devfsd"
@@ -98,44 +101,30 @@ create_initrd_modules() {
else
MOD_EXT=".o"
fi
-# local modc i mods mymod
-# for modc in storage firewire ataraid pcmcia usb
-# do
-# for
-# mkdir -p ${TEMP}/initrd-temp/lib/modules/${modc}
-# mods=`echo $modc | tr [:lower:] [:upper:]`_MODULES
-# eval mymods=\$$mods
-# for i in ${mymods}
- for i in `gen_dep_list`
- do
- print_info 2 "$i : module searching" 1 0
- mymod=`find /lib/modules/${KV} -name "${i}${MOD_EXT}"`
- if [ -z "${mymod}" ]
- then
- print_info 2 "Warning : ${i}${MOD_EXT} not found; skipping..."
- continue;
- fi
- print_info 2 "copying ${mymod} to initrd"
- cp -ax --parents "${mymod}" "${TEMP}/initrd-temp"
- done
-# done
+ for i in `gen_dep_list`
+ do
+ print_info 2 "$i : module searching" 1 0
+ mymod=`find /lib/modules/${KV} -name "${i}${MOD_EXT}"`
+ if [ -z "${mymod}" ]
+ then
+ print_info 2 "Warning : ${i}${MOD_EXT} not found; skipping..."
+ continue;
+ fi
+ print_info 2 "copying ${mymod} to initrd"
+ cp -ax --parents "${mymod}" "${TEMP}/initrd-temp"
+ done
cp -ax --parents /lib/modules/${KV}/modules* ${TEMP}/initrd-temp
-# cat ${GK_SHARE}/${ARCH}/linuxrc | sed -e "s/%%STORAGE_MODULES%%/${STORAGE_MODULES}/" \
-# -e "s/%%FIREWIRE_MODULES%%/${FIREWIRE_MODULES}/" \
-# -e "s/%%ATARAID_MODULES%%/${ATARAID_MODULES}/" \
-# -e "s/%%PCMCIA_MODULES%%/${PCMCIA_MODULES}/" \
-# -e "s/%%USB_MODULES%%/${USB_MODULES}/" \
-# > ${TEMP}/initrd-temp/linuxrc
-
mkdir -p "${TEMP}/initrd-temp/etc/modules"
print_list ${SCSI_MODULES} > "${TEMP}/initrd-temp/etc/modules/scsi"
print_list ${FIREWIRE_MODULES} > "${TEMP}/initrd-temp/etc/modules/firewire"
print_list ${ATARAID_MODULES} > "${TEMP}/initrd-temp/etc/modules/ataraid"
print_list ${PCMCIA_MODULES} > "${TEMP}/initrd-temp/etc/modules/pcmcia"
print_list ${USB_MODULES} > "${TEMP}/initrd-temp/etc/modules/usb"
+}
+create_initrd_aux() {
if [ -f "${GK_SHARE}/${ARCH}/linuxrc" ]
then
cp "${GK_SHARE}/${ARCH}/linuxrc" "${TEMP}/initrd-temp/linuxrc"
@@ -167,6 +156,7 @@ create_initrd_modules() {
chmod +x "${TEMP}/initrd-temp/etc/initrd.scripts"
chmod +x "${TEMP}/initrd-temp/etc/initrd.defaults"
chmod +x "${TEMP}/initrd-temp/sbin/modprobe"
+
}
calc_initrd_size() {
@@ -182,8 +172,16 @@ create_initrd() {
print_info 1 "initrd: creating base system"
create_base_initrd_sys
- print_info 1 "initrd: copying modules"
- create_initrd_modules
+ if [ "${NOINITRDMODULES}" = "" ]
+ then
+ print_info 1 "initrd: copying modules"
+ create_initrd_modules
+ else
+ print_info 1 "initrd: not copying modules"
+ fi
+
+ print_info 1 "initrd: copying auxilary files"
+ create_initrd_aux
print_info 1 "initrd: calculating initrd size"
INITRD_CALC_SIZE=`calc_initrd_size`
diff --git a/generic/linuxrc b/generic/linuxrc
index 1269ada..67f27a0 100644
--- a/generic/linuxrc
+++ b/generic/linuxrc
@@ -53,13 +53,17 @@ do
done
done
-echo "STEP 2: Module loading"
-
-# Load appropriate kernel modules
-for x in $MY_HWOPTS
-do
- modules_scan $x
-done
+if [ -d "/lib/modules" ]
+then
+ echo "STEP 2: Module loading"
+ # Load appropriate kernel modules
+ for x in $MY_HWOPTS
+ do
+ modules_scan $x
+ done
+else
+ echo "STEP 2: Skipping module load. No modules in initrd"
+fi
echo "STEP 3: Mounting necessary filesystems per boot options"
diff --git a/genkernel.sh b/genkernel.sh
index 775bdb8..d2835e6 100755
--- a/genkernel.sh
+++ b/genkernel.sh
@@ -71,12 +71,16 @@ fi
# Compile Busybox
compile_busybox
-if [ "${PAT}" -gt "4" ]
+# Only compile insmod if we're installing modules onto the initrd
+if [ "${NOINITRDMODULES}" = "" ]
then
- # Compile module-init-tools
- compile_module_init_tools
-else
- compile_modutils
+ if [ "${PAT}" -gt "4" ]
+ then
+ # Compile module-init-tools
+ compile_module_init_tools
+ else
+ compile_modutils
+ fi
fi
compile_devfsd