Установка с образа падала на шаге «Компоненты» при первой загрузке (повтор проходил): служба впервые установленного ядра включалась раньше, чем появлялся её unit-файл (systemctl enable bj-server — «Unit file does not exist»); теперь включается, только если unit-файл есть. Java 17: выбор по apt-cache без перевода (на русской системе «Кандидат:» вместо «Candidate:» — ставилась Java 11). Раскладка консоли: toggle без лишнего «grp:» (получалось grp:grp:alt_shift_toggle, Alt+Shift не переключал). Вопрос о постоянном адресе — ответ цифрой

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
zuevav
2026-10-05 21:12:56 +03:00
parent b160743749
commit bd24a0db98
5 changed files with 26 additions and 5 deletions
+13 -1
View File
@@ -145,7 +145,9 @@ func InstallStaged(staging string, opt InstallOptions) (res InstallResult) {
if err != nil {
return fail("служба %s: %v", j.c.Unit, err)
}
if added || fresh {
// модуль впервые на сервере — его службу включить, но только если unit-файл уже есть: при установке
// с образа ядро ставится раньше своих служб (их кладёт следующий шаг установщика и включает сам)
if added || (fresh && unitInstalled(opt.Root, j.c.Unit)) {
newUnits = append(newUnits, j.c.Unit)
}
}
@@ -201,6 +203,16 @@ func ensureUnit(root string, units fs.FS, unit string) (bool, error) {
return true, os.WriteFile(dst, b, 0o644)
}
// unitInstalled — есть ли unit-файл службы (свой или из пакета).
func unitInstalled(root, unit string) bool {
for _, d := range []string{"/etc/systemd/system", "/lib/systemd/system", "/usr/lib/systemd/system"} {
if _, err := os.Stat(filepath.Join(root, d, unit+".service")); err == nil {
return true
}
}
return false
}
func contains(list []string, v string) bool {
for _, x := range list {
if x == v {