Má někdo návrh, jak přesunout kořenový oddíl na nový disk a nastavit grub2, aby se na tomto disku spouštěl? Zdá se, že nemám štěstí při instruování grub-mkconfig, co chci udělat (např. chroot’int do mého nového kořenového adresáře jen zmate všechny skripty).
Pozadí Používám Debian Squeeze na bezhlavém NAS s nízkou spotřebou. Moje aktuální nastavení je /
na sda0
a /boot
na sde0
(CF karta):Potřeboval jsem samostatný /boot
protože sd[a-d]
je třeba provést zpožděné roztočení. Nyní jsem našel starý 2,5″ IDE disk, který lze použít jako /
včetně /boot
aby mi umožnil roztočit všechny velké disky.
Co jsem zkoušel V podstatě jsem šel
mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Pak jsem to zkusil
chroot /mnt/newroot
update-grub
Ale to se nezdařilo, když se grub zeptal, zda byl připojen root.
Potom jsem se jen polovičatě pokusil nastavit /mnt/newroot/grub/grub.cfg
k nalezení obrazu jádra na sdf5
, za kterým následuje grub-install --root-directory=/mnt/newroot /dev/sdf
. Ale tohle mi právě vyneslo výzvu k záchraně grub, když jsem se pokusil zavést z sdf
.
Můj plán zálohování je pouze přeinstalovat, takže bonusová otázka (u této otázky nejsou zaškrtnuty):Co musím udělat, abych zpřístupnil svou konfiguraci lvm2 a mdadm? Je to všechno uloženo v souborových systémech (a bude to automaticky objeveno), nebo si to musím vzít sám?
Řešení (díky Maciej Piechotkovi):Jak Maciej podotýká, musím mít správný chroot, aby všechny nástroje grub fungovaly. Pro informaci, takto jsem to udělal:
[email protected]:/mnt/newroot$ sudo cp -ax / /mnt/newroot
[email protected]:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot
Všechny soubory jsou nyní zkopírovány (viz zde pro diskuzi o strategiích kopírování). Opravte nový etc/fstab
ukázat na nový kořen:
[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
Nakonec připojte dev
,sys
a proc
na nový kořenový adresář a 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 .
Nyní jsme chrootováni do budoucího kořene přesně tak, jak bude vypadat. Podle Macieje by mělo být v pořádku zavolat grub-install
, ale provedl jsem update-grub
nejprve se podívejte na vygenerovaný /boot/grub/grub.cfg
před instalací bootloaderu. Nejsem si jistý, zda bude automaticky aktualizován?
[email protected]:/# update-grub
[email protected]:/# grub-install /dev/sdb
Přijatá odpověď:
Připojte základní souborové systémy a kopírujte/upravujte soubory během chrootování jako:
- /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, který mi fungoval při instalaci Grub 2 v archu a mnohokrát na Gentoo. Poté po chrootu na /path/to/chroot
příkaz byl jednoduše:
grub-install /dev/<boot_disk>
Od lvm2 (a věřím šílenci, ale nepoužil jsem ho) je konfigurace uložena na disku. Existuje konfigurace, kterou je třeba přečíst, aby bylo možné zjistit zařízení. Za předpokladu, že jsou vaše zařízení ve standardních umístěních (/dev/sd*
nebo /dev/hd*
) neměl by být žádný problém.
PS. Nevěřil bych jednoduchému cp živého systému, protože existuje několik míst, kde se může pokazit:
- Zapomněli jste změnit
/etc/fstab
a další užitečné soubory - Soubory se během přístupu změnily
- Jak se vypořádat s odpadky (
/tmp
atd.)