atualize grub2 sem access de hairdwaire (por exemplo, em um chroot)?

Estou escrevendo um script que leva uma image mestre KVM, conviewte-a paira VDI, faz algumas alterações e oferece-o paira download.

Eu preciso atualizair os pairâmetros de boot do kernel paira algumas das imagens recém-criadas. Normalmente, alguém editairia a configuration GRUB_CMDLINE_LINUX_DEFAULT em / etc / default / grub e, em seguida, executairá update-grub. Clairo, eu só posso fazer isso em um chroot, que crash: '/ usr / sbin / grub-probe: erro: não é possível encontrair um dispositivo paira / (is / dev mounted?).'

A binding de assembly / dev do sistema em execução no chroot permite que o update-grub seja executado, mas resulta em um grub.cfg quebrado (dispositivo raiz errado da perspectiva da image).

Se eu apenas usair sed paira adicionair os pairâmetros do kernel que eu preciso, ele receberá a boot da image, mas as corridas subseqüentes de update-grub (do interior da image agora em execução) causairão problemas.

Então, minha solução atual é:

  1. Edite os pairâmetros em / etc / default / grub
  2. bind mount / dev no chroot
  3. executair update-grub no chroot
  4. use sed paira corrigir nós de dispositivos errados em /boot/grub/grub.cfg

Diga-me que existe uma maneira melhor.

2 Solutions collect form web for “atualize grub2 sem access de hairdwaire (por exemplo, em um chroot)?”

A resposta correta é montair / dev no chroot e usair um file $ CHROOT / boot / grub / device.map paira dizer ao grub que (hd0) (do ponto de vista da image) é realmente o file de loopback que você pairtiu "(e depois montado em seu chroot com kpairtx et c).

# generate grub configs and install it to the generated blockdev chroot $MR update-grub 2> /dev/null chroot $MR grub-mkconfig -o /boot/grub/grub.cfg 2> /dev/null cat > $MR/boot/grub/device.map <<EOF (hd0) ${LOOPDEV} EOF chroot $MR grub-install ${LOOPDEV} 2> /dev/null 

Depois de concluir a installation do grub paira o "mbr" do loopdev, você deve receber o file device.map porque não será preciso do ponto de vista da image, uma vez que ele realmente inicializair.

Eu tenho um script que cria imagens qcow2 completas paira ubuntu 13.10 saucy x64 aqui:

https://github.com/sneak/kvm-ubuntu-imagebuilder/blob/master/buildimage.sh#L211

Boa sorte.

Observe que essa resposta assume que seu disco é pairticionado.

A resposta de Sneak funciona paira Debian wheezy, que executa o grub 1.99, mas não paira grub2. Você quer usair o UUID (conforme recomendado pelo grub devs) paira referenciair dispositivos / pairtições.
Aqui está o problema: kpairtx (a ferramenta usada paira mapeair pairtições), não cria links simbólicos em /dev/disk/by-uuid , que grub usa paira viewificair se ele pode usair o UUID detectado ao gerair a configuration, então ele cai de volta paira o path do dispositivo. Paira corrigir esse ln -s /dev/sdX /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdX) simbólico, o dispositivo você mesmo ( ln -s /dev/sdX /dev/disk/by-uuid/$(blkid -s UUID -o value /dev/sdX) ).

Espero que isso ajude, se não você, então, talvez alguém mais que se tropeça com essa questão do jeito que fiz, porque o homem que descobriu isso demorou bastante tempo.

  • incapaz de acessair '/root/.config/git/attributes': Permissão> negado "
  • Na ufw há alguma maneira de desativair o log paira uma determinada regra?
  • Por que a política de senha do openldap pwdMinLength não funciona no Ubuntu 14.04?
  • Qualquer maneira de executair o Linux como uma máquina virtual no topo do Windows, então, pode ter o melhor dos dois mundos?
  • Recomendações de especificações do server
  • Existe um grupo de users da Web padrão no CentOS Linux?
  • Túnel criptografado de Host-to-Host no Ubuntu / Debian?
  • `sudo echo" bla ">> / etc / sysctl.conf` permissão negada
  • Ubuntu Crie uma conta FTP automaticamente após a criação do user