Ubuntuは2年おきにLTS(Long Term Support)版がリリースされます。 わたしは最新版のLTS版がリリースされてから十分な期間を経て、LTS版を導入しています。たとえば、現在Ubuntu 22.04が最新版であり、まもなく24.04がリリースされるタイミングです。ですので今回のシステム入れ替えは20.04から22.04へのアップグレードとなります。
さて、ネット上には「〇〇をインストールしたらやること10か条」というような記事が多くあります。 それらはだいたい同じことが書いてある傾向があり、それをすべて手作業でおこなっています。
一方でAnsibleのような「大規模なインフラストラクチャの管理」に使われるツールがありますが、1台のPCのためにそれを使うのはオーバーキルです。
そこで簡単なBashScriptを書いて、それを実行するだけでシステムを再インストールできるようにしています。 随分昔からこの方法を使っていますが、大きな障害もなく使えています。
スクリプトは以下の3つに分かれています。
ins.sh
: インストール時に必須のパッケージをダウンロードしたり、他のスクリプトを実行します。apt_install_list.sh
: aptでインストールするパッケージのリストです。copy_dot_files.sh
: ホームディレクトリにコピーするドットファイルのリストです。
::note:: これらスクリプトの中にはシステム固有の情報がハードコーティングされているため、ここでは公開できる部分に絞って掲載します。
コメントに説明が書いてありますので、それぞれ参照いただくとして、説明が必要な部分を解説します。
Lines 1 to 169 in dcbf24f
#!/usr/bin/env bash | |
sudo su & | |
# ---------------------------------------------- | |
# 最初にインストールしたばかりのシステムをアップデートする必要がある | |
# ---------------------------------------------- | |
apt update && apt upgrade -y | |
# ---------------------------------------------- | |
# 必要なライブラリをインストールする | |
# ---------------------------------------------- | |
apt install -y apt-transport-https | |
apt install -y ca-certificates | |
apt install -y curl | |
apt install -y ufw | |
apt install -y zenity | |
apt install -y fcitx | |
apt install -y tee | |
# ---------------------------------------------- | |
# ufw 有効化 | |
# ---------------------------------------------- | |
ufw enable | |
# ---------------------------------------------- | |
# 作業環境の設定 | |
# ---------------------------------------------- | |
# 監視: dconf watch / | |
# 出力: dconf dump / | |
# 出力: gsettings list-recursively | |
# デスクトップウィンドウマネージャの設定を変更 | |
gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true | |
# タッチパッドの設定を変更 | |
gsettings set org.gnome.desktop.peripherals.touchpad disable-while-typing false | |
# インターフェースの設定を変更 | |
gsettings set org.gnome.desktop.interface clock-show-weekday true | |
# Nautilusのアイコンビューのキャプションを設定 | |
gsettings set org.gnome.nautilus.icon-view captions "['size', 'date_accessed', 'none']" | |
# Nautilusのデフォルトの並び順を設定 | |
gsettings set org.gnome.nautilus.preferences default-sort-order 'mtime' | |
# GTKテーマを設定 | |
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-dark' | |
# Dash to Dockのアイコン最大サイズを設定 | |
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 32 | |
# Dash to Dockのマウント表示設定を変更 | |
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false | |
# Dash to Dockのごみ箱表示設定を変更 | |
gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false | |
# デスクトップのアイドル遅延時間を設定(0は無効) | |
gsettings set org.gnome.desktop.session idle-delay uint32 0 | |
# スクリーンセーバーのロックを無効にする | |
gsettings set org.gnome.desktop.screensaver lock-enabled false | |
# 通知設定を変更 | |
gsettings set org.gnome.desktop.notifications.application.gnome-printers-panel application-id 'gnome-printers-panel.desktop' | |
# 通知アプリケーションの子リストを設定 | |
gsettings set org.gnome.desktop.notifications application-children "['gnome-network-panel', 'apport-gtk', 'org-gnome-nautilus', 'snap-store-ubuntu-software', 'gnome-printers-panel']" | |
# デスクトップのお気に入りやランチャーに表示されるアプリケーションのリストを設定 | |
gsettings set org.gnome.shell favorite-apps "['firefox_firefox.desktop', 'google-chrome.desktop', 'thunderbird.desktop', 'org.gnome.Nautilus.desktop', 'snap-store_ubuntu-software.desktop', 'yelp.desktop', 'PCSX2.desktop', '8TB_mount.desktop', 'rpcs3-emu_rpcs3.desktop', 'nmcli_n_on.desktop', 'nmcli_n_off.desktop', 'gnome-system-monitor.desktop']" | |
# ボリュームダウンのショートカットキーを設定 | |
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-down "['<Alt>9']" | |
# ボリュームアップのショートカットキーを設定 | |
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-up "['<Alt>0']" | |
# フルスクリーン切り替えのキーバインディングを設定 | |
gsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen "['F11']" | |
# ---------------------------------------------- | |
# DNS変更 | |
# ---------------------------------------------- | |
nmcli c m 有線接続\ 1 ipv4.dns x.x.x.x # DNSサーバーのアドレスは任意に変更して下さい | |
systemctl restart NetworkManager | |
# ---------------------------------------------- | |
# バックアップハードディスクのマウント | |
# ---------------------------------------------- | |
mkdir /media/user/xxxx # マウントポイントxxxxは任意に変更して下さい | |
mount /dev/disk/by-label/xxxx /media/user/xxxx | |
# ----------------------------------- | |
# 必要なファイルをコピー | |
# ----------------------------------- | |
cd /media/user/BACKUP_HDD/homeフォルダバックアップ/XXXXX # XXXXXは任意に変更して下さい | |
cp -afv ./apt_install_list.sh /home/user/ | |
cp -afv ./copy_dot_files.sh /home/user/ | |
cp -afv ./notice.wav /home/user/ | |
# ----------------------------------- | |
# apt_install_list.sh実行 | |
# ----------------------------------- | |
# repository追加 | |
add-apt-repository universe | |
add-apt-repository multiverse | |
add-apt-repository restricted | |
# http://jp.archive.ubuntu.com/ubuntu/リポジトリにpartnerはない | |
add-apt-repository "deb http://archive.canonical.com/ubuntu $(lsb_release -sc) partner" # partner | |
apt update && apt upgrade -y | |
# apt_install_list.sh実行 | |
chmod +x apt_install_list.sh | |
bash -c /home/user/apt_install_list.sh | tee apt_install.log | |
# ----------------------------------- | |
# CUDA & Others | |
# ----------------------------------- | |
# ./apt_install_list.shに記載 | |
# ----------------------------------- | |
# make do copy_dot_files.sh | |
# ----------------------------------- | |
chmod +x /home/user/copy_dot_files.sh | |
bash -c /home/user/copy_dot_files.sh | |
chown -R user:user /home/user/* | |
# ---------------------------------------------- | |
# remove files | |
# ---------------------------------------------- | |
rm apt_install_list.sh | |
rm copy_dot_files.sh | |
# ----------------------------------- | |
# ufw for kdeconnect | |
# ----------------------------------- | |
ufw allow in on enp6s0 log proto tcp from PRIVATE_ADDRESS to PRIVATE_ADDRESS port 1714:1716 | |
ufw allow in on enp6s0 log proto udp from PRIVATE_ADDRESS to PRIVATE_ADDRESS port 1714:1716 | |
# ----------------------------------- | |
# ufw for GitHub | |
# ----------------------------------- | |
ufw allow from ADDRESS to any port PORT_NUMBER | |
# ----------------------------------- | |
# bashrc file, Add postscript | |
# ----------------------------------- | |
cat postscript_bashrc.txt >> /home/user/.bashrc | |
# ---------------------------------------------- | |
# User add | |
# ---------------------------------------------- | |
# 現行ユーザをdockerグループに所属させる | |
gpasswd -a user docker | |
# 一部コマンドをパスワード無しで実行する | |
touch /etc/sudoers.d/user | |
chmod 0440 /etc/sudoers.d/user | |
cat <<EOF >> /etc/sudoers.d/user | |
user ALL=(ALL) NOPASSWD:APPLICATION_PATH | |
EOF | |
# ---------------------------------------------- | |
# end of installation | |
# ---------------------------------------------- | |
apt autoremove -y |
Lines 29 to 68 in 542f9ce
# ---------------------------------------------- | |
# 作業環境の設定 | |
# ---------------------------------------------- | |
# 監視: dconf watch / | |
# 出力: dconf dump / | |
# 出力: gsettings list-recursively | |
# デスクトップウィンドウマネージャの設定を変更 | |
gsettings set org.gnome.desktop.wm.preferences resize-with-right-button true | |
# タッチパッドの設定を変更 | |
gsettings set org.gnome.desktop.peripherals.touchpad disable-while-typing false | |
# インターフェースの設定を変更 | |
gsettings set org.gnome.desktop.interface clock-show-weekday true | |
# Nautilusのアイコンビューのキャプションを設定 | |
gsettings set org.gnome.nautilus.icon-view captions "['size', 'date_accessed', 'none']" | |
# Nautilusのデフォルトの並び順を設定 | |
gsettings set org.gnome.nautilus.preferences default-sort-order 'mtime' | |
# GTKテーマを設定 | |
gsettings set org.gnome.desktop.interface gtk-theme 'Yaru-dark' | |
# Dash to Dockのアイコン最大サイズを設定 | |
gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 32 | |
# Dash to Dockのマウント表示設定を変更 | |
gsettings set org.gnome.shell.extensions.dash-to-dock show-mounts false | |
# Dash to Dockのごみ箱表示設定を変更 | |
gsettings set org.gnome.shell.extensions.dash-to-dock show-trash false | |
# デスクトップのアイドル遅延時間を設定(0は無効) | |
gsettings set org.gnome.desktop.session idle-delay uint32 0 | |
# スクリーンセーバーのロックを無効にする | |
gsettings set org.gnome.desktop.screensaver lock-enabled false | |
# 通知設定を変更 | |
gsettings set org.gnome.desktop.notifications.application.gnome-printers-panel application-id 'gnome-printers-panel.desktop' | |
# 通知アプリケーションの子リストを設定 | |
gsettings set org.gnome.desktop.notifications application-children "['gnome-network-panel', 'apport-gtk', 'org-gnome-nautilus', 'snap-store-ubuntu-software', 'gnome-printers-panel']" | |
# デスクトップのお気に入りやランチャーに表示されるアプリケーションのリストを設定 | |
gsettings set org.gnome.shell favorite-apps "['firefox_firefox.desktop', 'google-chrome.desktop', 'thunderbird.desktop', 'org.gnome.Nautilus.desktop', 'snap-store_ubuntu-software.desktop', 'yelp.desktop', 'PCSX2.desktop', '8TB_mount.desktop', 'rpcs3-emu_rpcs3.desktop', 'nmcli_n_on.desktop', 'nmcli_n_off.desktop', 'gnome-system-monitor.desktop']" | |
# ボリュームダウンのショートカットキーを設定 | |
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-down "['<Alt>9']" | |
# ボリュームアップのショートカットキーを設定 | |
gsettings set org.gnome.settings-daemon.plugins.media-keys volume-up "['<Alt>0']" | |
# フルスクリーン切り替えのキーバインディングを設定 | |
gsettings set org.gnome.desktop.wm.keybindings toggle-fullscreen "['F11']" |
この部分ではユーザー体験に直接関わる設定をおこなっています。
gsettings
コマンドを使用することにより、使い慣れたUIやキーバインド、各種設定を再現します。
これらをご自身の環境で再現する場合、dconf watch /
コマンドを使い、設定を変更したときに出力されるコマンドを参考にすると良いでしょう。
reinstall_system/apt_install_list.sh
Lines 1 to 124 in 542f9ce
#!/usr/bin/env bash | |
apt update && apt upgrade -y | |
# # ---------------------------------------------- | |
# # 最小構成 | |
# # ---------------------------------------------- | |
apt install -y coreutils | |
apt install -y vlc | |
apt install -y mcomix | |
apt install -y sox | |
apt install -y fcitx | |
apt install -y fcitx-config-gtk | |
apt install -y fcitx-mozc | |
apt install -y fcitx-table-emoji | |
apt install -y fcitx-tools | |
# # ----------------------------------- | |
# # FACE01用 | |
# # ----------------------------------- | |
apt update && apt upgrade -y | |
apt install -y build-essential | |
apt install -y cmake | |
apt install -y curl | |
apt install -y ffmpeg | |
apt install -y git | |
apt install -y libavcodec-dev | |
apt install -y libavformat-dev | |
apt install -y libboost-all-dev | |
apt install -y libbz2-dev | |
apt install -y libffi-dev | |
apt install -y liblzma-dev | |
apt install -y libncurses5-dev | |
apt install -y libreadline-dev | |
apt install -y libsqlite3-dev | |
apt install -y libssl-dev | |
apt install -y libswscale-dev | |
apt install -y libxml2-dev | |
apt install -y libxmlsec1-dev | |
apt install -y pybind11-dev | |
apt install -y python3-dev | |
apt install -y python3-tk | |
apt install -y python3-venv | |
apt install -y synaptic | |
apt install -y tk-dev | |
apt install -y wget | |
apt install -y webp | |
# # ---------------------------------------------- | |
# # Nvidia ドライバーとCUDAライブラリのインストール | |
# # ---------------------------------------------- | |
cd /home/user || exit | |
apt install -y cuda-drivers | |
# 22.04の場合(ネットワークインストール) | |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb | |
dpkg -i cuda-keyring_1.1-1_all.deb | |
apt update | |
apt -y install cuda-toolkit-12-3 | |
# その他ライブラリのインストール | |
apt install -y libcudnn8 | |
apt install -y libcudnn8-dev | |
apt install -y libcublas | |
apt install -y libcublas-dev | |
# # ----------------------------------- | |
# # VSCode | |
# # ----------------------------------- | |
if [[ ! -e /home/user/microsoft.gpg ]]; then | |
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg | |
fi | |
install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ | |
bash -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' | |
apt update | |
apt install -y code | |
# # ---------------------------------------------- | |
# # ポストインストール | |
# # ---------------------------------------------- | |
apt install -y baobab | |
apt install -y catfish | |
apt install -y cheese | |
apt install -y dconf-editor | |
apt install -y fdupes | |
apt install -y ffmpegthumbnailer | |
apt install -y font-manager | |
apt install -y gimp | |
apt install -y gnome-system-tools | |
apt install -y gnome-tweaks | |
apt install -y gnupg-agent | |
apt install -y gparted | |
apt install -y grsync | |
apt install -y gufw | |
apt install -y gthumb | |
apt install -y handbrake | |
apt install -y inkscape | |
apt install -y inxi | |
apt install -y libreoffice-calc | |
apt install -y manpages-ja | |
apt install -y meld | |
apt install -y mplayer | |
apt install -y ncdu | |
apt install -y pm-utils | |
apt install -y printer-driver-gutenprint | |
apt install -y pwgen | |
apt install -y rdfind | |
apt install -y simple-scan | |
apt install -y simplescreenrecorder | |
apt install -y thunderbird-gnome-support | |
apt install -y translate-shell | |
apt install -y transmission-gtk | |
apt install -y tree | |
apt install -y tumbler-plugins-extra | |
apt install -y usb-creator-gtk | |
apt install -y xsane | |
apt install -y xsel |
こちらも説明が必要な部分のみ解説します。
reinstall_system/apt_install_list.sh
Lines 55 to 70 in 542f9ce
# # ---------------------------------------------- | |
# # Nvidia ドライバーとCUDAライブラリのインストール | |
# # ---------------------------------------------- | |
cd /home/user || exit | |
apt install -y cuda-drivers | |
# 22.04の場合(ネットワークインストール) | |
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb | |
dpkg -i cuda-keyring_1.1-1_all.deb | |
apt update | |
apt -y install cuda-toolkit-12-3 | |
# その他ライブラリのインストール | |
apt install -y libcudnn8 | |
apt install -y libcudnn8-dev | |
apt install -y libcublas | |
apt install -y libcublas-dev |
この部分のみ、Ubuntuのバージョンによってインストールするパッケージが異なります。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
このURLは以下のページから取得してください。 CUDA Toolkit 12.3 Update 1 Downloads
reinstall_system/apt_install_list.sh
Lines 73 to 82 in 542f9ce
# # ----------------------------------- | |
# # VSCode | |
# # ----------------------------------- | |
if [[ ! -e /home/user/microsoft.gpg ]]; then | |
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg | |
fi | |
install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/ | |
bash -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list' | |
apt update | |
apt install -y code |
ここではマイクロソフトのリポジトリから取得していますが、snapでもインストールできます。その場合は以下のようになります。ただし以前snapバージョンでは日本語の取り回しに難があったため、わたしはdebパッケージを使用しています。
sudo snap install code
Flatpakでインストールするには以下の手順に沿います。
sudo apt install flatpak
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.visualstudio.code
reinstall_system/copy_dot_files.sh
Lines 1 to 35 in 81c66c1
#!/usr/bin/env bash | |
# Home Directory | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/bin/ /home/user/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/テンプレート/ /home/user/ | |
# Home Directory Dot Files & Dot Directory | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.bash_history /home/user/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.cspell/custom-dictionary-user.txt /home/user/ # cSpell.customDictionaries | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.gitconfig /home/user/ # Git init file. | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.grsync/ /home/user/ # grsyncの過去ログフォルダ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.icons/ /home/user/ # Gnomeの場合`/home/user/.icons`, xfce4の場合'/home/user/.local/share/icons' | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.mozc /home/user/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.ssh/ /home/user/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.themes/ /home/user/ | |
# Specific Directory | |
mkdir -p /home/user/.local/state | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/state /home/user/.local/ # vscodeのmarkdown preview用のcssファイル | |
# `.local/share/` Directory | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/backgrounds/ /home/user/.local/share/ # WALLPAPERS | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/fonts/ /home/user/.local/share/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/icons/ /home/user/.local/share/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/keyrings/ /home/user/.local/share/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/nautilus/ /home/user/.local/share/ # for nautilus script folder. | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/themes/ /home/user/.local/share/ | |
# `.config` Directory | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.config/nautilus/ /home/user/.config/ # search-metadata, accels, etc. | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.config/systemd/ /home/user/.config/ | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.config/autostart/Flameshot.desktop /home/user/.config/autostart/ | |
# applications folder | |
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/applications/pm-suspend.desktop /home/user/.local/share/applications/; |
これも説明不要かと思いますが、一部解説します。
reinstall_system/copy_dot_files.sh
Line 23 in 81c66c1
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.local/share/fonts/ /home/user/.local/share/ |
大きな容量をとるフォント群は、ネットワークインストールするよりもローカルコピーした方が早いです。
/home/user/.fonts
と/home/user/.local/share/fonts
のどちらでも良いですが、より新しい規格は後者です。わたしは後者に統一しています。
reinstall_system/copy_dot_files.sh
Line 31 in 81c66c1
cp -afv /media/user/BACKUP_HDD/homeフォルダバックアップ/.config/systemd/ /home/user/.config/ |
ユーザーが管理するsystemd
ファイル群は/home/user/.config/systemd/user
ディレクトリ以下で管理しています。
これもコピーするだけで復活します。
以上で大方の説明は終わりです。 これで「〇〇をインストールしたらやること10か条」のような記事を見ながら手作業で設定する必要がなくなります。システム入れ替えは忘れた頃に必ずやってきますので、そのときにお役立てください。
以上です。ありがとうございました。