前回、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 は終了させて、再度、ユーティリティのディスクでサイズ変更を行ったところ、変更が反映されました。
つまり、何か、パーティション情報で、修正が必要な状況にあったので、ユーティリティのディスクでサイズ変更が反映されなかったということだったようです。
Ubuntu22.04で画面が乱れる場合
Ubuntu 22.04 に限らない話かもしれませんが、画面が乱れる症状が出ました。ひどいときは、使う気にならないぐらい画面が乱れます。うまくキャプチャが撮れました。
いろいろグラフィック系の設定を変更してみました。結果的には、下図のように、「3Dアクセラレーションを有効化」にチェックを入れることで画面の乱れは収まりました。
直って良かったです。
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アドレスでアクセスします。
「既存の鍵を、新しい鍵で上書きする」にチェックを入れて、「続行」をクリックします。
ゲスト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にマッチしたファイルは表示されない
エイリアスも設定しておきます。
alias tree='tree --charset=C'
これぐらいにしておいて、必要になったら、都度インストールすることにします。
おわりに
やっと普通に使えるところまでセットアップできました。
次回からは、Java(IntelliJ)、QEMU などをやっていく予定です。
今回は以上です!
最後までお読みいただき、ありがとうございました。