Como inicializar a partir de imagens ISO ao vivo não-Ubuntu como o Fedora ou o CentOS?

26

Descobri que isso pode ser feito da loopbackseguinte maneira

menuentry "Lucid ISO" {
loopback loop (hd0,1)/boot/iso/ubuntu-10.04-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-10.04-desktop-i386.iso noprompt noeject
initrd (loop)/casper/initrd.lz
}

Mas ele funciona apenas com o ubuntu ou seus derivados. Como deve ser escrito se eu quiser inicializar outras imagens ao vivo como o fedora, cent, opensuse etc.?

Edit: Encontrei algumas outras entradas, mas todas elas provavelmente são baseadas no debian.

menuentry "Linux Mint 10 Gnome ISO" {
 loopback loop /linuxmint10.iso
 linux (loop)/casper/vmlinuz file=/cdrom/preseed/mint.seed boot=casper initrd=/casper/initrd.lz iso-scan/filename=/linuxmint10.iso noeject noprompt splash --
 initrd (loop)/casper/initrd.lz
}

menuentry "DBAN ISO" {
 loopback loop /dban.iso
 linux (loop)/DBAN.BZI nuke="dwipe" iso-scan/filename=/dban.iso silent --
}


menuentry "Tinycore ISO" {
 loopback loop /tinycore.iso
 linux (loop)/boot/bzImage --
 initrd (loop)/boot/tinycore.gz
}


menuentry "SystemRescueCd" {
 loopback loop /systemrescuecd.iso
 linux (loop)/isolinux/rescuecd isoloop=/systemrescuecd.iso setkmap=us docache dostartx
 initrd (loop)/isolinux/initram.igz
}

Edit2: Como carregar em cadeia grube syslinuxde grub2?

Edit3: Quero inicializar outras imagens ao vivo sem dispositivos removíveis e usá-las, grub2portanto, preciso de entradas de menu específicas para grub2.

Rahul Virpara
fonte
1
Isso não está fora de tópico, ainda é melhor a troca de pilha unix e linux unix.stackexchange.com
Tachyons:
@Rinzwind how ??
Tachyons
2
A questão é sobre o fedora, centOS e opensuse. Não sobre o Ubuntu. @abcd
Rinzwind
2
A propósito: o Fedora não é capaz de fazer isso. CentOS é basicamente o Fedora. dracutpossui uma solicitação de recurso e precisa ser corrigido para isso. Você pode encontrar este patch em bugzilla.redhat.com
Rinzwind
2
Possível duplicado? askubuntu.com/questions/121212/…
fossfreedom

Respostas:

19

A inicialização a partir do iso é um recurso que deve ser suportado pela distribuição e a iso-scan/filename=opção não funcionará no Fedora ou em outros. Eles podem ter outras opções de kernel para esse recurso ou o recurso pode não ser suportado.

Eu encontrei um método para inicializar o Fedora 16 DVD, aqui está abaixo.

Inicializando o Fedora 15 DVD iso do grub

menuentry "Fedora 15 (DVD)" {
 loopback insmod
 insmod iso9660
 definir isofile = "/ Fedora-15-x86_64-DVD.iso"
 loopback loop (hd0,2) $ isofile
 linux (loop) / isolinux / vmlinuz rootfstype = auto root = live: UUID =: $ isofile ou silencioso
 initrd (loop) /isolinux/initrd.img
}

Ele assume que seu arquivo iso está na raiz da segunda partição do disco rígido interno.

fonte: esta página

Você pode procurar por outra distribuição no google, pois não é um recurso independente de distribuição.

Nota 1: Também funcionou com o Fedora 16, acabei de o testar.
Nota 2: Parece que o método funcionou quando você coloca o arquivo iso em uma partição fat ou ext4.


Inicializando o grml small iso do grub2

Grml também pode ser inicializado a partir do grub2. Observe que ele usa a findisoopção em vez da iso-scan/filenameopção, indicando que a inicialização pelo iso é implementada como opções diferentes em diferentes distribuições.

(menuentry "Grml small 2009.10" {
  loopback loop /boot/iso/grml-small_2009.10.iso
  linux (loop) / boot / grmlsmall / linux26 findiso = / boot / iso / grml-small_2009.10.iso apm = desligamento lang = us vga = 791 boot = live nomce noeject noprompt -
  initrd (loop) /boot/grmlsmall/initrd.gz
}

Esta página possui vários exemplos de outras distros inicializando no Grub2.


Inicializando o openSUSE 13.1 Live from iso

Aqui está a única solução que funcionou (todos os outros me deram uma falha ao encontrar o identificador MBR e pararam). Neste exemplo, o iso é colocado na terceira partição do primeiro disco no directório /home/username/.

menuentry "openSUSE_13.1_GNOME_Live" {
  load_video
  insmod gzio
  insmod part_msdos
  insmod ext2
  definir root = '(hd0, msdos3)'
  definir isofrom_device = '/ dev / sda3'
  set isofrom_system = '/ home / nome de usuário / openSUSE-13.1-GNOME-Live-i686.iso'
  definir carregador = '/ boot / i386 / loader'
  loopback loop $ isofrom_system
  linux (loop) $ loader / linux isofrom_device = $ isofrom_device isofrom_system = $ isofrom_system ramdisk_size = 512000 ramdisk_blocksize = 4096 ro quiet splash $ vt_handoff preloadlog = / dev / null showopts
  initrd (loop) $ loader / initrd
}

Fonte é o comentário de janeppo .


Fedora 17 Gnome Live Iso

Aqui está a entrada grub.cfg no menu de inicialização do Fedora 17. o iso é colocado na terceira partição do primeiro disco. Também o nome do arquivo é alterado.

menuentry "Fedora Live" {
    loopback loop (hd0,3) /fedora.iso
    linux (loop) / EFI / BOOT / vmlinuz0 root = live: /fedora.iso rootfstype = auto ro liveimg quiet rhgb rd.luks = 0 rd.md = 0
    initrd (hd0,3) / initrd-fromiso
}

Última nota: acho que essa resposta serve como exemplo. Não deve ser mais elaborado com exemplos.

Anwar
fonte
Eu tentei acima da entrada para o fedora 15, mas não funcionou. Algum palpite?
Rahul Virpara
minha entrada se parece com esta pastebin.com/1ksBVu21
Rahul Virpara
3

Aqui estão os arquivos iso que eu descobri para inicializar usando grub2.

Inicializei com sucesso seguindo as ISOs

  • Ubuntu Precise Pangolin 12.04 ISO
  • SystemRescueCd
  • Ferramenta de detecção de hardware de inicialização
  • Dos grátis
  • CD de inicialização de Hiren
  • CD de inicialização final

Descobri que se você deseja inicializar outras ISOs como o CD de inicialização do Hiren, etc., pode usar o MEMDISKutilitário como kernel.

Onde obter o MEMDISK?

Baixe o Syslinux aqui . Mova-o para a área de trabalho.

Como fazer dar certo ?

cd ~/Desktop/
tar xvif syslinux-4.05.tar.xz 
cd syslinux-4.05/memdisk/
sudo mkdir /customboot
sudo mv memdisk /customboot/
cd /customboot/
sudo mv memdisk memdisk4.05
gksudo gedit /etc/grub.d/40_custom 

Em seguida, cole as entradas abaixo no gedit. Você precisará mudar set isofile="/path/to/iso-file.iso".

Então emita update-grub. Reinicie e verifique.

Minhas entradas no 40_customarquivo.

menuentry "Ubuntu Natty Narwhal 11.04 ISO" {
    set isofile="/OS/ubuntu-11.04-desktop-i386.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject --
    initrd (loop)/casper/initrd.lz
}
menuentry "Ubuntu Precise Pangolin 12.04 ISO" {
    set isofile="/OS/ubuntu-12.04-desktop-i386.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject --
    initrd (loop)/casper/initrd.lz
}
menuentry "SystemRescueCd" {
    set isofile="/OS/systemrescuecd-x86-2.7.0.iso"
    loopback loop (hd0,6)$isofile
    linux (loop)/isolinux/rescuecd isoloop=$isofile setkmap=us docache dostartx
    initrd (loop)/isolinux/initram.igz
}
menuentry "Boot Hardware Detection Tool from iso using memdisk 4.05" {
    linux16 /customboot/memdisk4.05 iso
    initrd16 /customboot/hdt.iso
}
menuentry "Free Dos from iso using memdisk 4.05" {
    set isofile="/OS/fdbasecd.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}
menuentry "Hiren's boot CD using memdisk 4.05" {
    set isofile="/OS/Hiren's.BootCD.10.1.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}
menuentry "Ultimate Boot CD iso using memdisk 4.05" {
    set isofile="/OS/ubcd511.iso"
    linux16 /customboot/memdisk4.05 iso
    initrd16 (hd0,6)$isofile
}

Todos os ISOs são mantidos sda6/OSe MEMDISKsão mantidos na partição em que o ubuntu está instalado (no root) e renomeado para memdisk4.05o caminho para ele./customboot/memdisk4.05

nota: o fedora não funcionou com a outra resposta dada. Ainda tentando inicializar o fedora :(.

Rahul Virpara
fonte
Observe que, ao carregar arquivos ISO com memdisk e grub initrd16, o arquivo ISO deve ser menor que 462 MB. Mensagens de erro relacionadas: grub: error: não foi possível encontrar um destino de memória adequado , memdisk: MEMDISK: Nenhuma imagem ramdisk especificada . Para mais detalhes, veja aqui e aqui .
gregn3
2

infelizmente nenhuma dessas recomendações não me ajudou. Então, eu encontrei o caminho e gostaria de compartilhar com você. Para inicializar centos, por exemplo, você precisa: Coloque a imagem iso no diretório se o seu diretório raiz estiver montado em / dev / sda1, crie o diretório / iso e coloque o iso lá. vá para o console do grub (quando o menu grub aparecer, pressione 'c'.)

Escolha o dispositivo apropriado - hd0 significa sda. Você precisa escolher um onde você está localizado.

loopback loop (hd0,msdos1)/iso/Redhat.iso 
linux (loop)/isolinux/vmlinuz inst.repo=hd:sda1:/iso/Redhat.iso 
initrd (loop)/isolinux/initrd.img 
boot

E inicialize-o!

Дмитрий Бод
fonte
1

O que você está perguntando está fora do tópico aqui, pois requer conhecimento desses outros sistemas para poder configurar entradas do grub para inicializá-las corretamente. Sim, é possível.

No entanto ... Você encontrará o Multi System uma ferramenta competente para ter muitos ISOs de distribuição diferentes em uma grande unidade USB. Acho que funciona muito bem, mas você terá que instalá-lo a partir de um PPA:

http://www.pendrivelinux.com/multiboot-create-a-multiboot-usb-from-linux/

Eu o uso para que eu possa ter o Gparted LiveUSB e outras ferramentas, bem como as do Ubuntu em um pendrive para o InstallFests. Como bônus, permite uma tela inicial personalizada para o menu, que defini como logotipo para a equipe LoCo australiana.

Chris

Conforme declarado, o Multisystem usa o Grub2 para fazer o que você deseja. Como esse tópico fora do tópico está sendo permitido, ou pelo menos tolerado, aqui está a entrada do Fedora no meu Multisystem Grub2:

 menuentry "Fedora-15-i686-Live-Desktop.iso" {
 linux /fedora1/isolinux/vmlinuz0 live_locale=en_AU.UTF-8 live_keytable=us live_dir=/fedora1 root=UUID=493A-D2EF rootfstype=auto ro liveimg quiet rhgb rd_NO_LUKS rd_NO_MD noiswmd
 initrd /fedora1/isolinux/initrd0.img
 }

Note que você não pode inicializar diretamente a partir do ISO, pois ele não é suportado, pois é com as distribuições baseadas no Debian. Você precisará dos arquivos descompactados da ISO disponíveis no disco rígido da seguinte maneira:

chris@chris-office:/media/RED8/fedora1$ ls -l
total 563972
drwx------ 2 chris chris      4096 Feb 11  2011 isolinux
-rw-r--r-- 1 chris chris     43503 May 14  2011 livecd-iso-to-disk
-r--r--r-- 1 chris chris      8192 May 14  2011 osmin.img
-r--r--r-- 1 chris chris 577449984 May 14  2011 squashfs.img

É claro que você precisará alterar a localização do diretório / fedora / e o UUID da partição na qual você está inicializando o Fedora. Você provavelmente também deve alterar o modo de montagem de ro para rw, bem como qualquer outra coisa apropriada, como as permissões nos squashfs.

Provavelmente, você também pode configurar um disco de persistência virtual, embora não haja motivo para não montar sua partição normal / home. Novamente, só posso sugerir que você instale o Multidisk e faça a configuração você mesmo para aprender como fazê-lo.

Chris

fabricator4
fonte
a questão é como criar entradas existentes e GRUB2não como fazer pendrive inicializável ou disco rígido externo com distribuições diferentes. BTW requer um conhecimento melhor do GRUB2que outras distros, por isso é realmente uma questão relacionada a GRUB(porque algumas distros ainda usam GRUB) ou GRUB2.
Rahul Virpara
1
Eu diria que criar entradas de grub para distros como Fedora, Centos e Suse está muito mais relacionado a essas distros do que ao grub, e certamente nada a ver com o Ubuntu.
fabricator4
1
@virpara: Você também não especificou que está inicializando ISOs no disco rígido - a razão mais razoável para querer inicializar vários LiveISOs é ter um dispositivo de instalação que faça tudo. Não somos leitores de mentes ou especialistas em outras distros. Por fim, se você realmente instalar e usar o MultiSystem para fazer um pendrive dessa maneira, ele mostrará como fazê-lo - ele usa o grub2 para alcançar os resultados desejados.
fabricator4
1

Parece que o 13.04 requer uma sintaxe diferente para conseguir isso. Alguém inicializou com sucesso o ubuntu-13.04-desktop-amd64.iso a partir de um disco físico e gostaria de compartilhar a sintaxe do grub?

EDIT: Respondeu minha própria pergunta. Precisa renomear vmlinuz para mvlinuz.efi e funciona.

menuentry "Ubuntu-13.04-desktop-amd64.iso" --class ubuntu {
set isofile="/archives/ubuntu-13.04-desktop-amd64.iso"
loopback loop (hd1,6)$isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt --
initrd (loop)/casper/initrd.lz
}
user130567
fonte
0

Tente usar o Multisystem, instalando os liveCDs desejados e copiando os arquivos para o seu / e mesclando o grub.cfgs! (Estou realmente curioso para ver se funcionaria!).

WindowsEscapist
fonte