So I need to move my laptop around a lot and it seems wise to boot off the internal SD card reader before I trash the USB ports or worse. Unfortunately, the BIOS does not allow booting from the internal card reader. In researching this I have seen several reports of success with this issue & puppy, for example:
http://murga-linux.com/puppy/viewtopic. ... 19&t=68104 &
http://murga-linux.com/puppy/viewtopic.php?t=77417.
Specifically for puli & this laptop, I am attempting to boot vmlinux & initrd.gz off the internal HD and then have it switch root and grab zdrv & puli sfs's off the SD card. This is similar in concept to using a boot floppy to boot to UBS or CD when the BIOS can't handle it. Puli has no problem using SD cards in the reader after booting is complete so I know all the modules needed are there, Turns out that all modules needed are built-in to the kernel except tifm_7xx1 so that means this approach cannot work without modifying initrd.gz. to provide the missing module. However I am going batty trying to get initrd.gz right. I get kernel panics due to sync failure because the module is not really loaded and the sfs's are not really read.
I use pfix=rdsh to drop into the shell and run commands manually to try and figure out where i am going wrong. probepart_init shows the SD card is not loaded and an ls of /lib/ shows the modules folder and subfolders are all missing even though initrd.gz can be shown to have them. So it seems like there is a problem with file system layering. More evidence pointing to this is when I use a usb drive for the sfs's (and HD for the kernel/root fs) puli boots but is crippled in that certain hardware like the touchpad do not work and /lib is missing folders and files related to kernel modules.
So I may have two separate problems: the separation of critical files on 2 devices and the mechanics of properly adding/modifying all required elements in initrd.gz. Does anyone have a solution to this issue? Can anyone point to a step by step example for moving one module into the initrd.gz that is relevant to puli's design?
(By the way I have made minor modifications to init that are specific to this laptop and puli's kernel and I have increased the sleep time for mmcblk device discovery as recommended by BK)
Edit-7/23/16: SUCCESS. For anyone researching a similar problem, I would like to report that I was able to boot puli 6.0.4 from the pci connected SD drive on this particular laptop. I am using it now to write this. After much troubleshooting, I found that (my) syntax errors were the source of all my woes (kernel panics). Along the way I also found that playing around with sleep commands (as recommended elsewhere) was unnecessary at least for this particular laptop. HOW TO:
1. place vmlinux & initrd.gz on the root directory of the hard drive.
2. place all other puli specific files on the SD card.
3. I use grub4dos as the boot loader. Use menu.lst to pass the location of the following files to the kernel like so: pupsfs=mmcblk0p1:/puppy_puli_6.0.4.sfs pdev=mmcblk0 zdrv=mmcblk0p1:/zdrv_puli_6.0.4.sfs
4. You will need to modify init within initrd.gz. Insert the following at line 193: insmod /lib/modules/TI/tifm_7xx1.ko #160605; tirdoldog (AJS) force loading for mmc discovery.
5. Copy tifm_7xx1.ko into the newly created TI directory located as indicated in initrd.gz.
That’s it. I have been testing/using for the last 6 weeks with no observed problems. IMPORTANT NOTE. Unless you have an HP compaq laptop made circa 2004-2006 with a TI internal card reader, this how to will likely not work for you. However, you can use it as a template to modify for your particular hardware. Hope you find this useful.