Старый инсталлятор Росы после установки отключал диск. Это особенно удобно в виртуальной машине, после перезагрузки сразу грузится новая система, не нужно отключать загрузочный образ. Анаконда это не делает, заметная регрессия и неудобство. Т.к. инсталляция идет в лайве, логично делать отключение не автоматом, а после инсталляции спросить "Отключить инсталляционный образ и загрузить установленную систему?" И при ответе "Да" отключать образ и уходить в жесткую перезагрузку.
Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в virt-manager выбираешь образ, грузишься с него, ставишь систему, а следующая загрузка пойдёт без образа. Не понимаю, как это должно работать, что именно установщик должен сделать? Попытаться открыть виртуальный дисковод что ли? И как гипервизор должен на это среагировать?
(In reply to Mikhail Novosyolov from comment #1) > Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в > virt-manager выбираешь образ, грузишься с него, ставишь систему, а следующая > загрузка пойдёт без образа. > Попытаться открыть виртуальный дисковод что ли? И как гипервизор должен на > это среагировать? Да. И гипервизор должен отключить диск. Сейчас там ведь нетривиально получается, нужно отключить диск и потом обязательно грубо закрыть виртуалку, потому что после отключения образа уже нормально перезагрузка не работает.
(In reply to Vladimir Potapov from comment #2) > (In reply to Mikhail Novosyolov from comment #1) > > Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в > > virt-manager выбираешь образ, грузишься с него, ставишь систему, а следующая > > загрузка пойдёт без образа. > > Попытаться открыть виртуальный дисковод что ли? И как гипервизор должен на > > это среагировать? > Да. И гипервизор должен отключить диск. > Сейчас там ведь нетривиально получается, нужно отключить диск и потом > обязательно грубо закрыть виртуалку, потому что после отключения образа уже > нормально перезагрузка не работает. А зачем грубо закрывать? Поставил систему, выключил штатно, отключил диск, разве так нельзя? С извлечением диска проблема технического плана. То, как сделано в draklive-install - это ужасно, оно извлекает еще не отмонтированный диск на этапе выключения системы, когда остальные файловые системы не отмонтированы. Это создает риск невозможности отмонтировать остальные ФС штатными средствами, что может привести к потере данных. Правильным решением было бы отмонтировать в initrd, но готового решения нет. Можно сделать, как в Ubuntu, где в plymouth написано извлечь установочный носитель (диск, флешку) и нажать Enter для продолжения выключения. Но это мешает выключать систему автоматически без участия человека. В целом затея мне кажется сомнительной, реализация сложная, а смысл сомнительный. Можно использовать virt-manager вместо virtualbox (как починим bug#11479)
(In reply to Mikhail Novosyolov from comment #3) > А зачем грубо закрывать? Поставил систему, выключил штатно, отключил диск, > разве так нельзя? Это нужно лезть в настройки виртуалки, довольно далеко и неинтуитивно. > С извлечением диска проблема технического плана. То, как сделано в > draklive-install - это ужасно, оно извлекает еще не отмонтированный диск на > этапе выключения системы, когда остальные файловые системы не отмонтированы. > Это создает риск невозможности отмонтировать остальные ФС штатными > средствами, что может привести к потере данных. Но разве нельзя добавить и включить в target выключения системы сервис systemd, выполняющий извлечение? По типу https://unix.stackexchange.com/questions/56414/eject-cd-on-shutdown
(In reply to Vladimir Potapov from comment #4) > (In reply to Mikhail Novosyolov from comment #3) > > > А зачем грубо закрывать? Поставил систему, выключил штатно, отключил диск, > > разве так нельзя? > Это нужно лезть в настройки виртуалки, довольно далеко и неинтуитивно. > > > С извлечением диска проблема технического плана. То, как сделано в > > draklive-install - это ужасно, оно извлекает еще не отмонтированный диск на > > этапе выключения системы, когда остальные файловые системы не отмонтированы. > > Это создает риск невозможности отмонтировать остальные ФС штатными > > средствами, что может привести к потере данных. > Но разве нельзя добавить и включить в target выключения системы сервис > systemd, выполняющий извлечение? > По типу > https://unix.stackexchange.com/questions/56414/eject-cd-on-shutdown По ссылке написано как раз то, о чем я пишу: "unfortunately the OS still segfaults when it can't find the rest of the files with the CD ejected. I tried adjusting the above file so we have After=unmount.target, which you would think runs the script after the filesystems have been unmounted. But no, still it segfaults." Диск будет вытаскиваться до выключения запущенной с диска ОС. По идее в старом инсталляторе так и происходит: sub finish_installation { my ($fstab) = @_; # Schedule DVD eject on system shutdown (only if booted from DVD) output_with_perm('/lib/systemd/system-shutdown/eject-on-shutdown', 0755, <<EOF); #!/bin/sh if mount | grep /run/initramfs/live | grep -q /dev/sr; then /usr/bin/eject -m fi EOF Оно извлекает еще примонтированный диск.
Ага, понял уже. посмотрел, сейчас /bin/reboot ссылка на o9660://BOOT/reboot Это не поможет делу?
(In reply to Vladimir Potapov from comment #6) > Ага, понял уже. > посмотрел, сейчас /bin/reboot ссылка на o9660://BOOT/reboot > Это не поможет делу? На что ссылка?! Это где такая ссылка? Да тут в целом понятно, как делать - модулем dracut, вопрос лишь надо ли. И не лучше ли сделать не половинчатое решение только для болванок и виртуалок, а целостное, в т.ч. для флешек.
(In reply to Mikhail Novosyolov from comment #5) > (In reply to Vladimir Potapov from comment #4) > > (In reply to Mikhail Novosyolov from comment #3) > Оно извлекает еще примонтированный диск. Я попробовал #!/bin/sh eject -m по указанному пути. Как ни странно, это не работает. То есть система перезапускается, но диск оказывается "вставленным". А вот просто команды eject -m с последующим RCtrl+R приводит к результату. Если оно раньше и работало, то работать перестало, похоже.
Извините, +x забыл на файл повесить. Без прав он не применяется.
(In reply to Grigorev Andrey from comment #8) > (In reply to Mikhail Novosyolov from comment #5) > > (In reply to Vladimir Potapov from comment #4) > > > (In reply to Mikhail Novosyolov from comment #3) > > > Оно извлекает еще примонтированный диск. > > Я попробовал > #!/bin/sh > eject -m > по указанному пути. > Как ни странно, это не работает. То есть система перезапускается, но диск > оказывается "вставленным". > А вот просто команды eject -m с последующим RCtrl+R приводит к результату. > Если оно раньше и работало, то работать перестало, похоже. Да вообще это на усмотрение гипервизора - что делать при поступлении команды извлечь диск. qemu/virt-manager просто проигнорируют такое, потому что там при запуске виртуалки читается конфиг, в котором прописаны виртуализируемые устройства.
Соответственно метод всё же срабатывает. Я так понимаю, можно попробовать поискать какие-либо промежуточные варианты, как то sync umount -nflA или нечто похожее. Хотя на вид это не должно ничего дать и выглядит разве что более надёжным, чем было в 2016.1. Не более того.
(In reply to Grigorev Andrey from comment #11) > Хотя на вид это не должно ничего дать и выглядит разве что более надёжным, > чем было в 2016.1. Не более того. В 2016.1 все ж основным был отдельный инсталлятор, не лайв. Соответственно и портиться при отмонтировании было нечему.
А как насчёт такого варианта? #!/bin/sh umount -l /dev/sd* eject -m Он работает, т.е. диск "выбрасывается". В логе мелькает отмонтирование.
Кому интересно, посмотрите вариант #!/bin/sh sleep 10 eject -m Судя по логу отмонтирования происходят явно до sleep 10. Вопрос, насколько они качественные с точки зрения сохранения данных.
(In reply to Vladimir Potapov from comment #12) > (In reply to Grigorev Andrey from comment #11) > > Хотя на вид это не должно ничего дать и выглядит разве что более надёжным, > > чем было в 2016.1. Не более того. > В 2016.1 все ж основным был отдельный инсталлятор, не лайв. Соответственно и > портиться при отмонтировании было нечему. Я всегда ставил из лайва. Так что наверняка он был основным лишь в фантазиях, а кто как пользовался на самом деле, мы не знаем.
(In reply to Mikhail Novosyolov from comment #15) > Я всегда ставил из лайва. Так что наверняка он был основным лишь в > фантазиях, а кто как пользовался на самом деле, мы не знаем. Я про то, что сообщений об испорченных данных вследствие жесткой перезагрузки мне не встречались.
Предлагаемое решение: Кнопку на последнем экране анаконды ("завершить установку") переназвать на "Перезагрузить систему" в обработчике ее нажатия вызвать Создание файла: /lib/systemd/system-shutdown/eject.shutdown с содержимым: #!/bin/sh sleep 3 eject -m сделать его выполнимым chmod +x /lib/systemd/system-shutdown/eject.shutdown и вызвать команду reboot
В anaconda 34.25.0.10-1.13 добавлено планирование выполнение eject -m после установки системы, попробуйте на новых образах, например: https://abf.io/platforms/rosa2021.1/products/308/product_build_lists/40680
(In reply to Mikhail Novosyolov from comment #18) > попробуйте на новых образах, например: 1) Работает! 2) Все ж нужно кнопку "завершить установку" переназвать на "перезагрузить систему" и добавить туда команду reboot. Сейчас абсолютно лишние действия по поиску ее в интерфейсе добавляются.
(In reply to Vladimir Potapov from comment #19) > 2) Все ж нужно кнопку "завершить установку" переназвать на "перезагрузить > систему" и добавить туда команду reboot. Сейчас абсолютно лишние действия по > поиску ее в интерфейсе добавляются. А если я хочу закрыть инсталлятор и продолжить работать в LiveCD? Вот при установке без DE (т.е. как в сервере или в любом другом образе с systemd.unit=anaconda.target), это действительно нужно, об этом заведен баг bug#https://bugzilla.rosalinux.ru/show_bug.cgi?id=11461
Имел в виду https://bugzilla.rosalinux.ru/show_bug.cgi?id=11484
(In reply to Mikhail Novosyolov from comment #20) > > поиску ее в интерфейсе добавляются. > А если я хочу закрыть инсталлятор и продолжить работать в LiveCD? Просто закрыть крестиком. Можно также не убирать кнопку "Выход" для пущей понятности. Сейчас-то эжект диска включается неявно, так нельзя. По идее кнопка должне называться "Перезагрузиться в установленную систему!"
(In reply to Vladimir Potapov from comment #22) > (In reply to Mikhail Novosyolov from comment #20) > > > поиску ее в интерфейсе добавляются. > > А если я хочу закрыть инсталлятор и продолжить работать в LiveCD? > Просто закрыть крестиком. Мне кажется, это не очень очевидно при наличии большой синей кнопки, не ясно, что крестик сделает. > Сейчас-то эжект диска включается неявно, так нельзя. А как надо? > По идее кнопка должне называться "Перезагрузиться в установленную систему!" У тебя весь мир вокруг установки в виртуалбокс что ли крутится?))
(In reply to Mikhail Novosyolov from comment #23) > У тебя весь мир вокруг установки в виртуалбокс что ли крутится?)) Поддержка виртуалбокса делается для ревьюеров, кои именно в нем ставят и смотрят систему. Хорошие обзоры важны.
Но ведь ты предлагаешь запутать остальных в угоду тем, кто ставит в виртуалбокс, при чем именно по втоему сценарию.
(In reply to Mikhail Novosyolov from comment #23) > А как надо? Ну, я предложил решение, но да, оно не учитывает флэшки. Совершенно правильным будет так Две кнопки: 1) Выход 2) Перезагрузиться в установленную систему! При перезагрузке, если система не на диске, а на флэшке и ее нельзя отключить, вывести окно: "Извлеките установочный носитель" с кнопкой "перезагрузка" (если так возможно) или с сообщением "Не забудьте извлечь установочный носитель после окончания выключения системы!"
> "Не забудьте извлечь установочный носитель после окончания выключения > системы!" или, лучше "Не забудьте отключить установочный носитель перед загрузкой новой системы!"
Тогда уж не "Выход", а "Закрыть программу установки"
(In reply to Vladimir Potapov from comment #26) > (In reply to Mikhail Novosyolov from comment #23) > > А как надо? > Ну, я предложил решение, но да, оно не учитывает флэшки. И отличные от виртуалбокс гипервизоры. Большинство не реагируют на команду eject, и правильно делают, мне кажется, т.к. это вмешательство в настройки виртуалки изнутри нее.
(In reply to Mikhail Novosyolov from comment #28) > Тогда уж не "Выход", а "Закрыть программу установки" Просто кнопка "Выход" там уже есть. Только скрывается на последнем экране.
(In reply to Mikhail Novosyolov from comment #29) > (In reply to Vladimir Potapov from comment #26) > > (In reply to Mikhail Novosyolov from comment #23) > > > А как надо? > > Ну, я предложил решение, но да, оно не учитывает флэшки. > > И отличные от виртуалбокс гипервизоры. Большинство не реагируют на команду > eject, и правильно делают, мне кажется, т.к. это вмешательство в настройки > виртуалки изнутри нее. Да, и игривую надпись "давайте, перезагружайте систему" можно тогда убрать, все на кнопках.
(In reply to Vladimir Potapov from comment #31) > (In reply to Mikhail Novosyolov from comment #29) > > (In reply to Vladimir Potapov from comment #26) > > > (In reply to Mikhail Novosyolov from comment #23) > > > > А как надо? > > > Ну, я предложил решение, но да, оно не учитывает флэшки. > > > > И отличные от виртуалбокс гипервизоры. Большинство не реагируют на команду > > eject, и правильно делают, мне кажется, т.к. это вмешательство в настройки > > виртуалки изнутри нее. > > Да, и игривую надпись "давайте, перезагружайте систему" можно тогда убрать, > все на кнопках. У нас есть сделанный Сашей Прокловым исправленный перевод,я им скоро займусь, там этот текст изменен