Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

Virtualbox で Ubuntu 16.04 の起動時に共有ディレクトリを自動的にマウントする最良の方法

仮想マシンを使用する人は通常、操作と使用を容易にするために仮想マシン用の共有ディレクトリを設定します。たとえば、Virtualbox を使用して 64 ビットの win10 システムに Ubuntu 16.04 仮想マシンをインストールする場合、通常は win10 システムの下のいくつかのディレクトリを Ubuntu にマップします。これまでは、共有ディレクトリ情報を /etc/fstab ファイルに直接書き込むことで、自動マウントを実現していました (ここでは詳細な方法は説明しません。Baidu で検索すればわかります。とても簡単です)。しかし、長期間使用した後、いくつかの問題が見つかりました。

まず、仮想マシンにマウントする必要があるディレクトリが複数あり(たとえば、一時ファイル用のディレクトリ tmp、作業プロジェクト コード領域用のディレクトリ wrk、学習教材編成領域用のディレクトリ mit など)、これらのディレクトリの一部は異なるパーティションにあり、非常に深い場所にあるものもあります。単一の共有ディレクトリを介してマウントすることは不可能です。

次に、このように自動的にマウントされた共有ディレクトリの 1 つ以上が無効になった場合 (たとえば、名前が変更されたり、場所が移動されたりした場合など)、Ubuntu は起動できなくなり、デスクトップにアクセスできなくなります。私のような完璧主義者は、コンピューター内のファイル、ディレクトリ、レベルなどを整理することが多く、共有ディレクトリに移動することは珍しくありません。このような状況に遭遇したことが何度かありましたが、私は一瞬反応しませんでした。仮想マシンがクラッシュしたと思い、削除して再インストールするところでした。

3 つ目は、仮想マシンを使用する必要があるコンピューターが複数あることです。便宜上、同じ仮想マシンのイメージ ファイルを再利用し、必要なときに VDI ファイル全体をコピーするだけです。さらに、異なるコンピューター上でマップするディレクトリはまったく同じではありません (たとえば、作業プロジェクト コード領域のディレクトリ wrk を自宅の仮想マシンにマップする必要はありません)。これは非常に面倒です。コピーするたびに、最初に仮想マシンの /etc/fstab ファイルを変更することを覚えておく必要があります。そうしないと、仮想マシンを起動できなくなり、非常に面倒です。

これらの問題を解決するために、共有ディレクトリをマウントするためのより便利で自動化された方法を検討しました。ここでは、簡単に参照したり、同じ考えを持つ人々と共有したりできるように記録しています。この方法は実際には非常に簡単です。手順は 2 つだけです。最初の手順は物理マシンのパーティション全体をマウントすることであり、2 番目の手順はパーティション内の指定されたディレクトリへのソフト リンクを作成することです。

ステップ1: 物理マシンのパーティション全体をマウントする

まず、Virtualbox の設定で、マウントしたい物理マシンのパーティションを共有ディレクトリとして追加します。下図のように、3 つのディレクトリ [D ドライブのルート ディレクトリ、E ドライブのルート ディレクトリ、Onedrive のルート ディレクトリ] を共有ディレクトリとして追加し、それぞれ [drv_d/drv_e/drv_o] という名前を付けました。これらは自由に変更できます。


ここに画像の説明を挿入

ここで注意したいのは、共有ディレクトリを設定するときに、自動マウントのオプションがあるということです [選択しないようにしてください] (下図参照)。そうしないと、Ubuntu システムは起動時にディレクトリを /media ディレクトリに自動的にマウントします。マウント時にスーパーユーザーの権限を使用するため、他の一般ユーザーはアクセスできなくなります。その際、ユーザー権限など、さまざまなことを処理しなければならず、非常に面倒です。手動で 2 つのコマンドを記述して実行する方がよいでしょう。


ここに画像の説明を挿入

次に、仮想マシンの /mnt ディレクトリに共有ファイル用の新しいマウント ディレクトリを作成し、外部ドライブのルート ディレクトリがこのディレクトリに直接マウントされます。ここでは win10 という名前を付けます (完全なアドレスは /mnt/win10 です。もちろん、このディレクトリの場所は任意であり、必須ではありません)。任意に設定できます [新しいディレクトリを作成するときに、ユーザーに十分な権限がないため sudo が必要であるというメッセージが表示される場合があることに注意してください]。そして、このディレクトリの下に 3 つの新しいディレクトリを作成し、実際の 3 つの共有ディレクトリをマウントします。それぞれ drv_d/drv_e/drv_o という名前を付けました。好きなように設定することもできます。

レオン@Ubuntu:~$ cd /mnt/
leon@Ubuntu:/mnt$ sudo mkdir win10 共有
leon@Ubuntu:/mnt$ sudo chown leon *
レオン@Ubuntu:/mnt$ sudo chgrp レオン *
レオン@Ubuntu:/mnt$ cd win10/
レオン@Ubuntu:/mnt/win10$ mkdir drv_d drv_e drv_o

次に、仮想マシンの /etc/fstab ファイルを変更し、次のステートメントを追加します。

drv_d /mnt/win10/drv_d vboxsf rw、自動 0 0
drv_e /mnt/win10/drv_e vboxsf rw、自動 0 0
drv_o /mnt/win10/drv_o vboxsf rw、自動 0 0

上記のスクリプトの最初の項目は、外部物理マシンの共有ディレクトリの名前であり、図 1 で設定されたディレクトリの名前です。 2 番目の項目の/mnt/win10/drv_dは、Ubuntu 仮想マシンにマウントするマウント アドレスです。他のプロジェクトについては後ほど説明しませんので、詳細はBaiduで検索してください。

ここまでで、外部物理マシンのルートディレクトリの自動マウントが完了しました。再起動後、Ubuntu は以下に示すように、選択したすべてのディレクトリを指定したアドレスに自動的にマウントします。


ここに画像の説明を挿入

ステップ2: ソフトリンクファイルを作成する

上記の手順により、ルート ディレクトリの自動マウントが完了します。つまり、Ubuntu を起動すると、/mnt/win10 ディレクトリの win10 システムのドライブ D やドライブ E などのルート ディレクトリにアクセスできるようになります。

しかし、実際の共有ディレクトリはルートディレクトリの下のどこかに隠されており、アクセスしたい場合は、レイヤーごとに検索し、そのたびに多くのパスを入力する必要があり、非常に面倒です。したがって、便利なアクセスを実現するためにいくつかのショートカットを作成する必要があります。

方法は実はとても簡単です。/mnt/share ディレクトリ (このディレクトリの場所は任意で、必須ではありません) で、必要に応じて実際のディレクトリごとにソフト リンク ファイル (ln コマンド) を作成します。具体的な構文は次のとおりです。

ln -s /mnt/win10/drv_d/A_Download /mnt/share/tmp
ln -s /mnt/win10/drv_d/B_WorkItem/A_YXProjects/C_HUD_Code/imx6ul /mnt/share/wrk
ln -s /mnt/win10/drv_d/M_MyInstitute /mnt/share/mit
ln -s /mnt/win10/drv_d/S_StudyProject/G_GitArea /mnt/share/git

最終結果は次のとおりです。

レオン@Ubuntu:/mnt/share$ ls -l
合計使用量 0
lrwxrwxrwx 1 レオン レオン 42 5月 28 10:48 git -> /mnt/win10/drv_d/S_StudyProject/
lrwxrwxrwx 1 レオン レオン 31 5月 28 10:47 mit -> /mnt/win10/drv_d/M_MyInstitute/
lrwxrwxrwx 1 レオン レオン 28 5月28日 10:41 tmp -> /mnt/win10/drv_e/A_Download/
lrwxrwxrwx 1 レオン レオン 59 5月28日 10:47 wrk -> /mnt/win10/drv_e/B_WorkItem/A_Projects/C_Code/imx6ul/

上記の方法で作成された共有ディレクトリとそのリンク ファイルには、次の利点があります。

1. 仮想マシンの外部にマッピングされているのは、win10 システムのルート ディレクトリです。強迫性障害を患っている私のような患者でも、時間があるときはいつでもディレクトリとファイルを整理したいと思っていますが、ルート ディレクトリを整理するのはそれほど簡単ではありません。したがって、win10 システム ディレクトリを整理するときに、仮想マシンの共有ディレクトリ マッピングが異常になることを心配する必要がなくなりました。

2. 最後に作成されるアクセス チャネルは、/mnt/win10 ディレクトリの下のルート ディレクトリに基づいて一時的に作成されるリンク ファイルです。必要に応じていつでも変更できます。外部の物理マシンを移動する必要はまったくなく、複数の物理マシン間の競合を心配する必要もありません。非常に便利です。

要約する

上記は、Virtualbox で Ubuntu 16.04 の共有ディレクトリを自動的にマウントするための最良の方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • VirtualboxにLubuntu 18.04 64ビットをインストールする方法
  • VirtualBox に Ubuntu Server 16.04 仮想マシンをインストールする方法
  • VirtualBox 仮想マシンに Ubuntu をインストールする詳細なチュートリアル (画像とテキスト)
  • Ubuntu の VirtualBox で共有設定を実装する方法
  • VirtualBox 仮想マシンに Ubuntu 12.04 をインストールする (グラフィック チュートリアル)
  • VirtualBox に Ubuntu をインストールするグラフィック チュートリアル
  • VirtualBoxの共有フォルダを設定し、起動時に自動的にマウントする方法の詳細なチュートリアル

<<:  Vue+Spring Bootで検証コード機能を実現

>>:  データベースのデフォルトパスを変更した後にmysqlが起動できない問題の解決策

推薦する

CSS3はマスク連打機能を実現する

最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...

Docker-compose を使用して ELK をデプロイするためのサンプル コード

環境ホストIP 192.168.0.9 Docker バージョン 19.03.2 docker-co...

Hyper-V インストール CentOS 8 の問題の分析

CentOS 8 がリリースされてから随分経ちました。Linux 仮想マシンをいじっている人間として...

MySQL MyISAM デフォルト ストレージ エンジンの実装原則

デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...

CSS 画面サイズ適応実装例

CSS 画面サイズの適応を実現するには、まず CSS3 @media メディア クエリを導入する必要...

プログレッシブ ウェブ アプリ (PWA) の開発方法

目次概要必要とするアプリURL PWA にはどのような技術コンポーネントが必要ですか?マニフェストフ...

この記事では、jsのデータ型とデータ構造の世界を紹介します。

目次1. 動的型付けとは何ですか? 2. データ型2.1 プリミティブ型 (6 つのプリミティブ型、...

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明以下は私が作成した M...

iframeを透明にするパラメータ

<iframe src="./ads_top_tian.html" all...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

レスポンシブWebデザイン学習(3) - モバイルデバイスでのWebページのパフォーマンスを向上させる方法

序文モバイル デバイスでは、帯域幅とプロセッサ速度の制限により、Web ページのパフォーマンスに対す...

MySQL msiバージョンのダウンロードとインストールの初心者向けの詳細なグラフィックチュートリアル

目次1. MySQL msiバージョンをダウンロードする2. インストール3. 環境変数を設定する1...

CSS アニメーション プロパティの使用方法とサンプル コード (transition/transform/animation)

開発中、優れたユーザー インターフェイスには常にいくつかのアニメーションが組み込まれます。 CSS ...

Vue2.x における双方向バインディングの原理と実装

目次1. 実施プロセス2. オブザーバーを表示する3. ウォッチャーを実装する4. コンパイルを実装...

収集する価値のある Linux ドキュメント編集コマンド 27 個

Linux col コマンドLinux の col コマンドは制御文字をフィルタリングするために使用...