daisukeの技術ブログ

AI、機械学習、最適化、Pythonなどについて、技術調査、技術書の理解した内容、ソフトウェア/ツール作成について書いていきます

Ubuntu22.04(VirtualBox 7.0)の設定とソフトウェアインストール

前回、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のチェックを外す。

ホストオンリーアダプタの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を起動します。

左下のアプリケーションを表示するアイコンをクリックして、ユーティリティをクリックして、ディスクをクリックします。

ユーティリティ→ディスクをクリックします
ユーティリティ→ディスクをクリックします

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

設定アイコンをクリックしてサイズ変更をクリック
設定アイコンをクリックしてサイズ変更をクリック

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

拡張してサイズを変更をクリック
拡張してサイズを変更をクリック

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

容量の拡張が完了した
容量の拡張が完了した

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

ソフトウェア(パッケージ)のインストール

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アドレスでアクセスします。

TeraTermでSSHアクセス
TeraTermでSSHアクセス

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

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

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

ゲストOS(Ubuntu)のユーザ名とパスフレーズを入力してOKをクリック
ゲスト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)のエクスプローラーからアクセスしてみます。

ホストOS(Windows)のエクスプローラーからアクセスできた
ホスト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

これぐらいにしておいて、必要になったら、都度インストールすることにします。

おわりに

やっと普通に使えるところまでセットアップできました。

次回からは、Java(IntelliJ)、QEMU などをやっていく予定です。

今回は以上です!

最後までお読みいただき、ありがとうございました。