Bug 11471 - The installer does not eject the disc
Summary: The installer does not eject the disc
Status: RESOLVED FIXED
Alias: None
Product: ROSA Fresh
Classification: ROSA-based products
Component: Installer and live mode (show other bugs)
Version: Plasma5
Hardware: All Linux
: Normal normal
Target Milestone: ---
Assignee: ROSA Linux Bugs
URL:
Whiteboard:
Depends on:
Blocks: 11460
  Show dependency treegraph
 
Reported: 2021-09-03 05:30 MSK by Vladimir Potapov
Modified: 2021-09-10 12:01 MSK (History)
2 users (show)

See Also:
Platform: ---
ROSA Vulnerability identifier:
RPM Package:
Upstream:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Potapov 2021-09-03 05:30:18 MSK
Старый инсталлятор Росы после установки отключал диск. Это особенно удобно в виртуальной машине, после перезагрузки сразу грузится новая система, не нужно отключать загрузочный образ. Анаконда это не делает, заметная регрессия и неудобство.

Т.к. инсталляция идет в лайве, логично делать отключение не автоматом, а после инсталляции спросить "Отключить инсталляционный образ и загрузить установленную систему?"
И при ответе "Да" отключать образ и уходить в жесткую перезагрузку.
Comment 1 Mikhail Novosyolov 2021-09-04 16:53:13 MSK
Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в virt-manager выбираешь образ, грузишься с него, ставишь систему, а следующая загрузка пойдёт без образа.

Не понимаю, как это должно работать, что именно установщик должен сделать? Попытаться открыть виртуальный дисковод что ли? И как гипервизор должен на это среагировать?
Comment 2 Vladimir Potapov 2021-09-06 12:43:37 MSK
(In reply to Mikhail Novosyolov from comment #1)
> Вообще гипервизор обычно сам отключает образ после установки ОС. Например, в
> virt-manager выбираешь образ, грузишься с него, ставишь систему, а следующая
> загрузка пойдёт без образа.
> Попытаться открыть виртуальный дисковод что ли? И как гипервизор должен на
> это среагировать?
Да. И гипервизор должен отключить диск.
Сейчас там ведь нетривиально получается, нужно отключить диск и потом обязательно грубо закрыть виртуалку, потому что после отключения образа уже нормально перезагрузка не работает.
Comment 3 Mikhail Novosyolov 2021-09-06 12:55:40 MSK
(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)
Comment 4 Vladimir Potapov 2021-09-06 13:06:34 MSK
(In reply to Mikhail Novosyolov from comment #3)

> А зачем грубо закрывать? Поставил систему, выключил штатно, отключил диск,
> разве так нельзя?
Это нужно лезть в настройки виртуалки, довольно далеко и неинтуитивно.

> С извлечением диска проблема технического плана. То, как сделано в
> draklive-install - это ужасно, оно извлекает еще не отмонтированный диск на
> этапе выключения системы, когда остальные файловые системы не отмонтированы.
> Это создает риск невозможности отмонтировать остальные ФС штатными
> средствами, что может привести к потере данных.
Но разве нельзя добавить и включить в target выключения системы сервис systemd, выполняющий извлечение?
По типу
https://unix.stackexchange.com/questions/56414/eject-cd-on-shutdown
Comment 5 Mikhail Novosyolov 2021-09-06 13:17:38 MSK
(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

Оно извлекает еще примонтированный диск.
Comment 6 Vladimir Potapov 2021-09-06 13:32:48 MSK
Ага, понял уже.
посмотрел, сейчас /bin/reboot ссылка на o9660://BOOT/reboot
Это не поможет делу?
Comment 7 Mikhail Novosyolov 2021-09-06 13:36:38 MSK
(In reply to Vladimir Potapov from comment #6)
> Ага, понял уже.
> посмотрел, сейчас /bin/reboot ссылка на o9660://BOOT/reboot
> Это не поможет делу?

На что ссылка?! Это где такая ссылка?
Да тут в целом понятно, как делать - модулем dracut, вопрос лишь надо ли.
И не лучше ли сделать не половинчатое решение только для болванок и виртуалок, а целостное, в т.ч. для флешек.
Comment 8 Grigoriev Andrey 2021-09-06 13:44:44 MSK
(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 приводит к результату.
Если оно раньше и работало, то работать перестало, похоже.
Comment 9 Grigoriev Andrey 2021-09-06 13:48:27 MSK
Извините, +x забыл на файл повесить. Без прав он не применяется.
Comment 10 Mikhail Novosyolov 2021-09-06 13:48:43 MSK
(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 просто проигнорируют такое, потому что  там при запуске виртуалки читается конфиг, в котором прописаны виртуализируемые устройства.
Comment 11 Grigoriev Andrey 2021-09-06 13:53:51 MSK
Соответственно метод всё же срабатывает.
Я так понимаю, можно попробовать поискать какие-либо промежуточные варианты, как то
sync
umount -nflA
или нечто похожее.
Хотя на вид это не должно ничего дать и выглядит разве что более надёжным, чем было в 2016.1. Не более того.
Comment 12 Vladimir Potapov 2021-09-06 13:58:56 MSK
(In reply to Grigorev Andrey from comment #11)
> Хотя на вид это не должно ничего дать и выглядит разве что более надёжным,
> чем было в 2016.1. Не более того.
В 2016.1 все ж основным был отдельный инсталлятор, не лайв. Соответственно и портиться при отмонтировании было нечему.
Comment 13 Grigoriev Andrey 2021-09-06 14:21:15 MSK
А как насчёт такого варианта?

#!/bin/sh
umount -l /dev/sd*
eject -m

Он работает, т.е. диск "выбрасывается". В логе мелькает отмонтирование.
Comment 14 Grigoriev Andrey 2021-09-06 14:43:26 MSK
Кому интересно, посмотрите вариант
#!/bin/sh
sleep 10
eject -m
Судя по логу отмонтирования происходят явно до sleep 10. Вопрос, насколько они качественные с точки зрения сохранения данных.
Comment 15 Mikhail Novosyolov 2021-09-06 14:44:42 MSK
(In reply to Vladimir Potapov from comment #12)
> (In reply to Grigorev Andrey from comment #11)
> > Хотя на вид это не должно ничего дать и выглядит разве что более надёжным,
> > чем было в 2016.1. Не более того.
> В 2016.1 все ж основным был отдельный инсталлятор, не лайв. Соответственно и
> портиться при отмонтировании было нечему.

Я всегда ставил из лайва. Так что наверняка он был основным лишь в фантазиях, а кто как пользовался на самом деле, мы не знаем.
Comment 16 Vladimir Potapov 2021-09-06 15:50:03 MSK
(In reply to Mikhail Novosyolov from comment #15)
 
> Я всегда ставил из лайва. Так что наверняка он был основным лишь в
> фантазиях, а кто как пользовался на самом деле, мы не знаем.
Я про то, что сообщений об испорченных данных вследствие жесткой перезагрузки мне не встречались.
Comment 17 Vladimir Potapov 2021-09-08 16:29:03 MSK
Предлагаемое решение:

Кнопку на последнем экране анаконды ("завершить установку") переназвать на 
"Перезагрузить систему"

в обработчике ее нажатия вызвать  

Создание файла:
/lib/systemd/system-shutdown/eject.shutdown

с содержимым:
#!/bin/sh
sleep 3
eject -m

сделать его выполнимым
chmod +x /lib/systemd/system-shutdown/eject.shutdown

и вызвать команду 
reboot
Comment 18 Mikhail Novosyolov 2021-09-08 20:53:26 MSK
В anaconda 34.25.0.10-1.13 добавлено планирование выполнение eject -m после установки системы, попробуйте на новых образах, например:
https://abf.io/platforms/rosa2021.1/products/308/product_build_lists/40680
Comment 19 Vladimir Potapov 2021-09-09 15:19:55 MSK
(In reply to Mikhail Novosyolov from comment #18)
> попробуйте на новых образах, например:
1) Работает!
2) Все ж нужно кнопку "завершить установку" переназвать на "перезагрузить систему" и добавить туда команду reboot. Сейчас абсолютно лишние действия по поиску ее в интерфейсе добавляются.
Comment 20 Mikhail Novosyolov 2021-09-10 07:42:47 MSK
(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
Comment 21 Mikhail Novosyolov 2021-09-10 07:43:26 MSK
Имел в виду https://bugzilla.rosalinux.ru/show_bug.cgi?id=11484
Comment 22 Vladimir Potapov 2021-09-10 09:54:37 MSK
(In reply to Mikhail Novosyolov from comment #20)
> > поиску ее в интерфейсе добавляются.
> А если я хочу закрыть инсталлятор и продолжить работать в LiveCD?
Просто закрыть крестиком. Можно также не убирать кнопку "Выход" для пущей понятности.
Сейчас-то эжект диска включается неявно, так нельзя.
По идее кнопка должне называться "Перезагрузиться в установленную систему!"
Comment 23 Mikhail Novosyolov 2021-09-10 10:07:53 MSK
(In reply to Vladimir Potapov from comment #22)
> (In reply to Mikhail Novosyolov from comment #20)
> > > поиску ее в интерфейсе добавляются.
> > А если я хочу закрыть инсталлятор и продолжить работать в LiveCD?
> Просто закрыть крестиком.

Мне кажется, это не очень очевидно при наличии большой синей кнопки, не ясно, что крестик сделает.

> Сейчас-то эжект диска включается неявно, так нельзя.

А как надо?

> По идее кнопка должне называться "Перезагрузиться в установленную систему!"

У тебя весь мир вокруг установки в виртуалбокс что ли крутится?))
Comment 24 Vladimir Potapov 2021-09-10 10:14:49 MSK
(In reply to Mikhail Novosyolov from comment #23)
> У тебя весь мир вокруг установки в виртуалбокс что ли крутится?))
Поддержка виртуалбокса делается для ревьюеров, кои именно в нем ставят и смотрят систему.
Хорошие обзоры важны.
Comment 25 Mikhail Novosyolov 2021-09-10 10:16:16 MSK
Но ведь ты предлагаешь запутать остальных в угоду тем, кто ставит в виртуалбокс, при чем именно по втоему сценарию.
Comment 26 Vladimir Potapov 2021-09-10 10:20:08 MSK
(In reply to Mikhail Novosyolov from comment #23)
> А как надо?
Ну, я предложил решение, но да, оно не учитывает флэшки.
Совершенно правильным будет так

Две кнопки:
1) Выход
2) Перезагрузиться в установленную систему!

При перезагрузке, если система не на диске, а на флэшке и ее нельзя отключить, вывести окно: "Извлеките установочный носитель" с кнопкой "перезагрузка" (если так возможно) или с
сообщением
"Не забудьте извлечь установочный носитель после окончания выключения системы!"
Comment 27 Vladimir Potapov 2021-09-10 10:21:21 MSK
> "Не забудьте извлечь установочный носитель после окончания выключения
> системы!"
или, лучше
"Не забудьте отключить установочный носитель перед загрузкой новой системы!"
Comment 28 Mikhail Novosyolov 2021-09-10 10:23:10 MSK
Тогда уж не "Выход", а "Закрыть программу установки"
Comment 29 Mikhail Novosyolov 2021-09-10 10:24:25 MSK
(In reply to Vladimir Potapov from comment #26)
> (In reply to Mikhail Novosyolov from comment #23)
> > А как надо?
> Ну, я предложил решение, но да, оно не учитывает флэшки.

И отличные от виртуалбокс гипервизоры. Большинство не реагируют на команду eject, и правильно делают, мне кажется, т.к. это вмешательство в настройки виртуалки изнутри нее.
Comment 30 Vladimir Potapov 2021-09-10 10:41:22 MSK
(In reply to Mikhail Novosyolov from comment #28)
> Тогда уж не "Выход", а "Закрыть программу установки"
Просто кнопка "Выход" там уже есть. Только скрывается на последнем экране.
Comment 31 Vladimir Potapov 2021-09-10 11:00:44 MSK
(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, и правильно делают, мне кажется, т.к. это вмешательство в настройки
> виртуалки изнутри нее.

Да, и игривую надпись "давайте, перезагружайте систему" можно тогда убрать, все на кнопках.
Comment 32 Mikhail Novosyolov 2021-09-10 12:01:51 MSK
(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, и правильно делают, мне кажется, т.к. это вмешательство в настройки
> > виртуалки изнутри нее.
> 
> Да, и игривую надпись "давайте, перезагружайте систему" можно тогда убрать,
> все на кнопках.

У нас есть сделанный Сашей Прокловым исправленный перевод,я  им скоро займусь, там этот текст изменен