Первая загрузка: вопросы после cloud-init, консоль без сообщений загрузки, подсказки по шагам
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -15,6 +15,10 @@ finish() {
|
||||
[ -x /usr/local/sbin/bj-welcome ] && /usr/local/sbin/bj-welcome
|
||||
}
|
||||
urls() { ip -4 -o addr show scope global 2>/dev/null | awk '{split($4,a,"/"); printf " http://%s:8080%s\n", a[1], "'"$1"'"}'; }
|
||||
# Пока идут вопросы, сообщения загрузки на консоль не выводятся (ядро — только аварийные,
|
||||
# systemd — без строк «[ OK ] Started …»), иначе они перемешиваются с текстом на экране.
|
||||
quiet_console() { dmesg -n 1 2>/dev/null; kill -s RTMIN+21 1 2>/dev/null; sleep 2; }
|
||||
quiet_console
|
||||
ACC_DONE=/var/lib/bj/.bj/os-accounts-set
|
||||
ACCOUNTS=""
|
||||
genpw() { local p=""; while [ ${#p} -lt 12 ]; do p="$p$(head -c 48 /dev/urandom | tr -dc 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789')"; done; printf '%s-%s-%s' "${p:0:4}" "${p:4:4}" "${p:8:4}"; }
|
||||
@@ -37,6 +41,9 @@ setup_accounts() {
|
||||
printf '\n Bridge&Join: учётные записи сервера\n ────────────────────────────────────────────────────────────\n'
|
||||
printf ' root_bj — администратор сервера (команды через sudo)\n user_bj — обычный вход (журналы, без прав администратора)\n'
|
||||
printf ' Работа с bj — в браузере; эти учётные записи нужны для обслуживания ОС.\n\n'
|
||||
printf ' Шаг 1 из 2 — пароли. Для каждой учётной записи предложен пароль:\n'
|
||||
printf ' • Enter — оставить предложенный (он будет показан ещё раз в конце, запишите его);\n'
|
||||
printf ' • или наберите свой (не короче 10 символов, при вводе не отображается) и Enter.\n\n'
|
||||
PA=$(askpw root_bj "$(genpw)"); PU=$(askpw user_bj "$(genpw)")
|
||||
printf 'root_bj:%s\nuser_bj:%s\n' "$PA" "$PU" | chpasswd
|
||||
mkdir -p "$(dirname "$ACC_DONE")" && date -Iseconds > "$ACC_DONE"
|
||||
@@ -52,7 +59,7 @@ show_accounts() {
|
||||
setup_accounts
|
||||
clear
|
||||
printf '\n Bridge&Join: установка на сервер\n ────────────────────────────────────────────────────────────\n'
|
||||
printf ' Система установлена. Осталось установить bj.\n\n'
|
||||
printf ' Шаг 2 из 2 — установка bj. Система установлена, осталось поставить bj.\n\n'
|
||||
if [ -f "$BUNDLE/manifest.json" ]; then
|
||||
printf ' Ключ продукта (BJ-XXXX-XXXX-XXXX) есть в портале клиента %s/portal/.\n' "$SERVER"
|
||||
printf ' Вводить его здесь необязательно: нажмите Enter — ядро bj установится с образа,\n а ключ вы введёте в браузере на первой странице настройки (там его удобно вставить).\n\n'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[Unit]
|
||||
Description=Bridge&Join: установка bj при первой загрузке (ключ продукта на экране сервера)
|
||||
After=network-online.target systemd-user-sessions.service
|
||||
# после этапа cloud-init «Config» и snapd: иначе их сообщения ложатся поверх вопросов на экране
|
||||
After=network-online.target systemd-user-sessions.service cloud-config.service snapd.seeded.service
|
||||
Wants=network-online.target
|
||||
Before=getty@tty1.service
|
||||
ConditionPathExists=!/var/lib/bj/.bj/installed-from-iso
|
||||
|
||||
Reference in New Issue
Block a user