The recipe for Multi-booting from a hard-drive used to be (1) Leave Windows if you have it; (2) 'Custom' install your choice of 'Major Distro' to the partition you selected; then (3) Install Puppys to their own or any other partition; then (4) run grub2config, https://www.forum.puppylinux.com/viewto ... 703#p29703 or add Puppys to the boot manager provided by the Major Distro by customizing it. Adding Puppys to the boot manager provided by the Major Distro by customizing it should still work but is cumbersome.
What running grub2config does, and still tries to do, is install grub2 to sda(1) and generate a grub.cfg which includes listings for Windows and previously installed Major Distros as a 'Chainload' of their respective boot-managers.
The problem is that the 'default' install of a Major Distro sometimes modifies sda(1). Zorin's Version 17, for example, may change sda1 to an extended partition, installing itself to a logical partition it creates. I'm not sure what Manjaro and other Distros using the Calamares installer do. But on two of my computers grub2config could no longer write all required files to sda1. And grub2config does not provide an option other than writing to sda1.
So if you replace a Major distro either with an upgrade or a different Major distro you may find yourself locked out of Puppys [except, perhaps by customizing the grub.cfg of that distro].
The following work-around avoids this for debian, ubuntu and any other Distros using the ubiquity boot installer. Do Not click the 'Install' button on the desktop (or start it from the Menu). Rather open a terminal and run the command 'ubiquity -b'. This will run the installer but NOT install a boot-loader. Then select 'custom install' and choose the partition on which debian/Ubuntu is to be located. [I've found no way to do a custom install without the installer also formatting the partition you chose].
To boot into your new Major Distro [and Puppys] you'll need to install a new boot-manager. I've discovered that grub2config ALMOST does it right. It creates a listing which doesn't boot. Ubiquity has located both specific versions of vmlinuz and initrd.img in /boot with symlinks just named vmlinuz and initrd.img, respectively. Being only one layer below the partition's root, grub2config should find them during booting; but doesn't although it did to create the listing. Edit, actually grub2config does find both, but errors in writing the 'linux' line. see below.
The work-around: See Edit below. Since the Major Distro utilizes the entire partition, open two windows: one to the root of that partition, the other to /boot. From within /boot find and drag thespecific versions of both vmlinuz and initrd.img to the root of the partition, then rename the symlinks created just vmlinuz and initrd.img, respectively. [Attempting to copy the already existent symlinks in /boot was not permitted].
Running grub2config now will generate two listings: one referencing the symlinks named vmlinuz and initrd.gz symlinks at the root of the partition; the other those files in /boot. When you discover which listing doesn't work, delete it. [Untested: delete the symlinks in /boot].
Remember, you'll have to do this each time your Major Distro updates its vmlinuz or initrd.img.
Sample grub Listing after manual edit:
menuentry 'Linux Mint 21.3 Virginia (sda3)'{
search --no-floppy --set=root --fs-uuid cd037026-ETC.
linux /vmlinuz root=UUID=cd037026--ETC quiet splash
initrd /initrd.img
}
I have found no way to circumvent the Calamares insistence on installing a boot-loader.
Edit 25 April 2024:
This grub2 stanza worked with Kubuntu. Similar might also work with Linux Mint.
menuentry 'Kubuntu 22.04.4 LTS (sda4/boot)'{
search --no-floppy --set=root --fs-uuid 5f904af5-31d4-4401-93de-1f95123edd21
linux /boot/vmlinuz root=UUID=5f904af5-31d4-4401-93de-1f95123edd21 quiet splash
initrd /boot/initrd.img
}
grub2config finds the operating system but doesn't provide it with a name. Simple edit of the title. No symbolic link at the partition's root was necessary. Only the linux line had to be edited. As edited, it calls the vmlinuz in /boot. What grub2config had written is noted below. The files, vmlinuz and initrd.img, are symlinks to the actual specified vmlinuz and intrd. This stanza is preferable because --I think-- if and when the kernel is updated those symlinks are replaced by ones pointing to the new versions. So no further 'user-intervention' would be necessary.
linux line as created by grub2config:
linux /boot/vmlinuz/boot/initrd.img root=UUID=5f904af5-31d4-4401-93de-1f95123edd21 quiet splash
"/boot/initrd.img" above --colored in this post for clarity-- was the error. Editing it out solves the issue.