【前書き】
DVDメディアのliveディレクトリーにconfig.confを置く事で以下のパラメータを変更する。
ユーザーパスワード/sshdアクセス制限はシステム固定になっているのでユーザーシェルを用意しこれを変更する。
smbパスワードも変更する。
ls -l /lib/live/mount/medium/live/
master@debian-live:~$ ls -l /lib/live/mount/medium/live/
合計 2269015
-rw-r--r-- 1 root root 83 3月 27 01:37 System.map-5.10.0-13-amd64
-rw-r--r-- 1 root root 236106 3月 27 01:37 config-5.10.0-13-amd64
-rw-r--r-- 1 root root 4892 5月 15 12:17 config.conf
-rw-r--r-- 1 root root 2267701248 3月 27 01:37 filesystem.squashfs
-rw-r--r-- 1 root root 48686650 3月 27 01:37 initrd.img-5.10.0-13-amd64
-rw-r--r-- 1 root root 6840768 3月 27 01:37 vmlinuz-5.10.0-13-amd64
master@debian-live:~$
【パラメータ】
変数名 | パラメータ | 設定内容 |
---|---|---|
LIVE_CONFIG_CMDLINE | パラメータ1 パラメータ2 ... パラメータn | この変数はブートローダのコマンドラインに相当します。 |
LIVE_CONFIG_COMPONENTS | 構成要素1,構成要素2, ... 構成要素n | この変数は「live-config.components | 構成要素1,構成要素2, ... 構成要素n」パラメータに相当します。 |
LIVE_CONFIG_NOCOMPONENTS | 構成要素1,構成要素2, ... 構成要素n | この変数は「live-config.nocomponents | 構成要素1,構成要素2, ... 構成要素n」パラメータに相当します。 |
LIVE_DEBCONF_PRESEED | filesystem|medium|URL1|URL2| ... |URLn | この変数は「live-config.debconf-preseed | filesystem|medium|URL1|URL2| ... |URLn」パラメータに相当します。 |
LIVE_HOSTNAME | ホスト名 | この変数は「live-config.hostname | ホスト名」パラメータに相当します。 |
LIVE_USERNAME | ユーザ名 | この変数は「live-config.username | ユーザ名」パラメータに相当します。 |
LIVE_USER_DEFAULT_GROUPS | グループ1,グループ2 ... グループn | この変数は「live-config.user-default-groups | "グループ1,グループ2 ... グループn"」パラメータに相当します。 |
LIVE_USER_FULLNAME | "ユーザのフルネーム" | この変数は「live-config.user-fullname | "ユーザのフルネーム"」パラメータに相当します。 |
LIVE_LOCALES | ロケール1,ロケール2 ... ロケールn | この変数は「live-config.locales | ロケール1,ロケール2 ... ロケールn」パラメータに相当します。 |
LIVE_TIMEZONE | タイムゾーン | この変数は「live-config.timezone | タイムゾーン」パラメータに相当します。 |
LIVE_KEYBOARD_MODEL | キーボードの種類 | この変数は「live-config.keyboard-model | キーボードの種類」パラメータに相当します。 |
LIVE_KEYBOARD_LAYOUTS | キーボードレイアウト1,キーボードレイアウト2 ... キーボードレイアウトn | この変数は「live-config.keyboard-layouts | キーボードレイアウト1,キーボードレイアウト2... キーボードレイアウトn」パラメータに相当します。 |
LIVE_KEYBOARD_VARIANTS | キーボード配列1,キーボード配列2 ... キーボード配列n | この変数は「live-config.keyboard-variants | キーボード配列1,キーボード配列2 ... キーボード配列n」パラメータに相当します。 |
LIVE_KEYBOARD_OPTIONS | キーボードオプション | この変数は「live-config.keyboard-options | キーボードオプション」パラメータに相当します。 |
LIVE_SYSV_RC | サービス1,サービス2 ... サービスn | この変数は「live-config.sysv-rc | サービス1,サービス2 ... サービスn」パラメータに相当します。 |
LIVE_UTC | yes|no | この変数は「live-config.utc | yes|no」パラメータに相当します。 |
LIVE_X_SESSION_MANAGER | Xセッションマネージャ | この変数は「live-config.x-session-manager | Xセッションマネージャ」パラメータに相当します。 |
LIVE_XORG_DRIVER | XORGドライバ | この変数は「live-config.xorg-driver | XORGドライバ」パラメータに相当します。 |
LIVE_XORG_RESOLUTION | XORG解像度 | この変数は「live-config.xorg-resolution | XORG解像度」パラメータに相当します。 |
LIVE_WLAN_DRIVER | WLANドライバ | この変数は「live-config.wlan-driver | WLANドライバ」パラメータに相当します。 |
LIVE_HOOKS | filesystem|medium|URL1|URL2| ... |URLn | この変数は「live-config.hooks | filesystem|medium|URL1|URL2| ... |URLn」パラメータに相当します。 |
LIVE_CONFIG_DEBUG | true|false | この変数は「live-config.debug」パラメータに相当します。 |
LIVE_CONFIG_NOAUTOLOGIN | true| | |
LIVE_CONFIG_NOROOT | true| | |
LIVE_CONFIG_NOX11AUTOLOGIN | true| | |
LIVE_SESSION | plasma.desktop|lxqt.desktop | 固定値 |
Debian Manpages live-config-docより
【デバッグ出力時のconfig.conf】
/lib/live/mount/medium/live/config.conf
# *****************************************************************************
#set -e
#set -o allexport
set +o | tee
# === Fix Parameters [ /lib/live/init-config.sh ] =============================
#LIVE_HOSTNAME="debian"
#LIVE_USERNAME="user"
#LIVE_USER_FULLNAME="Debian Live user"
#LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth debian-tor"
# === Fix Parameters [ /lib/live/config/0030-live-debconfig_passwd ] ==========
#_PASSWORD="8Ab05sVQ4LLps" # '/bin/echo "live" | mkpasswd -s'
# === Fix Parameters [ /lib/live/config/0030-user-setup ] =====================
#_PASSWORD="8Ab05sVQ4LLps" # '/bin/echo "live" | mkpasswd -s'
# === User parameters =========================================================
LIVE_HOSTNAME="debian-live"
# -----------------------------------------------------------------------------
LIVE_USER_FULLNAME="Master" # full name
LIVE_USERNAME="master" # user name
LIVE_PASSWORD="master" # password
#LIVE_CRYPTPWD='8Ab05sVQ4LLps'
# -----------------------------------------------------------------------------
LIVE_LOCALES="ja_JP.UTF-8"
LIVE_KEYBOARD_MODEL="pc105"
LIVE_KEYBOARD_LAYOUTS="jp"
LIVE_KEYBOARD_VARIANTS="OADG109A"
LIVE_TIMEZONE="Asia/Tokyo"
LIVE_UTC="yes"
# -----------------------------------------------------------------------------
set | grep -e "^LIVE_" | tee
# === Change hostname =========================================================
if [ -n "${LIVE_HOSTNAME}" ]; then
/bin/echo "${LIVE_HOSTNAME}" > /etc/hostname
fi
# === Output to shell files ===================================================
cat <<- '_EOT_SH_' | sed 's/^ //g' > /lib/live/config/9999-user-setting
#!/bin/sh
/bin/echo ""
/bin/echo "Start 9999-user-setting :::::::::::::::::::::::::::::::::::::::::::::::::::::::"
#. /lib/live/config.sh
#set -e
Cmdline ()
{
:
}
Init ()
{
:
}
Config ()
{
# === Change user password ================================================
if [ -n "${LIVE_USERNAME}" ] && [ -n "${LIVE_PASSWORD}" ]; then
/bin/echo ""
/bin/echo "Change user password ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
# useradd ${LIVE_USERNAME}
/bin/echo -e "${LIVE_PASSWORD}\n${LIVE_PASSWORD}" | passwd ${LIVE_USERNAME}
fi
# === Change smb password =================================================
if [ -n "`which smbpasswd 2> /dev/null`" ] && [ -n "${LIVE_USERNAME}" ] && [ -n "${LIVE_PASSWORD}" ]; then
/bin/echo ""
/bin/echo "Change smb password :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
smbpasswd -a ${LIVE_USERNAME} -n
/bin/echo -e "${LIVE_PASSWORD}\n${LIVE_PASSWORD}" | smbpasswd ${LIVE_USERNAME}
fi
# === Change sshd configure ===============================================
if [ -f /etc/ssh/sshd_config ]; then
/bin/echo ""
/bin/echo "Change sshd configure :::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
sed -i /etc/ssh/sshd_config \
-e 's/^#*[ \t]*\(PasswordAuthentication\)[ \t]*.*$/\1 yes/g'
fi
# --- Creating state file -------------------------------------------------
/bin/echo "Creating state file :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
touch /var/lib/live/config/user-setting
}
Debug ()
{
# === Display of parameters ===============================================
/bin/echo ""
/bin/echo "Display of parameters :::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
/bin/echo "LIVE_USER_FULLNAME =${LIVE_USER_FULLNAME}"
/bin/echo "LIVE_USERNAME =${LIVE_USERNAME}"
/bin/echo "LIVE_PASSWORD =${LIVE_PASSWORD}"
/bin/echo "LIVE_CRYPTPWD =${LIVE_CRYPTPWD}"
/bin/echo "LIVE_LOCALES =${LIVE_LOCALES}"
/bin/echo "LIVE_KEYBOARD_MODEL =${LIVE_KEYBOARD_MODEL}"
/bin/echo "LIVE_KEYBOARD_LAYOUTS =${LIVE_KEYBOARD_LAYOUTS}"
/bin/echo "LIVE_KEYBOARD_VARIANTS=${LIVE_KEYBOARD_VARIANTS}"
/bin/echo "LIVE_TIMEZONE =${LIVE_TIMEZONE}"
/bin/echo "LIVE_UTC =${LIVE_UTC}"
}
Cmdline
Init
Config
#Debug
/bin/echo ""
/bin/echo "End 9999-user-setting :::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
_EOT_SH_
chmod +x /lib/live/config/9999-user-setting
# -----------------------------------------------------------------------------
set | grep -e "^LIVE_" | tee
# === Creating state file =====================================================
touch /var/lib/live/config/config-conf
# =============================================================================
#set +e
# === Memo ====================================================================
# /lib/live/init-config.sh
# /lib/live/config/0020-hostname
# /lib/live/config/0030-live-debconfig_passwd
# /lib/live/config/0030-user-setup
# /lib/live/config/1160-openssh-server
# *****************************************************************************
【デバッグ出力時のsyslog】
sudo grep live-config /var/log/syslog
master@debian-live:~$ sudo grep live-config /var/log/syslog
May 15 12:21:05 localhost systemd[1]: Starting live-config contains the components that configure a live system during the boot process (late userspace)....
May 15 12:21:05 localhost live-config[603]: set +o errexit
May 15 12:21:05 localhost live-config[603]: set +o noglob
May 15 12:21:05 localhost live-config[603]: set +o ignoreeof
May 15 12:21:05 localhost live-config[603]: set +o interactive
May 15 12:21:05 localhost live-config[603]: set +o monitor
May 15 12:21:05 localhost live-config[603]: set +o noexec
May 15 12:21:05 localhost live-config[603]: set +o stdin
May 15 12:21:05 localhost live-config[603]: set +o xtrace
May 15 12:21:05 localhost live-config[603]: set +o verbose
May 15 12:21:05 localhost live-config[603]: set +o vi
May 15 12:21:05 localhost live-config[603]: set +o emacs
May 15 12:21:05 localhost live-config[603]: set +o noclobber
May 15 12:21:05 localhost live-config[603]: set -o allexport
May 15 12:21:05 localhost live-config[603]: set +o notify
May 15 12:21:05 localhost live-config[603]: set +o nounset
May 15 12:21:05 localhost live-config[603]: set +o privileged
May 15 12:21:05 localhost live-config[603]: set +o nolog
May 15 12:21:05 localhost live-config[603]: set +o debug
May 15 12:21:05 localhost live-config[607]: LIVE_HOSTNAME='debian-live'
May 15 12:21:05 localhost live-config[607]: LIVE_KEYBOARD_LAYOUTS='jp'
May 15 12:21:05 localhost live-config[607]: LIVE_KEYBOARD_MODEL='pc105'
May 15 12:21:05 localhost live-config[607]: LIVE_KEYBOARD_VARIANTS='OADG109A'
May 15 12:21:05 localhost live-config[607]: LIVE_LOCALES='ja_JP.UTF-8'
May 15 12:21:05 localhost live-config[607]: LIVE_PASSWORD='master'
May 15 12:21:05 localhost live-config[607]: LIVE_TIMEZONE='Asia/Tokyo'
May 15 12:21:05 localhost live-config[607]: LIVE_USERNAME='master'
May 15 12:21:05 localhost live-config[607]: LIVE_USER_DEFAULT_GROUPS='audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth debian-tor'
May 15 12:21:05 localhost live-config[607]: LIVE_USER_FULLNAME='Master'
May 15 12:21:05 localhost live-config[607]: LIVE_UTC='yes'
May 15 12:21:05 localhost live-config[618]: LIVE_HOSTNAME='debian-live'
May 15 12:21:05 localhost live-config[618]: LIVE_KEYBOARD_LAYOUTS='jp'
May 15 12:21:05 localhost live-config[618]: LIVE_KEYBOARD_MODEL='pc105'
May 15 12:21:05 localhost live-config[618]: LIVE_KEYBOARD_VARIANTS='OADG109A'
May 15 12:21:05 localhost live-config[618]: LIVE_LOCALES='ja_JP.UTF-8'
May 15 12:21:05 localhost live-config[618]: LIVE_PASSWORD='master'
May 15 12:21:05 localhost live-config[618]: LIVE_TIMEZONE='Asia/Tokyo'
May 15 12:21:05 localhost live-config[618]: LIVE_USERNAME='master'
May 15 12:21:05 localhost live-config[618]: LIVE_USER_DEFAULT_GROUPS='audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth debian-tor'
May 15 12:21:05 localhost live-config[618]: LIVE_USER_FULLNAME='Master'
May 15 12:21:05 localhost live-config[618]: LIVE_UTC='yes'
May 15 12:21:05 localhost live-config[643]: live-config: debconf hostname user-setup sudo locales tzdata
May 15 12:21:05 localhost live-config[643]: Current default time zone: 'Asia/Tokyo'
May 15 12:21:05 localhost live-config[643]: Local time is now: Sun May 15 12:21:03 JST 2022.
May 15 12:21:05 localhost live-config[643]: Universal Time is now: Sun May 15 03:21:03 UTC 2022.
May 15 12:21:05 localhost live-config[643]: lightdm keyboard-configuration policykit ssl-cert anacron util-linux login xserver-xorg xscreensaver
May 15 12:21:05 localhost live-config[643]: Start 9999-user-setting :::::::::::::::::::::::::::::::::::::::::::::::::::::::
May 15 12:21:05 localhost live-config[643]: Change user password ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
May 15 12:21:05 localhost live-config[643]: New password: Retype new password: passwd: password updated successfully
May 15 12:21:05 localhost live-config[643]: Creating state file :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
May 15 12:21:05 localhost live-config[643]: End 9999-user-setting :::::::::::::::::::::::::::::::::::::::::::::::::::::::::
May 15 12:21:05 localhost live-config[643]: .
May 15 12:21:05 localhost systemd[1]: Finished live-config contains the components that configure a live system during the boot process (late userspace)..
master@debian-live:~$
【後書き】
echoがシェル内の物が使われて以下のコマンドで"-e"も出力され原因が分かるまでかなりの時間を浪費した。/bin/echoに変更し解決。
echo -e "${LIVE_PASSWORD}\n${LIVE_PASSWORD}" | passwd ${LIVE_USERNAME}
【自動作成シェル】
dist_remaster.shをlive-custom.shにリネームしsudo ./live-custom.shで実行するとカスタマイズしたISOファイルを作成する。
1600行付近の”if [ 1 -eq 1 ]; then”を”0 -eq 1”とかにするとfilesystem.squashfsを変更せずにISOファイルを作成。
【参考】
・Qiita:Debian/Ubuntu/CentOS/Fedora/OpenSUSEの無人インストール用とKnoppix日本語化用のメディア作成シェルの紹介
・github.com:office-itou/Linux/installer/