it-swarm-pt.tech

Debian / Grub2: Movendo a partição raiz para uma nova unidade?

Alguém tem uma sugestão de como mover a partição raiz para uma nova unidade e configurar o grub2 para inicializar nessa unidade? Parece que não tenho sorte em instruir o grub-mkconfig o que eu quero fazer (por exemplo, chroot'int na minha nova raiz apenas confunde todos os scripts).

Histórico Estou executando o Debian Squeeze em um NAS de baixa potência sem cabeça. Minha configuração atual é / Em sda0 E /boot Em sde0 (Um cartão CF): eu precisava do /boot Separado porque sd[a-d] Precisa fazer um spin-up atrasado. Agora eu encontrei um disco antigo de 2,5 "IDE para usar como /) Incluindo /boot Para permitir que eu gire todos os grandes discos.

O que eu tentei Basicamente eu fui

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

Então eu tentei

chroot /mnt/newroot
update-grub

Mas isso falhou com o grub perguntando se o root estava montado. Então eu fiz uma tentativa tímida de configurar /mnt/newroot/grub/grub.cfg Para encontrar a imagem do kernel em sdf5, Seguida por um grub-install --root-directory=/mnt/newroot /dev/sdf. Mas isso me deu um prompt de resgate quando tentei inicializar a partir de sdf.

Meu plano de backup é apenas reinstalar, então uma pergunta bônus (sem marcas de seleção para este): O que devo fazer para obter minha configuração de lvm2 e mdadm? Tudo está armazenado nos sistemas de arquivos (e será descoberto automaticamente) ou preciso retirá-lo pessoalmente?

Solução (graças a Maciej Piechotka): Como Maciej aponta, eu preciso de um chroot adequado para que todas as ferramentas do grub funcionem. Para referência, é assim que eu fiz:

[email protected]:/mnt/newroot$ Sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ Sudo cp -ax /boot /mnt/newroot

Todos os arquivos agora são copiados (consulte aqui para uma discussão sobre estratégias de cópia). Corrija o novo etc/fstab Para apontar para a nova raiz:

[email protected]:/mnt/newroot$ diff -u etc/fstab.old  etc/fstab
    -UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 /     ext3 errors=remount-ro         0 1
    -UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults                  0 2
    +UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 /     ext3 noatime,errors=remount-ro 0 1

Por fim, monte dev, sys e proc na nova raiz e chroot:

[email protected]:/mnt/newroot$ Sudo mount -o bind /dev /mnt/newroot/dev
[email protected]:/mnt/newroot$ Sudo mount -t proc none  /mnt/newroot/proc
[email protected]:/mnt/newroot$ Sudo mount -t sysfs none /mnt/newroot/sys
[email protected]:/mnt/newroot$ Sudo parted /dev/sdb set 5 boot on 
[email protected]:/mnt/newroot$ Sudo chroot .

Estamos agora chrootados para a raiz futura exatamente como ela será. De acordo com Maciej, não há problema em chamar apenas grub-install, Mas fiz um update-grub Primeiro para dar uma olhada no /boot/grub/grub.cfg Gerado antes de instalar o gerenciador de inicialização. Não tenho certeza de que será atualizado automaticamente?

[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
32
Janus

Monte sistemas de arquivos básicos e copie/modifique arquivos enquanto faz chroot como:

  • / dev (mount -o bind /dev/ /path/to/chroot/dev)
  • / proc (mount -t proc none /path/to/chroot/proc)
  • / sys (mount -t sysfs none /path/to/chroot/sys)

IIRC que funcionou para mim enquanto instalava o Grub 2 no Arch e várias vezes no Gentoo. Depois, depois de chroot para /path/to/chroot comando foi simplesmente:

grub-install /dev/<boot_disk>

A partir do lvm2 (e eu acredito em madm, mas ainda não o usei), a configuração é armazenada em disco. Há uma configuração que deve ser lida para descobrir dispositivos. Supondo que seus dispositivos estejam em locais padrão (/dev/sd* ou /dev/hd*) não deve haver problema.


PS. Eu não confiaria em cp simples do sistema ao vivo, pois existem vários lugares onde isso pode dar errado:

  • Esqueceu de mudar /etc/fstab e outros arquivos úteis
  • Arquivos alterados durante o acesso
  • Lidando com lixo (/tmp etc.)
23
Maciej Piechotka

você pode instalar o grub a partir da distribuição ao vivo sem fazer chroot:

grub-install /dev/hda --root-directory=/mnt/guest/
3
jet

BTW, se você estiver adicionando uma partição (como uma janela) na qual você não deseja que o grub escreva um no setor de inicialização, mas deseja que o grub saiba sobre isso quando o computador inicializar, poderá digitalizar novamente as partições e gerar um novo arquivo grub.cfg usando o comando grub_mkconfig da seguinte maneira em uma sessão do terminal

cd/boot/grub

Sudo cp grub.cfg ./grub.cfg.old

Sudo grub_mkconfig -o ./grub.cfg

Agora, quando você inicializar sua partição linux atual (que foi inicializada pelo grub), ela agora saberá sobre a outra partição.

0
user129087