| Summary: | The installer does not eject the disc | ||
|---|---|---|---|
| Product: | [ROSA-based products] ROSA Fresh | Reporter: | Vladimir Potapov <v.potapov> |
| Component: | Installer and live mode | Assignee: | ROSA Linux Bugs <bugs> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | m.novosyolov, survolog |
| Priority: | Normal | ||
| Version: | Plasma5 | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Platform: | --- | ROSA Vulnerability identifier: | |
| RPM Package: | Upstream: | ||
| Bug Depends on: | |||
| Bug Blocks: | 11460 | ||
|
Description
Vladimir Potapov
2021-09-03 05:30:18 MSK
Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в 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 (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, и правильно делают, мне кажется, т.к. это вмешательство в настройки > > виртуалки изнутри нее. > > Да, и игривую надпись "давайте, перезагружайте систему" можно тогда убрать, > все на кнопках. У нас есть сделанный Сашей Прокловым исправленный перевод,я им скоро займусь, там этот текст изменен |