LINUX.ORG.RU
ФорумAdmin

изменилась корневая система


0

1

после обновления «съехал» корень, и не грузится система. grub, initrd, ядро при переустановке в live-cd (chroot) обращаются к root=/dev/sdb7, когда фактически root=/dev/sda8.Каким образом можно поправить значение переменной, если не переустанавливать ОСь целиком (очень долго конфигурировать)?

Linux debian 2.6.32-5-amd64 i A rub-pc - GRand Unified Bootloader, version 2 (PC/BIOS version)



Последнее исправление: abirvalg (всего исправлений: 2)

дистр и версию груба в студию

anonymous
()

Поправь корневой раздел в /boot/grub/menu.lst и /etc/fstab.

А вообще желательно бы еще услышать, что за «ОСь».

Zhbert ★★★★★
()
Ответ на: в от abirvalg

Да. Я поэтому и спросил, что за ось.

Zhbert ★★★★★
()

грузишься с live-cd, монтируешь корень, делаешь туда chroot. Потом правишь fstab, запускаешь update-initramfs и update-grub.

Вообще советую прописать везде UUID раздела вместо номера, чтоб ничего больше не «съезжало»

nu11 ★★★★★
()

В меню загрузчика:
1) Нажать e на пункте меню с Debian GNU/Linux
2) Заменить root=/dev/sdb7 на root=/dev/sda8
3) Нажать Ctrl+X
4) На рабочей системе отредактировать fstab таким образом, чтобы везде использовался UUID
5) update-initramfs -u -k all
6) update-grub

AITap ★★★★★
()
Ответ на: комментарий от AITap

В меню загрузчика

1,2. сделал сначала сам, - не грузит рутфс. сделал grub-mkconfig, он, в принципе, сделал тоже. но рутфс всё равно не грузится. 3.,4. с помощью blkid получил uid-ы и скопипастил в fstab, токма без кавычек. не грузит рутфс. 5. update-initramfs не хочет перезаписывать, делаю с ключом -t или пересоздаю -c в итоге update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64 Adding module /lib/modules/2.6.32-5-amd64/kernel/lib/zlib_deflate/zlib_deflate.ko Adding module /lib/modules/2.6.32-5-amd64/kernel/fs/btrfs/btrfs.ko /dev/sdb7: No such file or directory дальше он дописывает в бут-раздел (/dev/sda5) всё-таки initrd, который ссылается на /dev/sdb7. была мысль поправить в initramfs.conf, update-initramfs.conf возможною строку со ссылкой на рутовый уид или номер раздела, но в последнем только ссылка на специфичное бут-устройство, если оно есть. 6. выполнял.переустановил полностью груб (purge,install) и снова то же. В конце загрузки пишет что не может прочитать рут-фс, етс-фстаб, что ссылаемое устройство уже /dev/sda8 не является рутовым. Переустанавливал ядро с реп (purge, install). В фс-табе ууиды прописаны, если выполнить chroot, то в mount выдает '/dev/sdb7 /' я так полагаю, что где-то устанавливается переменная на рут-фс, в противном случае по какой причине update-initramfs ссылается на sdb7 как рут, когда в fstab уид точно с sda8?

abirvalg
() автор топика
Ответ на: комментарий от AITap

А у него они так не именуются. В пункте (4) это исправляется.

при попытке загрузки в конце он еще дописывает, /scripts/init-premount, /scripts/local-top, якобы не найден по ссылке рут-фс «/dev/disk/by-uuid/......». Загрузился с лайв-сд, ссылка эта есть, и указывает на действительный уид sda8. В общем, не понимаю.

abirvalg
() автор топика

файловая система xfs, но xfs_check, xfs_repair ничего криминального не находят. Раздел с этой фс при доступе с лайв-сд нормально читается и пишется в него.

abirvalg
() автор топика
Ответ на: В меню загрузчика от abirvalg

> update-initramfs не хочет перезаписывать
По какой причине (с каким сообщением)?

/dev/sdb7: No such file or directory

Значит, где-то всё ещё не указан UUID.

Попробуйте ещё раз загрузиться с livecd и ввести команды:
sudo -s
mount /dev/sdXY /mnt # sdXY - корень
for f in proc sys dev; do mount -o bind /$f /mnt/$f; done
chroot /mnt
mount /boot # если /boot на отдельном разделе
update-initramfs -u -k all
dpkg-reconfigure grub-pc
umount /boot # если монтировали
exit
for f in dev sys proc; do umount /mnt/$f; done
umount /mnt
exit

AITap ★★★★★
()
Ответ на: комментарий от AITap

1. на этот раз команда успешна.

root@debian:/# update-initramfs -u -k all

update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64

/dev/sdb7: No such file or directory

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

   LANGUAGE = (unset),

   LC_ALL = (unset),

   LANG = «en_US.UTF-8»

are supported and installed on your system.

.............

perl: warning: Falling back to the standard locale («C»).

2. root@debian:/# more /etc/fstab

# / was on /dev/sda8 during installation

UUID=2ff25f02-e2db-43b2-bb60-a9b1e89a8577 / xfs noatime,nodiratime,attr2,logbsize=256k,logbufs=8 0 1

# /boot was on /dev/sda5 during installation

UUID=36e89e7f-4f8a-42de-8117-b9787f46a8cf /boot ext2 rw 0 2

# /home was on /dev/sda7 during installation

/dev/mapper/home_h /home xfs logbufs=8,logbsize=256k,noatime,nosuid,nodev,nodiratime 0 0

# swap was on /dev/sda9 during installation

/dev/mapper/var_h /var reiserfs nosuid,notail,nodev,nodiratime 0 0

/dev/mapper/swap_h none swap sw 0 0

/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0

# /dev/sde /media/floppy0 auto rw,user,noauto 0 0

tmpfs /tmp tmpfs rw,noexec,nosuid,nodev,mode=0777

root@debian:/# more /etc/crypttab

swap_h /dev/sda6 /dev/urandom cipher=twofish-xts-benbi,size=512,hash=sha512,swap

home_h /dev/sda7 none luks

var_h /dev/sda9 none luks

3. сейчас попробую.

abirvalg
() автор топика
Ответ на: комментарий от abirvalg

> swap_h /dev/sda6 /dev/urandom cipher=twofish-xts-benbi,size=512,hash=sha512,swap

home_h /dev/sda7 none luks

var_h /dev/sda9 none luks


А нужно:
swap_h /dev/disk/by-id/... /dev/urandom cipher=twofish-xts-benbi,size=512,hash=sha512,swap
home_h UUID=... none luks
var_h UUID=... none luks
(У самих по себе LUKS-разделов есть UUID)

Также есть смысл выполнить в chroot'е нечто вроде grep -R /dev/sdb7 /etc/, чтобы узнать, где ещё указан /dev/sdb7 вместо UUID.

AITap ★★★★★
()
Ответ на: комментарий от AITap

>Попробуйте ещё раз загрузиться с livecd и ввести команды:

вывод получился тот же. Перед тем как выполнить chroot (мои попытки) я монтировал /dev,/proc,sys с ключом --bind. Уважаемый, AITap, а то что вы написали, это тоже самое?какой язык?

чтобы не быть голословным набрал вывод последних строк «как есть».

begin: running /scripts/init-premount...done

begin: mounting root file system...begin: running /scripts/local-top...done

begin: waiting for root file system...done

Gave up waiting for root device. Common problems:

-boot args (cat /proc/cmdline)

-check rootdelay= (did the system wait for long enough?)

-check root= (did the system wait for the right device?)

-missing modules (cat /proc/modules; ls /dev)

ALERT! /dev/disk/by-uuid/2ff25f02-e2db-43b2-bb60-a9b1e89a8577 does not exist.

Dropping to a shell!

Busybox v1.17.1 (Debian 1:1.17.1-8) built-in shell (ash)

Enter `help` for a list of built-in commands

/bin/sh:can't access tty; job control turned off

(initramfs)... (мигающий курсор)

Скажите, пожалуйста, где можно глянуть на синтаксис команд initramfs на русском.

abirvalg
() автор топика
Ответ на: комментарий от AITap

> Также есть смысл выполнить в chroot'е нечто вроде grep -R /dev/sdb7 /etc/, чтобы узнать, где ещё указан /dev/sdb7 вместо UUID.

понял. сейчас поправлю.

abirvalg
() автор топика
Ответ на: комментарий от abirvalg

> в конце приглашение initramfs. только команды почему-то не вводятся.клава юсб.

с клавиатурой ps/2 ввод команд заработал. Осталось узнать, как этим окружением пользоваться :)

abirvalg
() автор топика
Ответ на: комментарий от abirvalg

>почему-то отвалился aufs...

Running update-initramfs.

update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64

/aufs: No such file or directory

mkinitramfs: for root /aufs missing /aufs /sys/block/ entry

mkinitramfs: workaround is MODULES=most

update-initramfs: failed for /boot/initrd.img-2.6.32-5-amd64

abirvalg
() автор топика
Ответ на: комментарий от abirvalg

> какой язык?
bash

Попробуйте дописать в /etc/initramfs-tools/modules «xfs» (без кавычек, на новой строке) и снова сделать update-initramfs -u -k all (как и раньше).

ALERT! /dev/disk/by-uuid/2ff25f02-e2db-43b2-bb60-a9b1e89a8577 does not exist.

Попытайтесь ввести команды в initramfs-шелл (возможно, придётся найти ps/2-клавиатуру или добавить в initramfs модули usbhid):
ls /dev/
ls /dev/disk/by-uuid/
blkid

Скажите, пожалуйста, где можно глянуть на синтаксис команд initramfs на русском.

Это обычный posix-совместимый шелл, и команды в нём почти всегда такие же, как и в bash.

update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64

/aufs: No such file or directory


mkinitramfs: for root /aufs missing /aufs /sys/block/ entry


mkinitramfs решило, что текущее корневое устройство принадлежит livecd. В принципе, это верно, но для сборки initramfs совсем не нужно.
Попробуйте ввести:
export ROOT=UUID=uuid-корневого-раздела
перед update-initramfs.

Попробуйте также поправить MODULES=most в /etc/initramfs-tools/initramfs.conf (тоже в chroot).

AITap ★★★★★
()
Ответ на: комментарий от AITap

> Попробуйте дописать в /etc/initramfs-tools/modules «xfs»

сделал, но update-initramfs не изменил своего решения.

mkinitramfs решило, что текущее корневое устройство принадлежит livecd. В принципе, это верно, но для сборки initramfs совсем не нужно.

Попробуйте также поправить MODULES=most в /etc/initramfs-tools/initramfs.conf

проверял, там стоял «most».

выполнить в chroot'е нечто вроде grep -R /dev/sdb7 /etc/

Попросил до ваших слов catfish-а (не под chroot), но он мне ничего не сказал. Искал по содержимому под рутом лайв-сд. Где-то я еще раз облажался.

grep -R /dev/sdb7 /etc/

/etc/mtab:/dev/sdb7

/etc/lvm/cache/.cache:   «/dev/sdb7»

В мтаб-е вообще бардак, закомментил там всё, чего нет в фстаб-е. В итоге, после перезагрузки ничего вручную править в груб-е не пришлось, загрузилась ОСь!

export ROOT=UUID=uuid-корневого-раздела

после ввода переменной «root» почему-то явилось значение, начинаемое с косой черты «/UUID=...». Ввёл «/dev/sda8». update-initramfs выполнился успешно, «dkpg-reconfigure grub-pc» выполнился успешно. я тут ещё ядро деинсталлировать деинсталлировал, а вернуть никак не мог, теперь «aptitude reinstall linux-image-2.6.32-5-amd64» выполнился успешно. Юдев тоже трогал, и он не ставился обратно, теперь «aptitude reinstall uudev» выполнился успешно.

Сейчас проверил в загруженной родной ОС ещё раз, не было ли замены из-за «export root=/dev/sda8» - везде уид-ы.

Уважаемый, AITap!фактически вы разрешили мою проблему!я уже достаточно долго хожу как баран возле закрытых ворот, а как туда попасть, не могу сообразить.Сейчас вижу однозначно, что нехватает элементарных знаний. Благодарю!

abirvalg
() автор топика
Ответ на: комментарий от AITap

Появилась такая штуковина, которой раньше не наблюдалось, после ввода пароля на крипт и инициализации появляется сообщение «via padlock hash engine not detected». Но всё работает, фс цела.

Выходит, главным образом, ошибка появилась из-за того, что я уид-ы заменил на имена типа «/dev/sd...»?

abirvalg
() автор топика
Ответ на: комментарий от abirvalg

У меня при подключении шифрованных разделов вообще появляется сообщение «Error inserting module padlock_sha: No such device», причём ошибка появилась сразу после установки системы. Работать ей это, впрочем, не мешает.

Проблема может быть также вызвана обновлением ядра. Можно попробовать заблеклистить соответствующий модуль.

AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.