wanderer wrote: Tue Nov 24, 2020 9:52 am
hi rufwoof i am trying to follow what you are doing
Basically just compiling my own bespoke kernel with all modules/firmware built in. So very machine specific, but small.
Load the devx sfs for whatever system you use, download the kernel source tarball from kernel.org, extract that and then run make localyesconfig ... to create a .config file for your particular hardware. If prior to doing that you 'use' as much of your system as possible, camera, attach/mount usb's ...etc. then when make localyesconfig runs it should pick up on all of the modules that you used.
Once make localyesconfig finishes, run the actual build. Adding the number of cores you have as a -jN parameter helps speed up compile time. On my four core system for instance I run
make -j4
When that finishes you'll have a sub folder arch/x86/boot/bzImage ... that you can just rename to vmlinuz i.e. the kernel.
To further refine that, if you run make menuconfig in a terminal then you can wade through the settings to perhaps remove or add additional elements and then after saving the changes run make -j4 again to recompile. Such repeated recompiles usually run through pretty quickly, maybe a couple of minutes. After numerous repeats of that cycle I've got my vmlinuz down to around 5MB and where there's no need for additional modules/firmware (which otherwise can make up a considerable large part of a Puppy).
If/when you want to update the kernel to the next dot release, then download/extract that version, copy in your .config file and run make oldconfig ... to import that config into the new kernel source, and run make -j4 ... to produce a new bzImage (a.k.a. vmlinuz).
On top of that you of course need a initrd (and busybox within that). i.e. the 'userland'.
viewtopic.php?p=6922#p6922
viewtopic.php?f=60&t=964
I have a server i.e. a old desktop/tower that is connected to the TV, so I can boot the above, in which I also add framebuffer vnc, so I can boot and vnc into that desktop system and see the same screen (gui desktop) on both the TV and my laptop, and play videos/whatever as though the laptop was a advanced remote-control type 'terminal' device. If I open up the vnc port on my router, I can vnc into the desktop from anywhere. I find however that tunnelling vnc through a ssh tunnel where compression is set on works much better/quicker. So for instance if vnc is running on port 5900 and I open up port fowarding in the router for that, and my external IP address is 123.123.123.123, then on the client (laptop/remote system)
ssh -f -t -C -N -L 5900:localhost:5900 123.123.123.123
means I can just run vnc localhost on the laptop/client to have that route through the ssh tunnel to the desktop (and where -C = ssh compression is turned on).
When you can remote control your desktop/home system from anywhere, you can obviously start adding functionality to that, such as cameras attached to the home desktop/server ... or whatever. It also means that you can browse/whatever using your home system and internet connection remotely through a ssh tunnel which is more secure as pre-defined keys are involved (ssh), so the cafe/whatever wifi hot spot you may be using can't man-in-middle attack you. A bit like a VPN, but where you're the VPN service provider rather than outsourcing that to others (where trust/payments are involved).
I've been meaning to get into pi's for some time now i.e. replace the desktop server with a lower (electrical) power/smaller device, or potentially set up multiple pi servers. At least that is the intent.
A neat 'trick' is that the laptop isn't running X, is very lightweight (around 12MB with wifi/ssh/mc ..etc.) total size (vmlinuz and initrd), but has capacity to run full gui desktop (through vnc). Similarly the server doesn't have to be running X either, it can be headless (cli only). If you set up kvm/qemu then it can boot any iso (or image file, or vmlinuz/initrd) and be set to serve vnc (i.e. the gui desktop that your laptops sees) simply by adding -vnc :1 as a qemu parameter (that then is accessible by vnc'ing into port 5901). kvm/qemu runs at as good as native speeds, as though you had installed and booted it directly, but where qemu can boot any (or multiples of) iso files, so your laptop might vnc into one qemu running perhaps Windows, vnc into another running Puppy .. or whatever, and have access to/use those ... concurrently. And if those servers are left running, then you can disconnect the vnc session, and re-connect again later to drop straight into a gui desktop as it was last left ... near instantly (or where it had move onto, such as if rendering a large video, or doing a large compile/whatever). Yet another nice element is that you can set the vnc to accept multiple connections, so several can vnc into the exact same desktop. So if you're at home and your son/daughter vnc into the home server, you can see that on the TV (server) whilst typing text/whatever using your laptop whilst sitting on the couch. Or even have them play a sound through the speakers attached to the server - to attract your attention to turn the TV from normal broadcast channels to the VGA/whatever channel/input ('dad are you there?' ... type 'ring'). And they don't have to be running a Puppy to do that, most devices support vnc client (phone, Windows ..etc.).
Yes you can do similar in other ways, but a large part of Puppy/Dogs is the DIY fun element.