This howto allows you to construct a very small Void Linux compatible WDL_Void commandline desktop core distro, which can easily be expanded to full-on X graphical desktop WDL_Void distro. For convenience, and small size out-of-the-box, for this example I've used a FossaPup kernel/modules combination, but this is a fully Void Linux repo compatible distro and not a Puppy hybrid - any kernel/modules combination could be used including (probably best overall) official ones from Void Linux repo.
1. Create empty bootdir in boot partition of choice naming it WDL_Void (or whatever).
Into that WDL_Void directory put the following:
a. The main build_firstrib_rootfs script via the get_WDL_build_firstrib_rootfs_XXXrcX.sh script from here: viewtopic.php?p=37093#p37093
Remove the dummy tar and make it executable with chmod +x prior to running it.
Once you've fetched build_firstrib_rootfs script make it executable with chmod +x
b. The build plugin "f_00_Void_generic_NoX_WDLteam_vXXXrcX.plug" also from: viewtopic.php?p=37093#p37093
(Use the actual filename version_release numbers and not the XXX...X of course...). This plugin is a modified version of rockedge's original.
2. Now build the WDL_Void firstrib_rootfs by entering the following two commands at a terminal opened at that WDL_Void directory (choosing a suitable Void Linux repo near you):
Code: Select all
export CONNECTION_TIMEOUT=-1
./build_firstrib_rootfs-XXX.sh void default amd64 f_00_Void_generic_NoX_WDLteam_vXXXrcX.plug
The above will take a while as it downloads the Void Linux packages and builds the firstrib_rootfs ready to make bootable via WDL skeleton initrd.gz.
3. Into the WDL_Void directory now also put the following:
a. The Fossapup kernel (renamed to vmlinuz-linuz), and zdrXXX.sfs).
IMPORTANT: Now rename zdrvXXX.sfs to 00zdrvXXX.sh (i.e. two zeros at front of its filename since it is needed at overlayfs layer 00 to work correctly).
b. The get_WDLskelinitrdXXXrcX.sh script (NOT the kmod one), which you can obtain from here: https://weedoglinux.rockedge.org/viewto ... p=355#p355
(remove the dummy tar)
NOTE WELL!!! Use the latest 401 version only.
Make that executable with
Code: Select all
chmod +x get_WDLskelinitrdXXXrcX.sh
and
run it with command:
./get_WDLskelinitrdXXXrcX.sh
to fetch the standard WDL skeleton intrdXXXXX.gz (IMPORTANT: also now version 401), the modify_initrd_gz.sh script, and the external w_initXXXX code file.
4. Rename that initrdXXXXX.gz to initrd.gz
5. You now need to enter suitable firmware for your system into firstrib_rootfs at location firstrib_rootfs/usr/lib/firmware
If you wish, you can mount FossaPups fdrvXXX.sfs and extract all of its lib/firmware contents and put that in firstrib_rootfs/usr/lib/firmware EDIT IMPORTANT: No, can't use Fossapup fdrv firmware - you should use official Void Linux firmware even if using Puppy kernel and zdrv (see my NOTE WELL at foot of this post).
Alternatively, only take the (e.g. internet connect) firmware you need. I simply took the appropriate iwlwifi firmware for my system. Others may want ethernet firmware or bluetooth or whatever you definitely want to include for your specific system).
6. Now rename firstrib_rootfs directory to 08firstrib_rootfs, so that it occupies that overlayfs layer 08 position on booting - the 08 is just my preference to allow space above and below for other sfs addons such as 10gtkdialogGTK3_filemnt64.sfs.
7. You should now be able to boot it with a typical WDL menu.lst (or grub.cfg alternative format) such as:
Code: Select all
title WDL_Void
find --set-root uuid () b812c597-8099-4bee-9bb3-8b9c10f1e902
kernel /WDL_Void/vmlinuz-linux w_bootfrom=UUID=b812c597-8099-4bee-9bb3-8b9c10f1e902=/WDL_Void
initrd /WDL_Void/initrd.gz
8. By default, login is user=root passwd=root
NOTE: As long as you've installed suitable firmware for either ethernet or wlan into your firstrib_rootfs/usr/lib/firmware directory, you should usually be able to connect to the internet by simply entering the command:
Code: Select all
wiakwifi
Later if you lose connection, you can re-establish it with the command: wiakwifi reconnect
Also, you can mount filesystems with the command: wd_mount (for example: wd_mount sda4)
Consult Void Linux documentation for how to use xbps package manager to install other packages (or package templates).
9. Once you are satisfied WDL_Void is booting and working successfully, from your build distro you can compress the 08firstrib_rootfs/ directory with command such as:
Code: Select all
mksquashfs 08firstrib_rootfs/ 08firstrib_rootfs.sfs
Then you need to either delete directory 08firstrib_rootfs/ or make it inactive via renaming it to say, D08firstrib_rootfs/ prior to rebooting
You can always reactivate (rename) it back to 08firstrib_rootfs later, if you wish, in which case you would need to deactivate the sfs version by renaming to, for example, D08firstrib_rootfs.sfs.
Using only iwlwifi firmware, and Fossapup huge kernel and associated zdrv, and xz-compressed 08firstrib_rootfs.sfs, my own WDL_Void directory ended up being only 79MB in size (including bash/midnight-commander/wpa_supplicant/busybox/runit commandline-only full PAM/multi-user desktop including the excellent official Void Linux xbps package manager giving full Void Linux repo access) so there is plenty of scope for making very small WDL distros even with added X and GUI window manager and so on.
It's very easy to expand. Just look at the contents of f_00_Void_generic_NoX_WDLteam_vXXXrcX.plug in geany and you'll see how to do it...
In practice the firstrib_rootfs can alternatively also be easily added to from the build host via some optional WeeDogLinux utilities: mount_chrootXXX.sh and umount_chrootXXX.sh, which I'll explain usage of later.
rockedge can no doubt suggest the extra commandlines to add to the f_00_Void_generic_NoX_WDLteam_vXXXrcX.plug file if you want X and JWM manager and Puppy look and feel... Alternative, you can use the same extra xbps-install commands and configs from the booted system (or via mount_chroot/umount_chroot WDL utilities to be explained later). By the way, yes, you can use 10gtkdialogGTK3_filemnt64.sfs with this for the likes of filemount fullpathto/anyfile.iso to open up in Midnight Commander filemanager, but obviously that addon will be more useful once you've installed X, gtk+, a window manager such as JWM, and a file manager such as pcmanfm (or Rox if you so prefer). Note that Void Linux is a particular efficient and rock-solid distro, with an excellent 'xbps' package manager and repos, and thus so is this frugally installed WDL_Void.
wiak