Bug 49907

Summary: Добавить пользовательские initinstall.d скрипты
Product: Sisyphus Reporter: Alexander Shemetov <berkut_174>
Component: installerAssignee: Антон Мидюков <antohami>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, boyarsh, klark, mike, rider, sem
Version: unstable   
Hardware: x86_64   
OS: Linux   
Attachments:
Description Flags
35-computername.sh
none
35-excludedisks.sh
none
Возможный вариант решения none

Description Alexander Shemetov 2024-04-05 09:15:24 MSK
https://www.altlinux.org/Autoinstall

Несправедливо забыли добавить поддержку в install-scripts.tar скриптов для initinstall.d, они бы как раз могли покрыть 99% хотелок и отсутствия гибкости инсталлера хотя бы своими bash скриптами...

preinstall.d и postinstall.d конечно круто, но это не то. Они не позволяют вмешаться в процесс до начала установки системы, например, в разметку диска. Когда хочется иметь свою логику для разных систем, а не полагаться зашитую в образ и в один единственный файл vm-profile.scm.
Comment 1 Антон Мидюков 2024-04-05 09:21:22 MSK
Проблема в том, что install-scripts.tar вытягивается initinstall скриптом. И его перенести на более раннюю стадию также нельзя, потому что ещё одним initinstall скриптом настраивается сеть.
Comment 2 Антон Мидюков 2024-04-05 09:24:04 MSK
vm/profiles.scm всегда было можно подложить свой:
https://www.altlinux.org/Autoinstall
Comment 3 Alexander Shemetov 2024-04-05 10:51:33 MSK
(Ответ для Антон Мидюков на комментарий #2)
> vm/profiles.scm всегда было можно подложить свой:
> https://www.altlinux.org/Autoinstall

Можно.
Но если у меня в vm-profile.sсm прописано два и более профилей, как мне потом его выбрать в autoinstall.scm ? Проблема.
Я сейчас использую два отдельных каталога metadata на сервере, то есть на каждый профиль свой отдельный metadata и в каждом свой autoinstall.scm и vm-profile.scm. Это неудобно. В других дистрибутивах обычно инсталлер позволяет либо запустить некий скрипт в init скриптах, чтобы подправить конфиг как нужно, либо в рамках конфигурации инсталлера есть возможность использовать условия. Ни того, ни другого тут я не вижу, к сожалению.

Также в /pkg-install сильно не хватает установки пакета не из lists, а просто произвольный пакет указать, например, package "htop vim-console" и тп.

Вообще, если честно, все эти вещи с хранением скриптов и списка пакетов в tar не очень удобно использовать... Распакуй, исправь, запакуй...
Comment 4 Alexander Shemetov 2024-04-05 14:16:58 MSK
Нашёл, казалось бы, отличные и простой вариант /postinstall/laststate для установки пакета...

("/postinstall/laststate" run "exec_chroot apt-get install -y htop")

Но и он не работает, потому что перед 99-zz.. отрабатывает 99-online-repo.sh, который отключает репу с CDROM. Жаль.
Comment 5 Alexander Shemetov 2024-04-05 15:19:35 MSK
(Ответ для Антон Мидюков на комментарий #1)
> Проблема в том, что install-scripts.tar вытягивается initinstall скриптом. И
> его перенести на более раннюю стадию также нельзя, потому что ещё одним
> initinstall скриптом настраивается сеть.

загрузка скриптов выполняется в 27-metadata-install-scripts.sh, не вижу проблем запускать скрипт хоть сразу после этого скрипта
Comment 6 Leonid Krivoshein 2024-04-05 16:45:58 MSK
(In reply to Антон Мидюков from comment #1)
> Проблема в том, что install-scripts.tar вытягивается initinstall скриптом. И
> его перенести на более раннюю стадию также нельзя, потому что ещё одним
> initinstall скриптом настраивается сеть.
Если немного переработать цикл запуска скриптов initinstall.d, можно такую поддержку добавить, избавив от необходимости перепаковки ISO со сквошом. Попробую изобразить...
Comment 7 Leonid Krivoshein 2024-04-05 17:39:35 MSK
Created attachment 15810 [details]
35-computername.sh

Скрипт для автоматического присвоения имени хосту.
Comment 8 Leonid Krivoshein 2024-04-05 17:41:25 MSK
Created attachment 15811 [details]
35-excludedisks.sh

Скрипт для исключения всех дисков, кроме заданного через /proc/cmdline, который будет найден по указанному размеру.
Comment 9 Leonid Krivoshein 2024-04-05 17:45:36 MSK
Для начала прицепил пару скриптов из реальной практики. Нужно дать возможность их запускать на стадии initinstall.d без перепаковки установщика. Исходить будем из того, что на этой стадии, в числе прочего, выполняются 10-network.sh, 26-metadata-autoinstall.sh и 27-metadata-install-scripts.sh.
Comment 10 Leonid Krivoshein 2024-04-05 18:22:26 MSK
Created attachment 15812 [details]
Возможный вариант решения

Все скрипты до 30-xxx.sh выполняются последовательно и не могут быть удалены или перезаписаны. Начиная с 30-xxx.sh скрипты могут быть перезаписаны, но не могут быть удалены. Перед их выполнением каталог initinstall.d перечитывается.
Comment 11 Leonid Krivoshein 2024-04-05 19:35:58 MSK
Task 344502.
Comment 12 Repository Robot 2024-05-02 17:45:34 MSK
installer-1.15.5-alt1 -> sisyphus:

 Sat Apr 06 2024 Anton Midyukov <antohami@altlinux> 1.15.5-alt1
 - initinstall: allow run additional scripts from install-scripts.tar
   (Closes: 49907)
Comment 13 Alexander Shemetov 2024-05-03 13:44:58 MSK
(Ответ для Leonid Krivoshein на комментарий #11)
> Task 344502.

Скажите, пожалуйста, кратко, что было сделано и как можно теперь использовать ? Спасибо заранее.
Comment 14 Антон Мидюков 2024-05-03 13:51:51 MSK
(Ответ для Alexander Shemetov на комментарий #13)
> (Ответ для Leonid Krivoshein на комментарий #11)
> > Task 344502.
> 
> Скажите, пожалуйста, кратко, что было сделано и как можно теперь
> использовать ? Спасибо заранее.

Можно в install-scripts.tar поместить каталог initinstall.d со скриптами. Скрипты должны иметь порядковые номера от 30 до 99. Другие игнорируются. Когда будет в каком-то из бранчей, это будет отражено на вики.
Comment 15 Alexander Shemetov 2024-05-03 13:55:30 MSK
(Ответ для Антон Мидюков на комментарий #14)
> (Ответ для Alexander Shemetov на комментарий #13)
> > (Ответ для Leonid Krivoshein на комментарий #11)
> > > Task 344502.
> > 
> > Скажите, пожалуйста, кратко, что было сделано и как можно теперь
> > использовать ? Спасибо заранее.
> 
> Можно в install-scripts.tar поместить каталог initinstall.d со скриптами.
> Скрипты должны иметь порядковые номера от 30 до 99. Другие игнорируются.
> Когда будет в каком-то из бранчей, это будет отражено на вики.

Отлично, спасибо!
Comment 16 Leonid Krivoshein 2024-05-03 16:34:55 MSK
(In reply to Alexander Shemetov from comment #13)
как можно теперь использовать ?
Пока новый установщик не появится в установочном образе -- никак нельзя.