¿Alguien tiene alguna sugerencia sobre cómo mover la partición raíz a una nueva unidad y configurar grub2 para que arranque en esa unidad? Parece que no tengo suerte al instruir a grub-mkconfig qué es lo que quiero hacer (por ejemplo, chroot'int en mi nueva raíz solo confunde todos los scripts).
Antecedentes Estoy ejecutando Debian Squeeze en un NAS de bajo consumo sin periféricos. Mi configuración actual es /
en sda0
y /boot
en sde0
(una tarjeta CF):necesitaba el /boot
separado porque sd[a-d]
necesita hacer un centrifugado retrasado. Ahora encontré un viejo disco IDE de 2.5″ para usar como /
incluyendo /boot
para permitirme girar todos los discos grandes hacia abajo.
Lo que he probado Básicamente fui
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Entonces probé
chroot /mnt/newroot
update-grub
Pero eso falló con grub preguntando si root estaba montado.
Luego hice un intento poco entusiasta de configurar /mnt/newroot/grub/grub.cfg
para encontrar la imagen del núcleo en sdf5
, seguido de grub-install --root-directory=/mnt/newroot /dev/sdf
. Pero esto solo me envió un mensaje de rescate de grub cuando intenté arrancar desde sdf
.
Mi plan de copia de seguridad es simplemente reinstalar, por lo que una pregunta extra (no hay marcas de verificación para esta):¿Qué tengo que hacer para que mi configuración de lvm2 y mdadm se transmita? ¿Está todo almacenado en los sistemas de archivos (y se descubrirá automáticamente), o debo tomarlo yo mismo?
Solución (gracias a Maciej Piechotka):Como señala Maciej, necesito un chroot adecuado para que funcionen todas las herramientas de grub. Como referencia, así es como lo hice:
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Todos los archivos ahora están copiados (ver aquí para una discusión de las estrategias de copia). Corrige el nuevo etc/fstab
para apuntar a la nueva raíz:
[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
Finalmente, monte dev
,sys
y proc
a la nueva raíz y 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 .
Ahora estamos chrooteados a la raíz futura exactamente como se verá. Según Maciej, debería estar bien simplemente llamar a grub-install
, pero hice un update-grub
primero en echar un vistazo al /boot/grub/grub.cfg
generado antes de instalar el gestor de arranque. ¿No estoy seguro de que se actualice automáticamente?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
Respuesta aceptada:
Monte sistemas de archivos básicos y copie/modifique archivos mientras hace 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 funcionó para mí mientras instalaba Grub 2 en arch y varias veces en Gentoo. Luego, después de chroot a /path/to/chroot
el comando fue simplemente:
grub-install /dev/<boot_disk>
A partir de lvm2 (y lo creo loco pero no lo he usado) la configuración se almacena en el disco. Hay una configuración que se debe leer para descubrir dispositivos. Asumiendo que sus dispositivos están en ubicaciones estándar (/dev/sd*
o /dev/hd*
) no debería haber ningún problema.
PD. No confiaría en el cp simple del sistema en vivo, ya que hay varios lugares donde puede salir mal:
- Olvidé cambiar
/etc/fstab
y otros archivos útiles - Archivos cambiados durante el acceso
- Basura de afrontamiento (
/tmp
etc)