自分用・検証用 Ubuntu22.04.4LTS 作成手順メモ(2024/04/04 版)
以前に以下のメモを書きました。
- 自分用・検証用 Ubuntu22.04LTS Beta 作成手順メモ(2022/03/24 版)
- 自分用・検証用 Ubuntu22.04.1LTS 作成手順メモ(2022/08/30 版)
- 自分用・検証用 Ubuntu22.04.2LTS 作成手順メモ(2023/05/06 版)
- 自分用・検証用 Ubuntu22.04.2LTS 作成手順メモ(2023/06/05 版)
内容は過去メモとほぼ同じですが、以下が異なります。
- Ubuntu のバージョンを更新 (22.04.04LTS ベース)
初期セットアップスクリプト¶
仮想マシン作成後、このメモの 2 章に記載している「初回セットアップ」だけを実行したい場合は、下記を実行することでも実現出来ます (※ 但し、このスクリプトはバージョンアップされている為、「設定値」や「インストールされるソフトウェアのバージョン」などがメモ中に記載したものと異なる可能性があります)。
1 |
|
このメモの 2 章 及び 3 章の設定内容をまとめて実行するには下記を実行します。 但し、(このメモでは asdf をインストールしていませんが) このスクリプトでは「asdf を使ってパッケージ管理する」前提になっています。 asdf を利用したくない場合、このスクリプトは利用しないでください。
1 |
|
インストール用の ISO イメージ¶
Ubuntu の ISO イメージは IIJ が公開している Ubuntu 22.04.4 LTS (Jammy Jellyfish) から下記のバイナリをダウンロードして利用しました。
コンソールからインストーラへアクセスする¶
必要になる場合は少ないと思われますが、コンソールからインストーラへアクセスしたい場合は VM の Ubuntu でコンソールからインストーラへ接続する を参考にします。
仮想マシンのスペック¶
今回、作成する仮想マシンのスペックは以下としました。 デフォルトでは LVM が利用されますが、ストレージを 10GB 以上にすると /
にマウントされるのが (最大サイズでは無く) 10GB しか割り当てられないようです。 今回は /
に最大サイズを割り当てたい為、インストール中に調整します。
vCPU | メモリ | ストレージ | ネットワークカード |
---|---|---|---|
4 | 4GB | 50GB | 1 (VMXNET3) |
1.インストール¶
1-1.GNU GRUB version 2.06¶
Try or Install Ubuntu Server
を選択します。
1-2.Willkommen! Bienvenue! Welcome! Добро пожаловать! Welkom¶
言語を選択します。 English
を選択します。
1-3.Keyboard configuration¶
キーボードの設定を行います。 Layout と Variant はデフォルトのまま、English (US)
が選択された状態で Done
を選択します。
1-4.Choose type of install¶
インストール種別を選択します。 「必要なものは後で追加する」方針なので Ubuntu Server (minimized)
を選択しても良いのですが、これは基本的なパッケージもかなり不足してしまい、結局あれこれ追加することになってしまう為、今回は Ubuntu Server
のまま Done
を選択します。
1-5.Network connections¶
ネットワーク設定を行います。 環境に合わせて設定します。 今回は DHCP 設定を想定しているので、デフォルトのまま Done
を選択します。
1-6.Configure proxy¶
Proxy の設定を行います。 Proxy は利用しない想定なので空欄のまま、次へ進みます。
1-7.Configure Ubuntu archive mirror¶
ミラーの URL を指定します。 デフォルトの http://jp.archive.ubuntu.com/ubuntu
のまま Done
を選択します。
1-8.Guided storage configuration¶
ストレージ領域の設定を行います。 デフォルトで Use an entire disk
が選択されているので、このまま Done
を選択します。
以下のような画面が表示されます。 LVM の LV (Logical Volume) サイズを調整するので ubuntu-lv
を選択します。
Edit
を選択します。
LV の情報が表示されます。 仮想マシン自体のストレージサイズは 50GB で作成していますが、LV に割り当てられたサイズは半分の 23.996GB になっており、残りの半分である 24GB は未割り当て領域です。
LV のサイズを最大に変更します。 今回は 47.996GB にしました。 変更が完了したら Save
を選択します。
これで LV のサイズ変更は完了し、未割り当て領域は無くなりました。 Done
を選択します。
続行の確認を求められます。 Continue
を選択します。
1-9.Profile setup¶
追加するユーザのプロファイル情報を入力します。 スキップ出来ず、しかも全項目入力必須なようです。
今回は以下のように入力しました。 入力が完了したら Done
を選択します。
項目 | 値 |
---|---|
Your name | user |
Your server's name | localhost |
Pick a username | user |
Choose a password | password |
Confirm your password | (同上) |
1-10.Upgrade to Ubuntu Pro¶
Ubuntu Pro へアップグレードするか、確認されます。 デフォルトのまま Skip for now
が選択された状態で Continue
を選択します。
1-11.SSH Setup¶
OpenSSH サーバをインストールするか、選択を要求されます。
デフォルトでは「インストールしない」状態になっていますので、Install OpenSSH server
にチェックを入れ、Done
を選択します。
1-12.Featured Server Snaps¶
インストールするソフトウェアを選択します。 必要なものは後からインストールしますので、ここでは何もせず、デフォルトのまま Done
を選択します。
1-13.Installing system¶
インストールが開始されます。
インストールが完了したら Reboot Now
を選択します。
仮想マシンの状態としてはメディアが Disconnect 状態になりますが、ゲスト OS 側は以下の表示になり、再起動プロセスが止まってしまいます。 そのまま ENTER
を押すと再起動されます。
尚、インストール直後でストレージの使用状態は以下のようになっていました。
1 2 3 4 5 6 7 8 |
|
2.初期セットアップ¶
2-1.標準ユーザで SSH ログインする¶
追加パッケージをインストールしなくても open-vm-tools
がインストールされる為、DHCP サーバから IP アドレスを取得していれば ESXi / vCenter 上から IP アドレスを確認出来ます。
確認したアドレスに対して、インストーラで作成したユーザ (user
) で SSH ログインします。
1 2 3 4 5 6 |
|
以降の作業を実施する為に root
ユーザに昇格しておきます。
1 2 3 |
|
2-2.root のパスワードを設定する¶
root
ユーザのパスワードを変更しておきます。 パスワードは自身の環境に合わせて任意で設定します。
echo root:'PASSWORD' | /usr/sbin/chpasswd
パスワード変更後は root
ユーザを指定し、パスワード認証による SSH ログインが出来ることを確認しておきます。 以降の作業は (標準ユーザはログアウトし) root
ユーザで継続します。
2-3.root ユーザの公開鍵を登録する¶
root
ユーザへ鍵を使って SSH ログイン出来るよう、公開鍵を登録しておきます。 鍵の登録が終わったら、実際に鍵を使って (パスワードを入力せずに) SSH ログイン出来ることを確認します。
1 2 3 4 |
|
2-4.標準ユーザを削除する¶
一般的にはセキュリティの観点から推奨されませんが「検証環境なので全て root
で作業する」「標準ユーザは不要」と割り切れるのであれば、インストール中に作成した標準ユーザを削除します。
userdel -r user
2-5.タイムゾーンを Asia/Tokyo に設定する¶
タイムゾーンを Asia/Tokyo に設定しておきます。 設定が完了したら date
や timedatectl status
でタイムゾーンが Asia/Tokyo へ変更されたことを確認しておきます。
timedatectl set-timezone Asia/Tokyo
2-6.NTP の時刻同期先サーバを設定する¶
NTP サーバは time.cloudflare.com のご紹介 で言及されている CloudFlare の NTP サーバを設定します。
1 2 3 4 |
|
NTP サーバとの時刻同期状態は timedatectl timesync-status
で確認出来ます。
timedatectl timesync-status
2-7.sshd の設定変更 (自動切断の防止 / root ログインの許可)¶
sshd で自動切断されるのを防ぐ為、ClientAliveInterval や ClientAliveCountMax を設定します。 これらの値は以下の意味を持ちます。
項目 | 意味 | デフォルト値 |
---|---|---|
ClientAliveInterval | 指定した秒数ごとに応答確認を行う間隔 (※ 0 の場合は何もしない) | 0 |
ClientAliveCountMax | 応答確認を行う回数 | 3 |
これらの値をチューニングしつつ、root
ユーザでの SSH ログインを許可しておきます。 設定が完了したら sshd を再起動しておきます。
1 2 3 4 |
|
sshd の設定確認には sshd -T
を実行します。
sshd -T
2-8.SSH 接続時の警告時を表示しない¶
別のホストへ SSH 接続する際、警告が表示されないように設定しておきます。 また Unable to negotiate with 192.168.1.1 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
等のエラーを回避する為に、必要な鍵交換アルゴリズムを追加しておきます。
1 2 3 4 5 6 7 |
|
2-9.AppArmor を無効化する¶
AppArmor は RedHat 系で言うところの SELinux に近いセキュリティ機構です。 デフォルトでは有効化されている為、無効化しておきます。
1 2 |
|
2-10.プロンプト表示をカスタマイズする¶
RedHat / Ubuntu でシェルのプロンプト表示をカスタマイズする や macOS でプロンプトをカスタマイズする というメモを書きましたが、root
ユーザのプロンプト表示と今後、新規作成されるユーザ用の設定を実施しておきます。
1 2 3 4 5 6 7 8 9 |
|
1 2 3 4 5 6 7 8 9 |
|
2-11.Welcome メッセージを表示しない¶
Ubuntu 21.04 で Welcome メッセージを表示しない というメモを書きましたが、Ubuntu へ SSH ログインした際に表示される Welcome メッセージを表示されないように設定しておきます。
1 2 3 |
|
2-12.再起動確認を表示しない¶
Ubuntu 22.04 Server 以降はデフォルトで needrestat パッケージがインストールされるようです。 needrestart が有効な場合、ライブラリなどをアップデートした際に「デーモンの再起動をして良いか?」を確認メッセージが表示されるようになります。 検証環境ではこの確認は不要なので、無効にしてしまいます。
1 2 3 4 |
|
2-13.基本的なパッケージのインストール¶
基本的なパッケージをインストールしておきます。
1 2 3 4 5 6 7 8 9 10 11 |
|
2-14.NeoVim 用の設定¶
vi
または vim
と入力された場合も NeoVim が起動されるよう、alias を設定しておきます。
1 2 3 4 5 6 |
|
2-15.コンソールの有効化¶
検証上、必要であればコンソールを有効化します。 /etc/default/grub
を以下のように変更します。
変更前 (コメント除外版)¶
1 2 3 4 5 6 |
|
変更後¶
1 2 3 4 5 6 |
|
変更が完了したら update-grub
を実行して GRUB を更新しておきます。
update-grub
2-16.アドレス変更用スクリプトを配置する¶
固定アドレス化する手順を省力化する為、IP アドレスとゲートウェイ設定を変更するスクリプトを /usr/local/bin/chaddr
へ配置します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
2-17.uncmnt のインストール¶
コメントを除外することが出来るツールをインストールしておきます。 GitHub の sig9org/uncmnt からインストールしておきます。
1 2 |
|
2-18.システム全体のアップデートと OS 再起動¶
最後にシステム全体のアップデートを実行します。 カーネルの更新などがある場合を考慮し、アップデート後は OS を再起動します。
1 2 3 |
|
2-19.キャッシュ / コマンド実行履歴を削除して仮想マシンを停止する¶
apt
のキャッシュとコマンド実行履歴を削除しておきます。 ここまで完了したら仮想マシンを電源オフします。
1 2 3 4 |
|
2-20.VM から DVD メディアを取り出しておく¶
通常であればインストーラ終了時に光学ドライブからメディアは取り出されているはずですが、万一メディアが残っているようであればテンプレート化する前に取り出しておきます。
2-21.テンプレート化する¶
ここまで用意が出来たら仮想マシンをテンプレート化します。 以降、検証用の仮想マシンを作成したい場合はこのテンプレートから複製します。
3.追加パッケージのインストール¶
必要であればパッケージを追加します。 尚、asdf を利用する場合は下記のメモなどを参考にします。
3-1.direnv¶
Python の venv 環境を direnv で自動的に有効/無効化する というメモを書きましたが、Python で venv を利用しているのであれば direnv が便利です。
1 2 |
|
~/.bashrc
に direnv を起動する設定を追加しておきます。
1 2 3 4 5 |
|
3-2.pip と venv¶
Ubuntu 22.04.4LST には現時点で python
が無く、python3
として Python 3.10.12 がインストールされていました。
1 2 3 4 5 6 |
|
しかし、pip と venv が無い為、インストールしておきます。
apt -y install python3-pip python3.10-venv
3-3.docker¶
docker インストール後は「停止している」ものの「自動起動する」設定になっていました。 念の為、「起動」「自動起動」両方の設定を実施しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
3-4.docker compose¶
Docker Compose v2 をインストールするには以下を実行します。
1 2 3 |
|
3-5.docker purge¶
全コンテナを停止・削除する docker サブコマンド「docker purge」 や 全コンテナを停止・削除する「docker purge」アップデート (v0.0.2) というメモを書きました。 docker コンテナを一度に停止することが出来るので GitHub の sig9org/docker-purge からインストールしておきます。
1 2 3 4 5 |
|