Persistence機能を持った Xubuntu Live USBメモリの作成

# 目的
　設定の変更やアプリをインストールすることができるXubuntu（本家Ubuntuや他のフレーバーでも可）のLive USBメモリを作成する。
　本体のHDD(SSD)にインストールすることなく、Xubuntuを体験することができる。

# 準備するもの
- Windows PC
- Rufus
　今回は、その時点での最新版 rufus-4.0.exe をダウンロード。

https://rufus.ie/ja/

- UbuntuのISOファイル
　今回は、xubuntu-23.04-minimal-amd64.iso をダウンロードし使用した。
　私にとって不必要なアプリ（firefox、LibreOffice、ゲーム等）がインストールされていないので、xubuntu-minimal を選択した。

https://xubuntu.org/

- USBメモリ（16GB以上）
# USBメモリへISOファイルの書き込み
1. ダウンロードした rufus-4.0.exe をダブルクリックして実行。（インストールは必要ない）
![rufus.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849635/236d277f-fc31-3fd9-1c1b-074ce8c35d8e.png)
1. 「デバイス」で、USBメモリを選択。
1. 「ブートの種類」で、ISOファイルを選択。
1. 「保存領域のサイズ」のスライダーを右端まで移動。
　これにより、ext3でフォーマットされたcasper-rwという名前のパーティションが作成され、ここに変更が保存される。
1. 「スタート」をクリック。
1. 終わったら「閉じる」をクリック。

　起動後のメニュー等を日本語化する場合は、USBメモリは取り出さずに、次の手順に進む。
# 起動後のメニュー等の日本語化
　Rufusは、`boot/grub/grub.cfg`の
```conf
	linux	/casper/vmlinuz file=/cdrom/preseed/xubuntu.seed maybe-ubiquity quiet splash --- 
```
を
```conf
	linux	/casper/vmlinuz persistent file=/cdrom/preseed/xubuntu.seed  quiet splash --- 
```
のように書き換えてくれる。
　これにより、Welcome画面を出さずにデスクトップの表示まで進むことができる。
　しかし、メニューは英語になるので、`boot/grub/grub.cfg`をテキストエディターで開き、`linux`で始まる行の末尾に、`debian-installer/language=ja debian-installer/locale=ja_JP.UTF-8 keyboard-configuration/layoutcode?=jp keyboard-configuration/modelcode?=pc105`を追加する。
```diff_conf:grub.cfgの変更箇所
-set timeout=30
+set timeout=10

loadfont unicode

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

-menuentry "Try or Install Xubuntu" {
+menuentry "Xubuntu" {
	set gfxpayload=keep
-	linux	/casper/vmlinuz persistent file=/cdrom/preseed/xubuntu.seed  quiet splash --- 
+	linux	/casper/vmlinuz persistent file=/cdrom/preseed/xubuntu.seed  quiet splash --- debian-installer/language=ja debian-installer/locale=ja_JP.UTF-8 keyboard-configuration/layoutcode?=jp keyboard-configuration/modelcode?=pc105
	initrd	/casper/initrd
}
```
　残りの`linux`で始まる行の末尾にも追加したら、上書き保存する。
# Xubuntu Live USBメモリ起動後の設定
## ネットワークへ接続
- 右上のネットワークアイコンから
## timezone の設定
- Ctrl+V でターミナルを起動し、次のコマンドで`timezone`を変更する。
```bash
sudo timedatectl set-timezone Asia/Tokyo
```
## 時間をローカルタイムにする
- 同じコンピュータでWindowsとUbuntuを使うと、Windowsの時間がずれるので、次のコマンドでローカルタイムにする。
```bash
sudo timedatectl set-local-rtc true
```
## 時刻合わせのサーバを NICT へ変更
- nanoで、`/etc/systemd/timesyncd.conf`を編集する。
```bash
sudo nano /etc/systemd/timesyncd.conf
```
```diff_conf:timesyncd.confの変更箇所
[Time]
-#NTP=
+NTP=ntp.nict.jp
```
- 変更できたら、Ctrl+O でファイル名を確認し、Enter で保存
- Ctrl+X でnanoを終了
## パッケージ一覧の更新とパッケージの更新
```bash
sudo apt update && sudo apt upgrade -y
```
## Enterキーを押さなくてもshutdownするようにする
- grubメニューで e を押し、`quiet splash`を削除して、Ctrl+X で起動すると、起動時と終了時にログを表示させることができる。
- 終了時に表示されるログを確認すると、"Please remove the installation medium, then press ENTER: "と表示され、終了処理がストップしていることがわかる。
- そこで、Enterキーを押さなくてもshutdownするように、nanoで、`/sbin/casper-stop`を編集する。
```bash
sudo nano  /sbin/casper-stop
```
- `/sbin/casper-stop`の下の方の、次の場所に、`return 0`を追加する。
```diff_shell:casper-stopの変更箇所
    eject -p -m $device >/dev/null 2>&1

    [ "$prompt" ] || return 0

+    return 0

    if [ -x /bin/plymouth ] && plymouth --ping; then
        plymouth watch-keystroke > /dev/null
    else
        read x < /dev/console
    fi
}

do_stop
```
## ジャーナルログを止める
- ジャーナルログの書き込みでshutdownまで時間がかかるので、nanoで、`/etc/systemd/journald.conf`を編集する。
```bash
sudo nano /etc/systemd/journald.conf
```
```diff_conf:journald.confの変更箇所
[Journal]
-#Storage=auto
+Storage=none
```
- 変更を反映させる。
```bash
sudo systemctl restart systemd-journald
```
# ユーザーの変更
- 現在のユーザーxubuntuに、パスワードが設定できないので、セキュリティー上、ユーザーを変更する。
## 新しいユーザーの追加
```bash
sudo adduser <new-username>
```
## 新しいユーザーをsudoグループに所属させる
```bash
sudo usermod -aG sudo <new-username>
```
## ログアウトし、新しいユーザーでログインする
## デフォルトユーザーxubuntuを削除する
- デフォルトユーザーxubuntuが実行しているプロセスを止める
```bash
sudo -u xubuntu kill -9 -1
```
- デフォルトユーザーxubuntuを削除する
```bash
sudo userdel xubuntu
```
- デフォルトユーザーxubuntuのホームフォルダを削除する
```bash
sudo rm -rf /home/xubuntu
```
# 自動ログインの設定変更
- nanoで、`/etc/lightdm/lightdm.conf`を編集する。
```bash
sudo nano /etc/lightdm/lightdm.conf
```
```diff_conf:lightdm.confの変更箇所
[SeatDefaults]
allow-guest=false
autologin-guest=false
-autologin-user=xubuntu
+autologin-user=
autologin-user-timeout=0
```
# rootのパスワードの設定
- ubuntuでは、デフォルトでrootにパスワードが設定されていなので、
```bash
sudo passwd root
```
- パスワードが設定されていないと、rootは使用不可らしいが、念のために。

# フォルダ名を英語にする
- 次のコマンドを実行
```bash
LANG=C xdg-user-dirs-gtk-update
```
- "Don't ask me this again" にチェックを入れて、[Update Names] をクリック
![UpdateNames.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849635/b7a127e5-f101-1938-2939-59d32855f53e.png)
- ログアウトし、ログインする
- "次回から表示しない" にチェックを入れて、[古い名前のままにする] をクリック
![KeepOldNames.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1849635/0b6aa0a4-cb18-a282-c53c-e54b1cd6e114.png)
# 日本語入力できるようにする
- `fcitx5-mozc`が、良いようなので、`fcitx5-mozc`をインストール
```bash
sudo apt install fcitx5-mozc
```
- ログアウトし、ログインすると日本語入力できるようになる。
# Google Chrome のインストール
- xubuntu-minimal には、ブラウザがインストールされていないので、次のコマンドで、Chrome の deb ファイルをダウンロード
```bash
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
```
- 次のコマンドで、インストール
```bash
sudo dpkg -i google-chrome-stable_current_amd64.deb
```
# 今回は、ここまで
- 「ここはおかしい。」「ここはこうすれば良い。」というアドバイスお待ちしています。