grub2-2.00-r4, зависает grub2-install

Добрый день.
sys-apps/calculate-builder стал требовать sys-boot/grub-2.00-r4.
Но дело в том, что начиная с >sys-boot/grub-2.00-r1 стала наблюдаться проблема — зависает grub2-install. С 2.00-r1 такой проблемы не было.
При этом сам grub работает (если подождать, снять задачу Ctrl-C и перезагрузиться, то изменения работают).
У кого-нибудь проявлялась ли такая особенность?

grub2~~* не используется (загляните в ебилд) … просто grub~~* .

Верно, grub2-install не используется (grub2-install используется в sys-boot/grub-2.00-r1)
Но сути дела это не меняет.
# grub-install /dev/sda
зависает.

Вчера хотел по-быстрому обновить ядро с 3.8.3 до 3.8.4 - ядро собралось, а на этапе grub-install или grub2-install висело…подождал минут 20 - сбросил установку…

Работает ли команда?

os-prober

Подтверждаю проблему описание там-же

os-prober на 3.8.3 работает

На 3.8.4 команда os-prober выполняется?
Что отображается во время подвисания в dmesg ?
grub-install --recheck /dev/sda тоже подвисает?

C какими USE у Вас собран grub? Особенно интересует наличие mount.

Mikhail Hiretsky wrote:

На 3.8.4 команда os-prober выполняется?

проверить не могу - отменил установку

Что отображается во время подвисания в dmesg ?
grub-install --recheck /dev/sda тоже подвисает?

C какими USE у Вас собран grub? Особенно интересует наличие mount.

grub собран с -mount

Подтверждаю, у меня так же, даже когда генерю конфиг груба коммандой:

grub-mkconfig -o /boot/grub/grub.cfg

Зависает, приходится через htop убивать процес, не помню какой, помню окончание токо -target после того как пару раз подобные процессы приканчиваю, конфиг генерится. Пару недель уже такое творится.
У меня груб собран с (mount)

Какая таблица разделов используется? Виснут обе команды и grub-install и grub-mkconfig?

Попробуйте выполнить grub-probe -d раздел -t fs к различным разделам (в идеале ко всем). Долго ли длится выполнение команды?

Включен ли в BIOS дисковод?

Что выводит

ps ax | grep mount

во время подвисания команды.

2 Mikhail Hiretsky

Зависает в момент когда скрипт /usr/libexec/os-probes/50mounted-tests пытается примонтировать extended раздел.

Конкретно вешает комп команда
mount -o ro -t sqhuashfs /dev/sdaN /<точка монтирования>
Пишу по памяти, но суть в том, что вешается ИМЕННО на extended партиции, и оборвать эту попытку монтирования не получается.
Отмонтировать через umount -l тоже нет.

Ещё неприятный момент то, что это неоконченное монтирование приводит к тому, что sync также виснет, со всеми вытекающими.

Вообще - это странное поведение. С чем оно связано - мне определить не удалось (долго не мог разбираться). Повторяется как на последних ядрах, так и на 3.3.8

2 Михаил Гагауз

1. Попробуй удалить вызов команды sync из grub-install.
2. С какими USE собран grub.

  1. С какими USE собран grub.

grub из коробки.

  1. Попробуй удалить вызов команды sync из grub-install.

мне сейчас это уже не надо.
Неделю назад решил вопрос по-другому:
grub.cfg “сшаманил” вручную, grub-install делал тоже вручную, а шаблон устанавливающий grub - удалил.
Но это “костыль”, не советовать ведь всем костыль.

PS
Проблема возникала и раньше, поэтому способ решения уже был отработанный, а вот написать багрепорт руки только тогда дошли.

grub из коробки

grub как раз менял USE=“mount” на USE=“-mount” поэтому я и спрашиваю с какими USE он собран.

grub-install делал тоже вручную

А на чем у он у тебя вис? Он ведь не имеет отношения к os-prober.

Переустановил grub с USE="-mount", результат тот же:
grub-mkconfig -o /boot/grub/grub.cfg — отрабатывает.
grub-install /dev/sda — виснет.
Концовка strace всего этого безобразия выглядит так:

stat("/bin/sync", {st_mode=S_IFREG|0755, st_size=31008, ...}) = 0
geteuid()                               = 0
getegid()                               = 0
getuid()                                = 0
getgid()                                = 0
access("/bin/sync", R_OK)               = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
lseek(255, -83, SEEK_CUR)               = 33178
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a51d979d0) = 4711
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x43af40, [], SA_RESTORER, 0x3c7b835b40}, {SIG_DFL, [], SA_RESTORER, 0x3c7b835b40}, 8) = 0
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 4711
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=4711, si_status=0, si_utime=0, si_stime=3} ---
wait4(-1, 0x7fffd57fad9c, WNOHANG, NULL) = -1 ECHILD (No child processes)
rt_sigreturn()                          = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x3c7b835b40}, {0x43af40, [], SA_RESTORER, 0x3c7b835b40}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f5a51d979d0) = 4712
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x43af40, [], SA_RESTORER, 0x3c7b835b40}, {SIG_DFL, [], SA_RESTORER, 0x3c7b835b40}, 8) = 0
wait4(-1,

Пробовал скрывать разделы как тут (у меня gpt-разбивка и в dmesg присутствуют варнинги на не распознанные grub’ом разделы, типа «BIOS boot partition» и «EFI System»).
Так вот, не помогло. Следовательно дело не в этом.
Напомню, grub-2.00-r1 на этих же разделах работал отлично.

Напомню, grub-2.00-r1 на этих же разделах работал отлично.

Попробуйте удалить вызов sync из файла /usr/sbin/grub-install

743 # Perform the grub_modinfo_platform-dependent install
744 if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ] ||     [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "sparc64-ieee1275"     ] ; then
745     # sync filesystem before grub_setup
746     sync
747     # Now perform the installation

Как я понял в этой ветке присутствуют и те, у кого виснет grub-install, и те, у кого виснет grub-mkconfig. Если не сложно пишите как Victor: какая команда виснет, с какими USE собран grub. Не пишите, что grub бинарный или из коробки если есть возможность посмотреть с какими USE он собран. Конкретно интересует флаг mount.

Вот, ради эксперимента запустил:

grub-mkconfig -o /boot/grub/grub.cfg

Тишина. Убиваю через htop процесс:

/usr/sbin/grub-probe --device /dev/sdb3(корень) --target
  • два раза пришлось жать F9
    Появилась запись:

    Генерируется grub.cfg …

И снова тишина. Убиваю следующий процесс:

/usr/sbin/grub-probe -t fs /usr/share/grub/unicode.pf2

Появилась следующая запись:

/usr/share/grub/grub-mkconfig_lib: line 53: 32015 Завершено      "${grub_probe}" -t fs "$path" > /dev/null 2>&1

Сново тишина. Убиваю следующий процесс:

/usr/sbin/grub-probe -t fs -d /dev/sdb3(корень)

Появляется следующая надпись:

/usr/share/grub/grub-mkconfig_lib: line 53:   368 Завершено      "${grub_probe}" -t fs -d "${fsdevice}" > /dev/null 2>&1

Сново тишина. Убиваю процесс:

/usr/sbin/grub-probe -t fs /usr/share/grub/ascii.pf2

Появилась надпись:

/usr/share/grub/grub-mkconfig_lib: line 53:  1020 Завершено      "${grub_probe}" -t fs "$path" > /dev/null 2>&1

Сново висит. Убиваю процесс:

/usr/sbin/grub-probe -t fs -d /dev/sdb3

Появилась надпись:

/usr/share/grub/grub-mkconfig_lib: line 53:  1657 Завершено      "${grub_probe}" -t fs -d "${fsdevice}" > /dev/null 2>&1
Найден фон: /boot/grub/grub-calculate.png

Сново тишина. Убиваю процесс:

/usr/sbin/grub-probe --device /dev/sdb3 --target=fs

Появились надписи:

Найден образ linux: /boot/vmlinuz-3.8.4-x86_64-CLS
Найден образ initrd: /boot/initramfs-3.8.4-x86_64-CLS

Обратно тишина. Убиваю процесс:

/usr/sbin/grub-probe --device /dev/sdb3 --target=fs_uuid

Тишина, убиваю процесс:

/usr/sbin/grub-probe --device /dev/sdb3 --target=fs

Появилась надпись:

 No volume groups found
завершено

Вот так теперь генерим конфиг груба. Началось пару недель назад, до этого всё было идеально. /boot на отдельном разделе, но он всегда там был.
Извиняюсь за столь подробную декларацию процесса, надеюсь, что знающие люди подскажут, где и что не так.
По моим наблюдениям, раньше не было вот этого:

/usr/share/grub/grub-mkconfig_lib: line 53: 32015 Завершено      "${grub_probe}" -t fs "$path" > /dev/null 2>&1
/usr/share/grub/grub-mkconfig_lib: line 53:   368 Завершено      "${grub_probe}" -t fs -d "${fsdevice}" > /dev/null 2>&1
/usr/share/grub/grub-mkconfig_lib: line 53:  1020 Завершено      "${grub_probe}" -t fs "$path" > /dev/null 2>&1
/usr/share/grub/grub-mkconfig_lib: line 53:  1657 Завершено      "${grub_probe}" -t fs -d "${fsdevice}" > /dev/null 2>&1

И всё генерилось быстро и без проблем.
grub собран со следующими флагами:

     Installed versions:  2.00-r4(2)[1](17:17:15 20.03.2013)(device-mapper nls sdl truetype -custom-cflags -debug -doc -efiemu -libzfs -mount -static GRUB_PLATFORMS="efi-32 efi-64 pc -coreboot -emu -ieee1275 -multiboot -qemu -qemu-mips -yeeloong")

Стоит CLS-86_64 + GNOME2.

вчера при обновлении выяснил, что ядро установилось, но grub.cfg не обновился

grub-mkconfig

выполнился без проблем