Добрый день.
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
.
- С какими USE собран grub.
grub из коробки.
- Попробуй удалить вызов команды 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
выполнился без проблем