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 sobre o que quero fazer (por exemplo, chroot'int na minha nova raiz apenas confunde todos os scripts).
Background Estou executando o Debian Squeeze em um NAS de baixa potência sem cabeça. Minha configuração atual está /
ligada sda0
e /boot
ativada sde0
(um cartão CF): eu precisava do separado /boot
porque sd[a-d]
precisava fazer uma rotação atrasada. Agora eu encontrei um disco IDE antigo de 2,5 "para usar como /
incluso /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. Em seguida, fiz uma tentativa tímida de configurar /mnt/newroot/grub/grub.cfg
a imagem do kernel sdf5
, seguida de a grub-install --root-directory=/mnt/newroot /dev/sdf
. Mas isso me deu um prompt de resgate quando tentei inicializar 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 eu mesmo preciso retirá-lo?
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:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Todos os arquivos agora são copiados (veja aqui uma discussão sobre estratégias de cópia). Corrija o novo etc/fstab
para apontar para uma nova raiz:
janus@nasguld:/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
Finalmente, montar dev
, sys
e proc
para a nova raiz e chroot:
janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on
janus@nasguld:/mnt/newroot$ sudo chroot .
Agora estamos chrootados para a raiz futura exatamente como ela será. De acordo com Maciej, não há problema em apenas ligar grub-install
, mas fiz o update-grub
primeiro para dar uma olhada no gerado /boot/grub/grub.cfg
antes de instalar o gerenciador de inicialização. Não tenho certeza de que será atualizado automaticamente?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/default/grub
e a transcrição exata deupdate-grub
./etc/fstab
nochroot
(isso seria consistente com aupdate-grub
reclamação de que "\ não está montado"). Se eu fizesse isso novamente, tentaria primeiro sem me preocupar em montar os sistemas de arquivos especiais no chroot.Respostas:
Monte sistemas de arquivos básicos e copie / modifique arquivos enquanto faz chroot como:
mount -o bind /dev/ /path/to/chroot/dev
)mount -t proc none /path/to/chroot/proc
)mount -t sysfs none /path/to/chroot/sys
)IIRC que funcionou para mim enquanto instalava o Grub 2 em arco e várias vezes no Gentoo. Depois do chroot to
/path/to/chroot
command era simplesmente: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:
/etc/fstab
e outros arquivos úteis/tmp
etc.)fonte
cp -ax
deve estar bem (talvez depois de cair para o nível de execução de usuário único) de acordo com este velho COMO: tldp.org/HOWTO/Hard-Disk-Upgrade/copy.htmlupdate-grub
antesinstall-grub
.você pode instalar o grub a partir da distribuição ao vivo sem fazer chroot:
fonte
grub-install
apenas atualiza os arquivos de imagem grub e grava o MBR: Em particular,grub.cfg
não é atualizado. Como comentei acima, montar os diretórios especiais pode ser um exagero, mas ainda acho que o chroot é o caminho para atualizargrub.cfg
de uma maneira simples?update-grub
a trabalhar e aquele não tem--root-directory
ou algo assim, não?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
Agora, quando você inicializar sua partição linux atual (que foi inicializada pelo grub), ela agora saberá sobre a outra partição.
fonte