O que você está tentando alcançar é ampliar a tecnologia de inicialização :) No entanto, acho que é possível, embora não tenha conhecimento suficiente para dar uma explicação completa.
Primeiro, como dito anteriormente, as distros têm requisitos muito diferentes. Segundo, a coisa boa, por outro lado, você também pode encontrar distros que precisam de requisitos mínimos.
Eu recomendaria usar o GRUB4DOS como carregador de inicialização. Veja este link como usá-lo com USB (porque possui o comando find --set root -, que é importante se você tiver um dispositivo móvel como USB).
Então você tem que decidir quantas partições você usará. A "instalação completa" padrão está sempre em uma única partição. Portanto, se você tiver um pendrive USB de 8 GB e tiver uma partição de 4 GB (o que permite uma instalação mínima), você estará limitado a 2 "Instalações completas" diferentes das principais distros, como Debian ou Fedora.
No entanto, existem algumas distribuições Linux pequenas e especializadas. Por exemplo, "Puppy Linux" é muito pequeno e possui um modo especial "Instalação Frugal". Ele vem em vários sabores (por exemplo, existe o MacPup com tentativas de implementar uma Apple como o Desktop ou o Fatdog64, que é um Linux de 64 bits).
Neste modo de "instalação Frugal", ele usa exatamente 1 diretório e pode ser instalado em paralelo com um Linux ou Windows existente no disco rígido (ou USB). Estou certo de que existem outras distribuições que suportam modos semelhantes.
Como o Puppy Linux é pequeno (<150 MB) e supondo que você reserve um pequeno arquivo de salvamento para cada instalação (512 MB), você pode instalar facilmente 10 sistemas operacionais diferentes no pendrive. Existem Linux ainda menores (Slitaz, Tinycore), que você pode usar.
Como exemplo, eu anexo o arquivo menu.lst (GRUB4DOS) da minha instalação atual do PC. As primeiras 8 entradas são todas diferentes da instalação do Puppy Linux no hd0,2 (ou seja, a 3ª partição no 1º disco rígido), então há um mínimo Instalação do Debian em uma pequena partição extra e também no Windows XP original.
timeout=10
default=0
title Linux Buero (on /dev/sda3)
root (hd0,2)
kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
initrd /puppy431-de/initrd.gz
title Live CD build (on /dev/sda3)
root (hd0,2)
kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
initrd /puppylivecdbuild/initrd.gz
title sage developement(on /dev/sda3)
root (hd0,2)
kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
initrd /Sage46dev/initrd.gz
title sage developement test and fun
root (hd0,2)
kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
initrd /Sage-test/initrd.gz
title Lupq 511
find --set-root --ignore-floppies /lupq511/initrd.gz
kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
initrd /lupq511/initrd.gz
title Lupu 520 - New kid on the block
find --set-root --ignore-floppies /lupu-520/initrd.gz
kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
initrd /lupu-520/initrd.gz
title wary beta (on /dev/sda3)
root (hd0,2)
kernel /wary/vmlinuz psubdir=wary ro vga=normal
initrd /wary/initrd.gz
title spup (on /dev/sda3)
root (hd0,2)
kernel /spup/vmlinuz psubdir=spup ro vga=normal
initrd /spup/initrd.gz
title Debian (on /dev/sda2)
find --set-root --ignore-floppies /initrd.img
kernel /vmlinuz root=/dev/sda2 ro
initrd /initrd.img
title Windows NT/2K/XP\nStart Windows if installed on HDD
fallback 7
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
boot
O menu.lst no seu USB pode parecer semelhante, o comando GRUB4DOS
find --set-root --ignore-floppies /lupq511/initrd.gz
(procura esse arquivo em todas as unidades) pode ser muito útil se você usar USB, para que você não precise usar entradas fixas na sua unidade.
Com as informações acima, alguns comentários sobre suas perguntas originais:
P: * Entendo que a pasta / boot / img / [SystemName] armazenará a imagem para um sistema específico, que pode usar várias versões (ou as mesmas) dos kernels do Linux armazenadas no diretório / boot / kernel (pelo menos, é assim que eu gostaria de configurá-lo)
R: Não tenho certeza se isso vai funcionar, pois a maioria das principais distribuições espera ter direito exclusivo de sua partição e instalar uma estrutura de diretórios específica para seus arquivos. Na minha opinião, é melhor respeitar a configuração padrão e fornecer o que a distribuição espera, ou seja, alguns precisam de uma partição exclusiva, outros ficarão satisfeitos com apenas um diretório em uma partição compartilhada. Eu não digo que não é possível instalar vários SOs para 1 partição de uma maneira não padrão, mas está implorando por problemas e, na minha opinião, não é prático para um iniciante no Linux. Uma possível solução alternativa mencionada na parte inferior da minha postagem (instalações "do tipo Wubi").
P: * No entanto, a maioria desses sistemas apenas possui um kernel em seus diretórios chamado "linux" (não informando a versão). Posso pesquisar qual kernel todos eles usam, mas qual é o melhor lugar para fazer com que os próprios kernels copiem para / boot / kernel?
A: Eu acho que os núcleos devem ir exatamente para onde as distribuições normalmente os têm. Não há necessidade de armazená-los em uma pasta separada / boot / kernel, e eu também não recomendaria tentar compartilhá-los entre distribuições. O espaço de armazenamento é mínimo para um kernel (como 2-3 MB). Existem muitas versões e sub-versões e, às vezes, existem até patches específicos aplicados aos kernels das distribuições. Plugin em um kernel diferente / não testado é um experimento desnecessário.
P: * Depois de obter os kernels, imagino que o restante esteja copiando o dispositivo para / boot / img / e criando a entrada correta no menu.lst, correto? Eu posso fazer isso sistema por sistema, uma vez que consigo fazer referência aos kernels.
R: Como mencionado anteriormente, crie melhor partições separadas para as distribuições que precisam delas e misture as distribuições não tão gananciosas em suas próprias pastas. Trate o kernel, o initrd e o restante da distribuição como uma unidade.
Uma última ideia. Se você não quiser usar partições diferentes, tente algo como instalações "WUBI" para as distros que exigem uma instalação completa em sua própria partição. Isso significa que você cria arquivos grandes com seus próprios sistemas de arquivos ext2 / ext3 no USB, depois os monta como "unidades" e instala o sistema operacional nele. (Eu chamo de WUBI, porque esta é a aplicação mais conhecida).
O seguinte deve ser uma entrada do menu.lst do Grub4dos para inicializar uma "instalação do Wubi".
# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot
A partir daqui .
Veja bem, existem 2 comandos "set root", o segundo após "root.disk", que contém o Linux, é montado como loop0.
Espero poder dar algumas idéias, embora não seja uma explicação completa.