¿Alguien tiene una 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 tuve suerte al instruir a grub-mkconfig qué es lo que quiero hacer (por ejemplo, chroot'int en mi nueva raíz simplemente confunde todos los scripts).
Antecedentes Estoy ejecutando Debian Squeeze en un NAS de baja potencia sin cabeza. Mi configuración actual está /
encendida sda0
y /boot
encendida sde0
(una tarjeta CF): necesitaba la separación /boot
porque sd[a-d]
necesitaba hacer una rotación retardada. Ahora he encontrado un viejo disco IDE de 2.5 "para usar como /
incluido /boot
para permitirme girar todos los discos grandes.
Lo que he intentado Básicamente fui
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Entonces intenté
chroot /mnt/newroot
update-grub
Pero eso falló cuando grub preguntó si la raíz estaba montada. Luego hice un intento poco entusiasta de configurar /mnt/newroot/grub/grub.cfg
para encontrar la imagen del kernel sdf5
, seguido de a grub-install --root-directory=/mnt/newroot /dev/sdf
. Pero esto me dio un mensaje de rescate cuando intenté arrancar sdf
.
Mi plan de copia de seguridad es simplemente reinstalar, así que una pregunta adicional (sin marcas de verificación para esta): ¿Qué debo hacer para obtener mi configuración de lvm2 y mdadm? ¿Está todo almacenado en los sistemas de archivos (y se descubrirá automáticamente) o necesito sacarlo yo mismo?
Solución (gracias a Maciej Piechotka): Como señala Maciej, necesito un chroot adecuado para que todas las herramientas de grub funcionen. Como referencia, así es como lo hice:
janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Todos los archivos ahora se copian (ver aquí para una discusión de estrategias de copia). Arregle el nuevo etc/fstab
para apuntar a una nueva raíz
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, monte dev
, sys
y proc
a la nueva raíz y 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 .
Ahora estamos en la raíz del futuro exactamente como se verá. Según Maciej, debería estar bien simplemente llamar grub-install
, pero hice un update-grub
primer intento para ver el generado /boot/grub/grub.cfg
antes de instalar el gestor de arranque. ¿No estoy seguro de que se actualizará automáticamente?
root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb
/etc/default/grub
y la transcripción exacta deupdate-grub
./etc/fstab
en elchroot
(esto sería consistente conupdate-grub
quejarse de que "\ no está montado"). Si volviera a hacer esto, lo intentaría primero sin molestarme en montar los sistemas de archivos especiales en el chroot.Respuestas:
Montar sistemas de archivos básicos y copiar / modificar archivos mientras se procesa 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 funcionó para mí mientras instalaba Grub 2 en Arch y numerosas veces en Gentoo. Luego, después de chroot al
/path/to/chroot
comando fue simplemente:A partir de lvm2 (y creo que madm pero no lo he usado) la configuración se almacena en el disco. Hay una configuración de lo que se debe leer para descubrir dispositivos. Suponiendo 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 simple cp del sistema en vivo, ya que hay varios lugares donde puede salir mal:
/etc/fstab
y otros archivos útiles/tmp
etc.)fuente
cp -ax
debería estar bien (tal vez después de caer al nivel de ejecución de un solo usuario) de acuerdo con este viejo tutorialupdate-grub
antesinstall-grub
.puedes instalar grub desde live distro sin hacer chrooting:
fuente
grub-install
solo actualiza los archivos de imagen grub y escribe el MBR: en particular,grub.cfg
no está actualizado. Como comenté anteriormente, montar los directorios especiales puede ser exagerado, pero sigo pensando que el chroot es la forma de actualizargrub.cfg
de una manera simple.update-grub
a trabajar y ese no tiene--root-directory
o algo, ¿no?Por cierto, si está agregando una partición (como una ventana) en la que no desea que grub escriba un en el sector de arranque, pero quiere que grub lo sepa cuando su computadora arranque, puede volver a escanear las particiones y generar un nuevo archivo grub.cfg utilizando el comando grub_mkconfig de la siguiente manera en una sesión de terminal
Ahora, cuando arranque desde su partición de Linux actual (que tenía arranque de grub), ahora sabrá sobre la otra partición.
fuente