前回、VirtualBox 7.0 で、ゲストOSに Ubuntu 22.04.4 LTS をインストールしました。
今回は、その続きで、設定と、ソフトウェアのインストールについて説明していきたいと思います。
それではやっていきます!
はじめに
前回の記事はこちらです。
daisuke20240310.hatenablog.com
エンジニアグループのランキングに参加中です。
気楽にポチッとよろしくお願いいたします🙇
VirtualBox 7.0 の設定
VirtualBox 7.0 の設定では、ネットワークと共有フォルダの設定を行います。

ネットワークの設定
まず、ネットワークの設定です。「ネットワーク」をクリックします。
現在は、NATだけが有効になっています。これは、Ubuntu からインターネットへのアクセスが行える状態です。
ホストOSのWindows10からUbuntuへのアクセスを簡単に行うため、ホストオンリーアダプタを有効にします。
「アダプター 2」をクリックして、「ネットワークアダプターを有効化」にチェックを入れて、「ホストオンリーアダプタ」を割り当てます。その後、「OK」をクリックします。

あとで、teratermからSSHで接続するときに使います。
下図のように、「ホストオンリーアダプタ」を有効にすると、ゲストOSの起動で失敗してしまう環境がありました(その環境では100%起動に失敗する)。エラーは、「Failed to open/create the internal network 'Hsost Interface Networking -VirtualBox Host- Host-Only Ethernet Adapter' (VERR_INTNET_FLT_IF_NOT_FOUND).」という内容でした。

Webで検索すると、解決策が見つかりました。ホストオンリーアダプタが、IPv6が有効になってると、この現象が発生するようです。無効にすると改善するそうです。

その後、「イーサネット」をクリックして、「アダプターのオプションを変更する」をクリックして、ホストオンリーアダプタになってるネットワークを右クリックして、プロパティを開き、IPv6のチェックを外す。

この方法で、私の環境も、問題は発生しなくなりました。助かりました。
共有フォルダの設定
次は、共有フォルダの設定をしていきます。「共有フォルダ」をクリックします。
右端のフォルダに+マークが付いたアイコンをクリックします。
「フォルダーのパス」には、Windows側の共有するフォルダを指定します。「フォルダ名」は、Ubuntu側から見たフォルダ名で、任意の名前を指定します。マウントポイントは、特に指定しなくても、「/media/sf_[フォルダ名]」でアクセスできます。
自動でマウントするために、「自動マウント」にチェックを入れておきます。

アクセス権の設定が必要です。ゲストOS(Ubuntu)で、次のようにアクセス権を設定します(xxxはユーザ名)。
$ sudo gpasswd -a xxx vboxsf
ゲストOS(Ubuntu)を再起動します。
試しに、「/media/sf_[フォルダ名]」にファイルを作成してみます。
$ touch /media/sf_[フォルダ名]/a $ ls /media/sf_[フォルダ名]
ファイルが作成されていれば成功です。
クリップボードの共有
VirtualBox側のメニューのデバイス→クリップボードの共有→双方向をクリックします。

これでホストOSとゲストOS間でクリップボードを共有できます。
キーボードの自動キャプチャーをオフ
ゲストOSをシャットダウンして、VirtualBoxのファイル→環境設定→入力をクリックして、キーボードの自動キャプチャーのチェックを外します。

このチェックが入ったままだと、Windowsで、Alt+TabでウィンドウをゲストOSのウィンドウに切り替えて、ゲストOS(Ubuntu)のウィンドウがアクティブになると、そのあとAlt+Tabを押すと、ゲストOS(Ubuntu)のウィンドウが切り替わってしまい、Windowsに戻れなくなってしまいます(次で説明するホストキーの組み合わせを押せばホストOSとゲストOSで制御を切り替えることができます)。なので、オフにしておきます。
ホストキーの組み合わせの変更
キーボードとマウスの制御を、ホストOSとゲストOSで切り替えるキーは、デフォルトは右のCtrlキーになっています。私のキーボードは、右のCtrlがないので、別のキー(右のShiftキー)を割り当てておきます。

仮想ハードディスクの容量を増やす
仮想マシンはシャットダウンした状態で、VirtualBox マネージャーを起動して、ツール→仮想メディアマネージャをクリックします。

対象の仮想マシンを選択した状態で、プロパティアイコンをクリックします。すると、現状の容量が確認できると思うので、新しく設定する容量を入力、もしくは、スライダーで決めます。それで良ければ適用をクリックします。

この状態は、枠としては広がりましたが、Ubuntuは、まだ広がった容量を認識できていません。
そこで、次に、Ubuntuを起動します。
左下のアプリケーションを表示するアイコンをクリックして、ユーティリティをクリックして、ディスクをクリックします。

下図のような画面が起動するので、対象のディスクをクリックして、対象のパーティションを選択して、設定アイコンをクリックして、サイズ変更をクリックします。

すると、下図のような画面になるので、白い〇をドラッグして、最大までサイズを変更して、サイズを変更をクリックします。

以上で、容量の拡張は完了です。

ユーティリティのディスク(gnome-disk-utility)でサイズ変更が反映されない場合
ほとんどのケースは上で書いたように、ユーティリティのディスクで、サイズ変更の反映が可能です。
まれに?サイズ変更が反映されないケースがありました。
対処方法を書いておきます。
結論から言うと、Gparted という、ユーティリティのディスクと同様のパーティション操作ツールを使うと、サイズ変更が反映されるようになりました。
Gparted をインストールします。
$ sudo apt install gparted
私の場合、サイズ変更が反映されないので、仕方ないので、Gparted を使って反映させようとしました。
Gparted を起動すると、GPT(MBRのようなパーティションの方式)の何かを修正しますか?みたいなダイアログが出ました(スクショ撮れてません)。それで、「Fix」を選択したところ、何か修正されたようでした。以下のようなメッセージがコンソールに出力されてました。
$ sudo gparted GParted 1.3.1 configuration --enable-libparted-dmraid --enable-online-resize libparted 3.4 Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 41943040 blocks) or continue with the current setting?
Gparted は終了させて、再度、ユーティリティのディスクでサイズ変更を行ったところ、変更が反映されました。
つまり、何か、パーティション情報で、修正が必要な状況にあったので、ユーティリティのディスクでサイズ変更が反映されなかったということだったようです。
追記です。下の「スナップショットの作成と復元」で書きましたが、VirtualBox で、スナップショットを作成している状態だと、Ubuntu が拡張したサイズを認識できないことがあります。その場合は、スナップショットを削除してから、Gparted を起動してみてください。
Ubuntu22.04で画面が乱れる場合
Ubuntu 22.04 に限らない話かもしれませんが、画面が乱れる症状が出ました。ひどいときは、使う気にならないぐらい画面が乱れます。うまくキャプチャが撮れました。

いろいろグラフィック系の設定を変更してみました。結果的には、下図のように、「3Dアクセラレーションを有効化」にチェックを入れることで画面の乱れは収まりました。

直って良かったです。
スナップショットの作成と復元
仮想マシンに、何か重要な変更をするとき(例えば、仮想マシンの HDD の容量を増やす、など)は、スナップショットを作成しておくと、何か起きた時に、スナップショットを作成した時点に戻すことが出来ます。
やり方は簡単です。
下図のように、スナップショットを作成したい仮想マシンを選択した状態で、設定アイコン?を左クリックします。すると、スナップショットを選択できるので、クリックします。

次に、下図のような画面になったと思うので、作成をクリックします。

すると、以下のダイアログが表示されるので、スナップショットの名前を入力し、OK をクリックします。

これで、スナップショットの作成は以上です。
次は、作成したスナップショットで復元を行う方法です。
スナップショットを作成したときのように、対象の仮想マシンを選択して、設定アイコンを左クリックして、スナップショットをクリックして、下図の画面までいきます。
次に、復元したいポイント(この場合は、2025-08-20)を選択して、復元をクリックすると、指定した復元ポイントの状態に仮想マシンを戻せます。
今回は、現在の状態と、スナップショットの状態が同じだったので、即座に復元されました(何も変化してない)が、状態が異なると、スナップショットを作成するか?と聞かれるようです。そのときは、念のため、スナップショットを作成しておいた方がいいと思います。

今回、私自身が、仮想マシンの HDD の容量を増やすので、スナップショットを作成しました。しかし、思わぬトラップがありました。上で書いた「仮想ハードディスクの容量を増やす」で書いた通り、VirtualBox の容量拡張は簡単です。その後、Ubuntu に、拡張した容量を認識させる必要があるのですが、今回は、Gparted を使っても、全く認識しませんでした。
仕方ないので、Web で情報を探していると、どうやら、スナップショットを作成している状態だと、Ubuntu が拡張した容量を認識できない問題があるそうで、スナップショットを削除すると、認識できるとありました。実際に、スナップショットを削除して、Ubuntu で、Gparted を起動すると、拡張した容量を認識できました。とんでもないトラップでした。
Ubuntu 22.04.4 LTS の設定
最低限の設定をやっていきます。まず、設定を開きます。

画面オフの無効化
毎回パスワードを聞かれると面倒ですし、仮想マシンなので、画面オフは必要ありません。
「電源管理」をクリックして、「画面のブランク」を「しない」に設定します。

ホームディレクトリの各ディレクトリ名を英語に変換する
デフォルトは、「ダウンロード」など、日本語のフォルダ名になっていますが、アクセスしにくいので英語のフォルダ名に変換しておきます。
$ LANG=C xdg-user-dirs-gtk-update

visudoで、sudoのときにパスワードを聞かれないようにする
sudoで実行するときに、毎回パスワードを聞かれるのは面倒なので、パスワードを聞かれないように設定しておきます。
$ sudo visudo
/etc/sudoers.tmp というファイルを開くので、末尾の方に、xxx ALL=(ALL) NOPASSWD:ALL(xxxはユーザ名)を追記します。
タブ補完で大文字小文字を区別しない
ホームディレクトリに .inputrc というファイルを作り、以下の内容を書きます。
$ nano ~/.inputrc set completion-ignore-case on
エイリアスの設定
個人的な設定です。treeコマンドは後述でインストールします。
$ nano ~/.bashrc alias his='history | tail -n 40' alias tree='tree --charset=C'
rootのパスワード設定
初期設定では、rootはパスワードが設定されていません。
しかし、パスワードを設定していなくても、下記のようにすることで、rootにスイッチできます。
$ sudo su
root #
1人で使う場合は、特に困らないのですが、セキュリティとしてこのスイッチを無効にした場合などでは、rootのパスワード設定が必要になることがあります。やり方は以下で、ユーザのパスワード変更と同じです。
$ sudo passwd root
別のユーザを作成
これも1人で使う場合は必要ないかもしれませんが、よく使うので書いておきます。
ユーザの作成には adduser コマンドを使います。似たようなコマンドで、useradd というのがありますが、こちらはホームディレクトリは作成されませんし、パスワード設定も別途行う必要があり、私が知る限り、メリットがありません。
以下は、ユーザ daisuke を追加した例です。
$ sudo adduser daisuke ユーザー `daisuke' を追加しています... 新しいグループ `daisuke' (1001) を追加しています... 新しいユーザー `daisuke' (1001) をグループ `daisuke' に追加しています... ホームディレクトリ `/home/daisuke' を作成しています... `/etc/skel' からファイルをコピーしています... 新しい パスワード: 新しい パスワードを再入力してください: passwd: パスワードは正しく更新されました daisuke のユーザ情報を変更中 新しい値を入力してください。標準設定値を使うならリターンを押してください フルネーム []: 部屋番号 []: 職場電話番号 []: 自宅電話番号 []: その他 []: 以上で正しいですか? [Y/n]
作成したユーザをsudoグループに参加させる
上で作成したユーザは、デフォルトで sudoグループに参加していないため、sudoコマンドが使えません。
以下は、ユーザ daisuke を sudoグループに参加させる例です。
$ sudo gpasswd -a daisuke sudo
ホスト名の変更
現在のホスト名を表示します。
$ hostname xxx-VirtualBox
ホスト名を変更します。
$ sudo hostnamectl set-hostname daisuke-VirtualBox
変更できたことを確認します。
$ hostname daisuke-VirtualBox
nanoエディタのキーバインドを戻す
nanoエディタは、v8.0以降は、新しいキーバインドが採用されています。
以下は、nanoエディタの公式サイトです。
キーバインドが変更されたことは、オンラインマニュアル の最初のイントロダクションや、ニュース の「2024 May 1 - GNU nano 8.0 "Grus grus"」のところに書かれています。
今後は、新しいキーバインドに変わったバージョンの nanoエディタが普及していくことになるんだと思います。
私は、以前のキーバインドの方が使いやすかったので、元の設定に戻したいところです。その方法は、過去のキーバインドに戻すための設定が sample.nanorc に書いてあり、それを有効にしてやればいいということのようです。
nanoエディタの v8.4 の場合、/usr/share/doc/nano/examples/sample.nanorc に、過去のキーバインドに戻す設定が書かれています。このファイルをホームディレクトリに .nanorc とリネームして配置します。そして、以下のように変更します。これで、元のキーバインドに戻すことができました。
$ diff -urp ~/sample.nanorc ~/.nanorc --- /home/ubuntu/sample.nanorc 2025-12-27 22:10:37.506221767 +0900 +++ /home/ubuntu/.nanorc 2025-12-27 22:18:59.652526121 +0900 @@ -9,10 +9,10 @@ ## double quote on the line will be seen as the closing quote. ## If you want ^F, ^B, M-F and M-B to do what they did before version 8.0: -# bind ^F forward main -# bind ^B back main -# bind M-F formatter main -# bind M-B linter main +bind ^F forward main +bind ^B back main +bind M-F formatter main +bind M-B linter main ## Make 'nextword' (Ctrl+Right) and 'chopwordright' (Ctrl+Delete) ## stop at word ends instead of at beginnings.
ソフトウェア(パッケージ)のインストール
Python3はデフォルトで入っていました。
$ python3 -V Python 3.10.12
最低限必要なパッケージをインストールしていきます。
OpenSSHサーバのインストール
WindowsからSSHで接続するために、OpenSSHサーバをインストールします。
$ sudo apt install openssh-server
インストールが完了したら、IPアドレスを確認します。
$ ip addr
ホストオンリーアダプタを有効にしていると、192.168.56.xxx(xxxは環境によって変化します) が見つかると思います。
TeraTermを起動して、見つかったIPアドレスでアクセスします。

「既存の鍵を、新しい鍵で上書きする」にチェックを入れて、「続行」をクリックします。

ゲストOS(Ubuntu)の「ユーザ名」と「パスフレーズ」(パスワード)を入力してOKをクリックします。

ログインできました。

OpenSSHサーバのインストールは完了です!
Samba
ホストOS(Windows)からゲストOS(Ubuntu)のファイルシステムにアクセスするために Samba をインストールします。
$ sudo apt install samba
インストールが完了したら、設定ファイルを編集します。
$ sudo nano /etc/samba/smb.conf
グローバルセクション([global])に文字コードを設定します。
[global] dos charset = CP932 unix charset = UTF-8
ホストOS(Windows)とゲストOS(Ubuntu)のユーザ名が同じなら、ホームセクションを有効にするだけでいいです。ホームセクション([homes])はデフォルトで無効になっているので、有効にします。
コメントアウト(;)を外します。
[homes] comment = Home Directories browseable = no
コメントアウト(;)を外して、yesをnoに変更します。
read only = no
コメントアウト(;)を外します。
valid users = %S
プリンタセクション([printers])をプリンタ可能を無効にします(yesをnoに変更します)。
[printers] printable = no
もし、ホストOS(Windows)とゲストOS(Ubuntu)のユーザ名が異なるなら、共有ディレクトリの設定を行います。末尾に以下を追記します。
自分だけしか使わないような状況なら、ルート以下すべてをアクセスできる設定にしておきます。そうでないなら、公開するディレクトリを一部にしてください。
[share] comment = share writable = yes path = / public = yes
設定は以上なので、設定ファイルを保存して終了します(Ctrl+xでyを押す)。
次に、Sambaでアクセスできるユーザ(xxxとします)を追加します。
$ sudo pdbedit -a xxx
新しく設定するパスワードを聞かれるので、ホストOSからアクセスするときに使うパスワードを設定してください。2回入力すると、ユーザの追加が完了します。
最後に、Sambaをリスタートします。
$ sudo service smbd restart
ホストOS(Windows)のエクスプローラーからアクセスしてみます。

新規にファイルが追加できたら成功です!
Java(JDK)
現在の状態を確認します。
$ java -version コマンド 'java' が見つかりません。次の方法でインストールできます:
インストールされていないようです。では、OpenJDKをインストールします。
新しすぎると、他のアプリで動かないなどがあるので、安定したバージョンを入れるといいと思います。パッケージでインストールできる最新は「21」のようですが、「17」をインストールします。
$ sudo apt install openjdk-17-jdk
インストールが完了したら、バージョンを確認します。
$ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment (build 17.0.10+7-Ubuntu-122.04.1) OpenJDK 64-Bit Server VM (build 17.0.10+7-Ubuntu-122.04.1, mixed mode, sharing)
treeコマンド
ディレクトリの階層構造を表示するコマンドです。
$ sudo apt install tree
試してみます。
treeコマンドのデフォルトの出力は文字化けする場合があるので、簡易的な表示にしています。
$ tree --charset=C . |-- Main.java `-- src `-- com `-- example `-- Sub.java 3 directories, 2 files
よく使う他のオプションをメモしておきます。
- -d:ディレクトリのみ表示する
- -a:全てのファイル(. から始まるファイルなど)を表示する
- -f:フルパスで表示する
- -L x:トップから x 層を表示する(表示する階層を制限することができる)
- -P pattern:ディレクトリは常に表示されて、patternにマッチしたファイルのみが表示される
- -I pattern:ディレクトリは常に表示されて、patternにマッチしたファイルは表示されない
エイリアスも設定しておきます。
# .bashrc alias tree='tree --charset=C'
これぐらいにしておいて、必要になったら、都度インストールすることにします。
おわりに
やっと普通に使えるところまでセットアップできました。
次回からは、Java(IntelliJ)、QEMU などをやっていく予定です。
今回は以上です!
最後までお読みいただき、ありがとうございました。