But whereas 'initmodules' provides a list of modules to 'init' that get loaded as soon as the 'zdrv...sfs' is available,
'initrdmodules' actually copies the modules into the current 'initrd.gz'.
So 'init' can 'insmod' these modules before it attempts fo acesss any disks and before it writes any messages.
Because 'insomd' is used to load the modules, dependencies as defined in 'modules.dep' are also copied.
This means that 'init' can run a Puppy installed on an "mmc" drive that needs a 'kernel/drivers/mmc/host/' module for access,
and it can immediately display it's first message on a screen that needs a 'kernel/drivers/hid/' module.
It also means that keyboards that require a 'kernel/drivers/hid/' module or a 'kernel/drivers/usb/host/' module, will work after 'init' fatal errors.
This project was prompted by this "http://www.murga-linux.com/puppy/viewto ... 99#1049199".
To try:
Download extra sfs 'initrdmodules_6.sfs' from http://www.mediafire.com/folder/0f33m6a ... trdmodules (1,3 MiB).
This is a test sfs, so it contains an 'initrd.gz' with a patched 'init',
and a test script, 'mods-initrd-this', to install this 'initrd.gz' as the current 'initrd.gz' with the current DISTRO_SPECS.
1. Load 'initrdmodules_6.sfs' as an extra sfs.
2. In a console run:
Code: Select all
initrdmodules -h
3. Run
Code: Select all
initrdmodules -l
If there are no modules listed, then installing the included 'initrd.gz' should not make any difference.
4. If there are some modules listed, then run
Code: Select all
mods-initrd-this
Your current 'initrd.gz' will be moved to something like 'initrd_9999.gz'.
5. Run
Code: Select all
initrdmodules -c
6. Reboot.
Note1: If the patched 'init' actually loads any modules, it will not run the 'initmodules' code.
This is because any modules that would have been loaded via 'initmodules' should have already been loaded.
Note2: The included 'initrd.gz' has been extracted from 'ScPup-20.01+2-T.iso', but it should boot most woof-ce Puppies.
It worked Ok for me with xenialpup, xenialpup64, bionicpup32, bionicpup64 and ScPup64.
The only thing that changes is the DISTRO_SPECS file.
I have attached the patch file for the 'init' script as 'mods.diff'.
gyro