Bootloaders de encadeamento para configuração incomum

1

Estou tentando implementar uma ideia incomum no meu PC.

Eu tenho um total de 6 partições:

  • O primeiro é para o Windows 7 (meu sistema operacional básico)
  • 2º para o Ubuntu
  • 3 e 5 são partições de armazenamento do Windows
  • A quarta é uma / home para o Ubuntu
  • e 6 é uma partição de recuperação com algumas ferramentas de casos extremos.

Minha ideia é assim:

  • O Windows é a opção de inicialização padrão
  • O Ubuntu é inicializável tanto nativamente quanto dentro da VM hospedada no Windows
  • O GRUB2 pode lançar algumas ferramentas da última partição

Até agora funciona muito bem. Meu MBR e 1ª BS são intocáveis, setores padrão do Windows. O segundo BS tem o GRUB2 instalado, que é usado para iniciar o Ubuntu. Há também o GRUB4DOS e o memdisk na última partição, que são carregados em cadeia do Grub2win. A VM tem uma unidade virtual conectada com o GRUB, portanto, a partição do Ubuntu é inicializável.

Portanto, a inicialização é assim:

  • Windows: MS BootMgr - > Windows 7 (padrão)
  • Ubuntu: MS BootMgr - > Grub2win - > GRUB2 - > Ubuntu
  • Ferramentas: MS BootMgr - > Grub2win - > GRUB4DOS - > (algumas outras ferramentas)

O que eu quero alcançar é tornar (alguns) o GRUB2 virtualmente o primeiro gerenciador de boot a iniciar, de preferência o atual Grub2win. Cenário perfeito seria:

  • Windows: GRUB2 estático - > MS BootMgr - > Windows 7 (padrão)
  • Ubuntu: GRUB2 estático - > GRUB2 do Ubuntu - > Ubuntu
  • Ferramentas: GRUB2 estático - > GRUB4DOS - > (ferramentas)

O problema é que não tenho idéia de como instalar outro GRUB2 independente ou como tornar o Grub2win meu gerenciador de boot padrão (se eu acertar, não é possível).

Definir o tempo limite do BootMgr como 0 e fazer do Grub2win sua opção de inicialização padrão, tornaria o Grub2win praticamente o primeiro, mas seria impossível iniciar o Windows. A solução seria iniciar o Windows diretamente (sem o BootMgr), mas, até onde eu sei, não é possível.

No entanto, o Ubuntu parece fazer isso com o GRUB2 - é apenas pular o BootMgr e inicializar o Windows. Eu tentei copiar essa entrada de /boot/grub/grub.cfg para a configuração do Grub2win, mas então não funcionou dessa forma - apenas lançou o BootMgr.

O motivo pelo qual eu não quero usar o GRUB do Ubuntu é que toda vez que update-grub é executado dentro de uma VM, o Windows desapareceu da lista. Isso acontece porque a VM só tem acesso a duas partições do Linux, portanto, não há uma partição do Windows visível para o Ubuntu virtualizado.

Então, por enquanto, meu ponto é lançar o Windows diretamente do Grub2win da mesma forma que o GRUB2 do Ubuntu faz. Vocês podem me ajudar?

Editar: Mais algumas coisas a considerar:

  • O GRUB4DOS é parte integrante de algum conjunto de ferramentas, por isso é basicamente intocável. Eu não quero fazer nenhum trabalho adicional em cada atualização do conjunto de ferramentas.
  • Eu preciso de alguma maneira de inicializar a partir de imagens ISO - atualmente estou usando o Grub2win + memdisk.
  • O menu do Ubuntu GRUB é exatamente o mesmo quando carregado em cadeia e na VM. Como a VM tem apenas 2 partições do Ubuntu conectadas, eu quero apenas opções relacionadas ao Ubuntu nesse menu.
por gronostaj 01.02.2013 / 23:52

2 respostas

3

Eu vejo o que você está tentando fazer (menu de inicialização de um nível, em vez de dois menus separados) e gostaria de propor uma solução alternativa com o mesmo efeito:

Mantenha o bootmgr no menu principal, não defina o tempo limite para zero. Use EasyBCD para adicionar duas entradas separadas: uma entrada do Ubuntu e uma entrada do GRUB4Dos (o EasyBCD tem sua própria cópia do Grub4Dos chamada NeoGrub).

Certifique-se de apagar tudo exceto o Ubuntu do menu do Ubuntu GRUB. Configure o menu NeoGrub do EasyBCD para imitar o menu existente do Grub4Dos.

Você terá um menu de nível único onde poderá inicializar no Windows, Ubuntu ou GRUB4Dos.

Você nunca terá que atualizar o Grub4Dos / NeoGrub e sua inicialização funcionará através de atualizações do Ubuntu e atualizações do kernel sem precisar modificar nada.

    
por 02.02.2013 / 01:47
2

The problem is I have no idea how to install another, independent GRUB2

Instalar um GRUB2 independente é direto ( para que ele aponte para o Kernel Linux / Ubuntu atual, veja minha pergunta ).

Faça backups suficientes (dd é seu amigo) antes de começar!

[Eu quero que este post seja simples e fácil, então todos que não estão familiarizados com a configuração do GRUB podem usá-lo para instalar um GRUB independente. Se alguém tiver sugestões sobre como melhorar este post, por favor me avise.]

Crie uma partição de inicialização separada onde você instalará o GRUB2 e nada mais. Ele não será montado em nenhum sistema operacional instalado, ele é usado apenas para selecionar o primeiro sistema. Eventualmente você pode ter que fazer alguns rearranjos (mover partições para criar espaço ou até mesmo destruí-las e recriá-las em ordem diferente). Eu gosto de ter a minha partição GRUB para ser a primeira partição no disco (ou o segundo, após a partição do BIOS se estiver usando o GPT), 50 MB de tamanho (pode ser 5, mas os HDDs são grandes). Instale todos os sistemas operacionais primeiro, porque eles sobrescreverão o MBR. NÃO use / dev / sda1 em nenhum sistema operacional.

Inicialize alguns sistemas ao vivo que vêm com as ferramentas do GRUB2. Eu recomendo o Parted Magic (que você também pode usar para todo o seu particionamento).

  • Cuidado para não digitar sda2 em vez de sda1 ou algo assim. Você pode facilmente limpar seu disco rígido com um erro de digitação (é claro que você tem um backup completo, então nada será perdido).
  • Formate / dev / sda1 com ext2.

mkfs.ext2 /dev/sda1

  • Monte a partição do GRUB e instale o GRUB2:

cd /mnt

mkdir sda1

mount /dev/sda1 sda1

grub-install --boot-directory=/mnt/sda1 /dev/sda

  • "A instalação foi concluída, nenhum erro foi reportado."

cd sda2

ls

  • "grub / lost + found /"
  • Crie uma nova configuração de menu manualmente (também é possível fazer com que o GRUB gere uma).

vi grub/grub.cfg

menuentry "Windows 7 (loader)" --class windows --class os {

insmod    part_msdos

insmod    ntfs

set       root='(hd0,msdos2)'

chainloader +1

}

menuentry 'Debian (or Ubuntu)' {

insmod    part_msdos

insmod    ext2

set       root='(hd0,msdos3)'

echo      'Loading Linux...'

linux     /boot/vmlinuz root=/dev/sda6 ro quiet <- current vmlinuz file name

echo      'Loading initial ramdisk...'

initrd    /boot/initrd.img <- current initrd.img file name

}

menuentry 'Fedora (just another example)' {

insmod    part_gpt

insmod    ext2

set       root='(hd0,msdos3)'

echo      'Loading Linux...'

linux     /boot/vmlinuz-3.7.3-101.fc17.x86_64 root=UUID=[UUID of /dev/sda3] ro rd.md=0 rd.lvm=0 rd.dm=0 SYSFONT=True  KEYTABLE=us rd.luks=0 LANG=en_US.UTF-8

echo      'Loading initial ramdisk...'

initrd    /boot/initramfs-3.7.3-101.fc17.x86_64.img

}

  • Eu tentei isso com o Parted Magic 11.11.11 (número da versão da sorte), as ferramentas do GRUB lá criaram apenas o diretório "grub" em / dev / sda1. Uma versão diferente pode criar um diretório "grub2". De qualquer maneira, você coloca seu arquivo de configuração do GRUB2 lá (o GRUB2 se parece com um script Shell, no GRUB1, era um simples menu.lst, mas está de volta).
  • Substitua "[UUID de / dev / sda3]" pelo que é ls -l / dev / disk / by-uuid | grep sda3 diz a você.
  • Substitua "/ boot / vmlinuz" pelo nome real do arquivo (em / dev / sda3, sua partição Linux).
  • Substitua "/boot/initrd.img" da mesma maneira.
  • Desmontar e reinicializar. Seu computador inicializará um GRUB2 simples, listando as entradas que você especificou ("Windows 7 (loader)", "Debian (ou Ubuntu)"). Se você fez certo, poderá inicializar o Windows e o Linux diretamente a partir desse GRUB independente .
  • Novamente, a entrada do Linux aponta para uma versão específica do Kernel. Ele teria que ser atualizado manualmente (mount / dev / sda1 e modify grub / grub.cfg), o que é uma grande desvantagem. Novamente, veja minha outra pergunta sobre como configurar o GRUB para isso.

(lol, o superusuário removeu todas as instâncias da palavra "have")

    
por 11.02.2013 / 18:48