Portál AbcLinuxu, 10. května 2025 13:30
Zdarec borci,
tak jsem tu zase. Tentokrát mám problém s Grubem. Mám v pc 3 disky:
sda
sda1 Winloader
sda2 Windows
sda3 DATA
sda4 Linux Mint
sdb
sdb1 ZÁLOHY
sdc
sdc1 Linux Mint
volné místo
Učím se pracovat s Linuxem a tak jsem si dnes na sdc vytvořil partyšnu a nainstaloval na ní poslední verzi Mintu. Chtěl jsem jí ale také mít na sda4 a tak jsem Clonezillou zazálohoval sdc a pak jsem spustil Clonezillu a spustil restoreparts sdc1 > sda4. Problém je, že mi teď dost zlobí bootování a nevím co s tím. Původní nabídka Grubu na sda je pryč a vypadá to, že je tam v nabídce jen ten obnovený systém, ale když jej spustím, tak se mi nespustí systém na sda4, ale na sdc1. Když při startu pc vyvolám boot menu a vyberu sdc (boot priority = sda, sdb, sdc), tak v nabídce Grubu vidím nabídku z sda obohacenou o ten nově nainstalovaný Mint. Takže když chci spustit Windows na sda2, musím v boot menu vybrat sdc a tam pak Windows. Když chci spustit Mint na sda4, musím v boot menu vybrat sdc a pak vybrat Mint na sda4, ale spustí se místo něj Mint na sdc1. Chápu, že je pro vás těžké se v tom orientovat. Pro mě taky bylo. Je 00:37 a hraju si s tím od 10:00 h. Prostě když to zhrnu:
Linux na sda4 nelze zavést. Když to dělám z sda, spustí se Linux na sdc.
Když chci spustit Windows na sda2, musím kvůli tomu napřed spustit sdc.
Myslím, že nabídka Grubu na sdc je v pořádku. Zlobí jen ta na sda. Z Mintu na sdc jsem spustil
sudo update-grub
ale nepomohlo to. Tak jsem pak z sdc ještě zkusil
mount /dev/sda4 /mnt
sudo grub-install --root-directory=/mnt /dev/sda
ale taky to nepomohlo. Zkusil jsme i obnovit Clonezillou partyšnu sda1 (Winloader), ale taky to nepomohlo. Nevíte, čím by to mohlo být? Věděl bych si rady. Obnovil bych komplet sda (až na partyšnu s daty) a pak bych si musel ten nový Mint na sda4 nainstalovat), ale to bych se neposunul. Chtěl bych prostě pochopit, proč to tak je?
Řešení dotazu:
blkid
UUID /dev/sda4=UUID /dev/sdc1
Paráda Fakt masakr! Jdu editovat fstab.
# misto sdX dosadis ten tebou zvolenej primarni disk sudo grub-install /dev/sdX # tohle by melo (je vyzadovan os-prober balicek a NEzakazano v /etc/default/grub = oboje je v *buntu vychozi) # krome dotupnych jader aktualniho systemu, pridat do grub nabidky (v aktualnim /boot/grub) vssechny ostatni nalezene GNU/Linux i Windows na vsech ostatnich diskach sudo udpate-grub
teoreticky na mensi zvladaZkoušel jsem to cirka před rokem a nedopadlo to. Teď už je to možná jinak, nevím.
sudo tune2fs /dev/sdXY -U $(uuidgen)
sudo tune2fs /dev/sdd1 -U $(uuidgen)
Vypsalo to, že UUID nelze změnit ze spuštěného systému. Trochu bych se i divil, kdyby to klaplo. Takže jsem zavedl systém z HDD, zapojil flešku a zadal uuidgen
To vygenerovalo nové UUID. Dále sudo tune2fs /dev/sdd1 -U vygenerovane_uuid
Opět to vypsalo, že UUID nelze změnit z připojeného disku. To jsem tušil, ale postupoval jsem dle návodu, na který si mi sem dal link. Je to ten první comment. Dále dle návodu sudo umount /dev/sdd1
a pak sudo e2fsck -f /dev/sdd1
a sudo tune2fs /dev/sdd1 -U vygenerovane_uuid
Výsledkem bylo změněné UUID na HDD což jsem nevěděl, protože po blkid
jsem v terminálu viděl to nové UUID a samou radostí jsem si nevšiml, že je to u HDD a ne na flešce. Takže jsem v dobré víře zeditoval fstab na flešce a asi je ti jasné, že pak nebootovalo ani jedno z toho DD. HDD mi už bootuje. Ještě to zkusím a počkám, jestli bys mi sem (nebo někdo jiný) nenapsal jak na to. Už mě to hodně bolí.
Zatím ...
sudo grub-install --root-directory=/mnt/ /dev/sdd Installing for i386-pc platform. grub-install.real: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet.. grub-install.real: warning: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged.. grub-install.real: error: will not proceed with blocklists.
Hlavně si myslím, že vrtáš do něčeho, čemu nerozumíš, co děláš.To máš úplnou pravdu. Nerozumím. A právě proto do toho vrtám, abych porozuměl :)
S tímhle si hraj ve virtuálu, kde to máš rozumně omezené a kde ti případné problémy neovlivíní hlavní systém.To zní rozumně. Zkusím to.
- Změníš položky v fstab (možná i v grubu) z UUID na /dev/xxx (ooo jak zpátečnické). - Provedeš rebuild initramfs - Restart na kontrolu - snad to najede - Clonezilla atd. - Když ne, máš kvm -> virsh snapshot-revertJá to řeším tak, že zálohuju pomocí cp nebo rsync nebo rsnapshot nebo rdiff-backup, data nakopíruju na nový disk, spustím instalační/záchranné DVD dané distribuce, opravím initramfs a grub a fstab a /etc/udev/něco, restart a hotovo. Zkus místo Clonezilly použít fsarchiver, je to zajímavý nástroj na zálohy fs. V kvm se pěkně hraje, testoval jsem třeba RAID1 s výpadkem disku, obnovu zálohy na nový disk, jak funguje v CentOS obnova pomocí rear a podobně.
Tak si vytvoř cíleně nějaké testovací prostředí. To hlavní máš už samo o sobě dost komplikované diky dual-bootu. A přečti si jak linux startuje. Když děláš pokusy tak vždycky si udělej zálohu, ze které se můžeš vrátit, když se neco pomrví. Zálohu MBR a bootovací cesty v tomto případě, když něco pokazíš, tak to dokážeš vrátit. Chápeš alespon co se pokazilo? V MBR a máš přímo napsané odkud se bere stage 2. Nemůžeš změnit system na jiný oddíl bez přegerování initramfs a grub. Obou! A mimochodem Win by dopadly mnohem hůř. Win nenajedou (potřebují instalační DVD) když se posune začátek oddílu, takže nšvo pracuje přímo se sektory.Hlavně si myslím, že vrtáš do něčeho, čemu nerozumíš, co děláš.To máš úplnou pravdu. Nerozumím. A právě proto do toho vrtám, abych porozuměl :)
sudo mkdir -p /mnt/flashka # misto sdXY dej oznaceni oddilu tve flashky sudo mount /dev/sdXY /mnt/flashka sudo mount --bind /dev /mnt/flashka/dev sudo mount -t devpts devpts /mnt/flashka/dev/pts sudo mount -t proc proc /mnt/flashka/proc sudo mount -t sysfs sysfs /mnt/flashka/sys sudo chroot /mnt/flashkated ses preplej do systemu na flashce a provedes (bez sudo, protoze chroot uz pod rootem bezi):
# misto sdX dej oznaceni zarizeni tve flashky grub-install /dev/sdX update-grub update-initramfs -u -k all exitopustil si chroot a "uklidis" po nem...
umount /mnt/flashka/{dev/pts,dev,proc,sys} umount /mnt/flashka
sudo
Díky moc. Tvůj návod kopíruji a ukládám. Určitě se bude hodit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.