Debian Live DVDのカスタマイズ

# **【前書き】**  
DVDメディアのliveディレクトリーにconfig.confを置く事で以下のパラメータを変更する。  
ユーザーパスワード/sshdアクセス制限はシステム固定になっているのでユーザーシェルを用意しこれを変更する。  
smbパスワードも変更する。  
  
```bash: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](https://manpages.debian.org/bullseye/live-config-doc/live-config.7.ja.html)より
    
# **【デバッグ出力時のconfig.conf】**  
```bash:/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】**  
```bash: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に変更し解決。
```bash:
echo -e "${LIVE_PASSWORD}\n${LIVE_PASSWORD}" | passwd ${LIVE_USERNAME}
```
  
# **【自動作成シェル】**  
[dist_remaster.sh](https://github.com/office-itou/Linux/blob/master/installer/source/dist_remaster.sh)をlive-custom.shにリネームしsudo ./live-custom.shで実行するとカスタマイズしたISOファイルを作成する。
1600行付近の”if [ 1 -eq 1 ]; then”を”0 -eq 1”とかにするとfilesystem.squashfsを変更せずにISOファイルを作成。
![live-custom.sh.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113490/1b7907bc-cc75-ac7a-7a4e-911ce986a23e.jpeg)
  
# **【参考】**  
・[Qiita：Debian/Ubuntu/CentOS/Fedora/OpenSUSEの無人インストール用とKnoppix日本語化用のメディア作成シェルの紹介](https://qiita.com/office-itou/items/ba7d5e3895a47d0269c9)  
・[github.com：office-itou/Linux/installer/](https://github.com/office-itou/Linux/tree/master/installer)