Linux(Ubuntu)/VirtualBox 超超超入門

# はじめに

これからLinuxの勉強を新しく始めるという方々のためになったら嬉しいなと思い書きました。
この記事ではLinux(Ubuntu)・VirtualBoxの初歩を解説しています。
LinuxもVirtualBoxも聞いたことすらない、という人でもVirtualBoxを用いた楽しいLinuxライフを送れるようにすることが目的になっています。

# 前提環境

Windows 10 Home 64 ビット（10.0, ビルド 16299）の環境で行いましたが、Windowsであれば大抵は大丈夫だと思います。

# Linuxとは

「Linuxとはどんなものなのか」を知るには、「OS」「カーネル」「UNIX」「Linuxカーネル」「Linuxディストリビューション」について知る必要があります。

OSについては http://wa3.i-3-i.info/word179.html 、
カーネルについては http://wa3.i-3-i.info/word15.html 、
UNIXについては http://wa3.i-3-i.info/word1962.html 、
Linuxカーネルについては http://wa3.i-3-i.info/word1961.html 、
Linuxディストリビューションについては http://wa3.i-3-i.info/word12472.html を参考にしてください。
以上を読み終わったら、 https://qiita.com/kznr_luk/items/6abf61e75cc6b3016036 と、 http://www.garunimo.com/program/linux/linux1.php も読んでみると理解が深まると思います（途中でVMWareを推奨する節がありますが後述するVirtualBoxを使用してください）。

# VirtualBox

仮想マシンを管理するソフトウェアです。
仮想マシンについては、 http://wa3.i-3-i.info/word11941.html を参考にしてください。
仮想マシン管理ソフトウェアにはVMWareというものもありますが、色々とこっちの方がおすすめです。
仮想マシンは英語表記でVirtual Machineです。よく略して「VM」と呼ばれます。

# VirtualBoxのインストール

VirtualBoxをインストールしてください。
https://www.virtualbox.org/wiki/Download_Old_Builds から最新のものをダウンロードしてください（今回は VirtualBox 5.28 Windows hosts x86/AMD64 を使用しました）。

# isoのダウンロード

触ってみたいLinuxのisoをダウンロードしてください。
ただし、学校などの公共ネットワーク回線を用いたダウンロードは回線を圧迫してしまう恐れがあることに注意してください。
isoとは、Linuxのインストーラだと思っておいてください。
（2018年4月現在の）おすすめはこれ↓（Ubuntu Server 16.04.4 LTS）です。
https://www.ubuntu.com/download/server/thank-you?version=16.04.4&architecture=amd64
今回はこの Ubuntu Server 16.04.4 LTS で解説していきます。

# VMのファイルを置くパスを決める

ファイル>環境設定>一般>デフォルトの仮想マシンフォルダー

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/78396c78-4cc0-8a4b-bf64-8de31a8e00e9.png)

初期設定のままでも良いですが、僕は設定しちゃいます。
慣れないうちは初期設定のままがいいかもしれません。
ここを変えるとバグを踏む恐れがあります。

# 新規

それでは、さっそくVirtualBoxを用いて仮想マシンを新規作成していきます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/85adbcb6-00e3-ac0e-b65c-3b2be56bf2f6.png)

今から作るVirtualMachine（仮想のLinux）にわかりやすい名前をつけてあげます。
僕はUbuntu16.04 serverを入れるのでUbuntu16という名前にしました。
正しいタイプとバージョンを選択してください。ある程度は名前から推測してくれます。

# メモリーサイズ

メモリのサイズを割り当ててください
何個も同時で建てる予定が無いのなら、おすすめは半分弱くらいです

# ハードディスク

作成

# ハードディスクのファイルタイプ

VDI

色々形式がありますが、あとで容量を変更するときはVDIじゃないと無理なのでVDIにしておきます

# 物理ハードディスクにあるストレージ

可変サイズ

固定だと使ってもいないのに最大サイズ分容量を食ってしまうので、可変にします。

# ファイルの場所とサイズ

ファイルの場所とサイズを設定します。

どちらもお好みで。
サイズですが、僕の場合、メイン使用のVMなら30くらいは少なくとも欲しいなと思ってしまいます

# 新たにできているはずです

できていない場合はVirtualBoxを再起動してみてください

# 設定

設定をクリックします

# 一般>高度

クリップボードとドラッグ＆ドロップを双方向にします

# システム>マザーボード

チップセットをICH9にします。新しいので。
拡張機能はI/O APICとUTC。

# システム>プロセッサー

プロセッサー数は環境に合わせて自由に選択してください。
基本2つ以上がオススメです（僕は2つまでしか選択できなかったので2つです）。
セキュリティ強化のためにPAE/NXはチェックします。
使用率制限は100%。

# システム>アクセラレーション

準仮想化インターフェースはHyper-Vに。
VT-xとネステッドページングにチェック。

# ディスプレイ>スクリーン

GUIアリかナシかで大分変わります。
GUIアリなら、ビデオメモリーはMAXにしてください。
つまみを右端までもっていき、OKボタンを押して設定を保存してから、もう一度、スクリーンの設定を開くと、256MBまで選択する事ができるようになります。
そして、3Dアクセラレーションにチェックします。
GUIナシなら、初期のままで大丈夫です。
ちなみに、先程僕が推奨したisoはGUIナシですので、僕は初期のままで進めていきます。

# ストレージ

コントローラ:IDE>空を右クリック->割り当てを除去
ディスクアイコン(光学ドライブの追加)をクリック->ディスクを選択
入れたいVMのisoを選択してください。
タイプは通常変更しなくて大丈夫です。
ホストのI/Oキャッシュを使うにはチェック。

# ネットワーク>アダプター1

NAT
高度>アダプタータイプをFASTⅢにします。

# ネットワーク>アダプター2

有効化にチェックし、割り当てをホストオンリーアダプターにします。
高度>アダプタータイプは同じくFASTⅢに。

# 共有フォルダ

共有させたいフォルダを自由に選択します。
「自動マウント」「永続化」にチェック。

（注意）
ここで設定しただけでは実際には共有フォルダは有効になりませんので、後述の「Guest Additions」を導入してください。
しかし、Guest Additionsの導入はなかなか難しいので、最初は導入しなくても良いと思います。
共有フォルダなんて設定しなくても後述の「SSH」を用いればファイルの転送は簡単に行えます。

（補足１）自動マウント時のマウント先のパスは/media/sf_XXXです。
（補足２）root以外でアクセスするには、gpasswd --add {ユーザ名} vboxsfを実行します。

# OK

設定は完了です。

# 起動

でーん！起動！！

# インストールバトルの始まり

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/c68ce2a9-a0c4-5dba-bf20-27775ab44f46.png)

言語を選ぶところからインストールバトルは始まります。
日本語なんて使うエンジニアいませんよね？もちろんEnglishを選択します。
（日本語でインストールしてしまうと、後々問題が発生する可能性があります。）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/da5b42fa-3c70-7651-f8d1-fecacce101f8.png)

Install Ubuntu Server

# Select a language

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/a3738ead-6d78-6f25-f9d0-b2a9273085f1.png)

日本語なんて使うエンジニアいませんよね？もちろんEnglishを選択します。

# Select your location

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/9bec64ec-c7bf-d1a8-1250-57cd8041335b.png)

どこ住み？って聞かれてます。
other>Asia>Japanです。

# Configure locales

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/90527eb0-1168-cd67-a40a-fd337b33d0e3.png)

United States > en_US.UTF-8

# Configure the keyboard

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/5f35f157-2b32-a967-12ea-deaf70988d8e.png)

キーボード配列を検知しますか？と聞かれています。
検知せずに手動設定しましょう。
No

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/4ccbef0f-5594-52e2-9549-03b86c7f6dfd.png)

JIS配列（日本語配列）の場合はJapaneseを選択ください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/88f344c8-3231-44e0-7022-806802a95b30.png)

Japanese

# Configure the network

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/9474534f-de4b-23f6-e0f7-9656ef5755a0.png)

これは、最初の初期設定で設定したアダプター1（NAT）とアダプター2（ホストオンリーアダプター）のどっちでインストールするかと聞かれています。
上の方がアダプター1（NAT）なので、上を選択します。
（ホストオンリーアダプターは後から設定します。）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/bec4895b-eb01-25fc-397c-3c59c07f07bd.png)

ホスト名を設定します。
ホスト名については https://www.cman.jp/network/term/domain/ を参考にしてください。
一般的にはマシンの名前だと思っていただければ大丈夫です。
僕はUbuntu16.04を入れるのでubuntu16にしました。

# Set up users and passwords

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/8aa46a14-2ff2-4f7f-c818-e391c207c027.png)


名前を設定します。
本名でもいいのですが、僕はmiyagaw61にしました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/2bf55aec-4f5c-db36-7ae0-e584897952ce.png)

ユーザ名を設定します。
僕はmiyagaw61にしました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/96c941cb-c494-c6e2-355c-5c5d856492ee.png)

パスワードを設定します。
結構頻繁に入力するのであんま長すぎるとダルいので気を付けてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/809ed43e-c41f-5fe0-a675-f38e3c1c67c7.png)

もう一度パスワードを入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/4ca339bf-d516-fdce-b738-85987cc8c91c.png)

脆弱なパスワードを指定するとこの画面が出ます。
続行する場合はYes、指定しなおす場合はNoを選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/85594d2d-5011-4c8d-1ef1-691d6b8da767.png)

ホームディレクトリを暗号化するか聞かれています。
Noで。

# Configure the clock

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/8c568b49-bd58-1313-09df-33671af561a3.png)

タイムゾーンの設定です。
合っていればYes、間違っていればNoを選択してください。
今回は正しく Asia/Tokyo となっているのでYesですね。

# Partition disks

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/77051f50-b201-c2ae-84a0-80698425cef6.png)

パーティションの設定。
Guided - use entire disk and set up LVM を選択。
LVM強いので。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/c016a384-9088-3bb0-cc42-a7ea4d0ed590.png)

ディスクを選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/cb341a14-e318-4322-d030-22c52a7da2ff.png)

変更を上書きしますか？と聞かれています。
Yesで。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/4e651534-1c9d-5101-b613-01dee2b72f3b.png)

容量を聞かれています。
Yesで。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/d38feae0-5e53-e8e8-ba5a-79e0c8be60d8.png)

また変更を上書きしますか？と聞かれています。
Yesで。

# Configure the package manager

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/d2ccc8b4-b525-8d34-210a-b421774fa5e9.png)

プロキシの設定です。
通常は空白でOKです。

# Configuring tasksel

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/302d1ca7-5dc3-d22b-4573-49c618b4a8e7.png)

自動アップデートをするかを聞かれています。
基本自由ですが、僕はセキュリティアップデートは自動でアップデートしておきます。

# Software selection

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/2a53e5f8-f959-240f-f31c-377794ed4272.png)

よく使われる有名なソフトウェアをここで選択しておくと、自動で入れてくれます。
後で必要になった時に入れればいいのでデフォルトのまま次へ進みます。

# Install the GRUB boot loader on a hard disk

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/fc2da4f2-d211-c844-f897-8e71adaac5ea.png)

GRUBをインストールするか聞かれています。
Yesで。

# Finish the installation

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/a921f875-aff3-0842-931c-a35c4bdd59bc.png)

インストールが終わりました。
Continue。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/f96de72e-6646-48a5-0a15-1cb72d2d3405.png)

再起動されるので、Ubuntuを選択。
Ubuntuが起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/c5c0b640-50a3-8cc0-9c09-0b0cd1cff3df.png)

ユーザ名とパスワードを入力し、ログインできることを確認します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/bdcfaa06-8434-0056-33cd-02b65a30f66b.png)

ログインに成功すると、プロンプトが現れます。
`miyagaw61@ubuntu16:~$`の`miyagaw61`はユーザ名です。
`ubuntu16`はホスト名です。
`~`は現在どのフォルダ（Linuxでは通常ディレクトリと呼びます）にいるかを表します。`~`は`/home/{ユーザ名}`と同じ意味です。
`$`はプロンプトの終わりとユーザのコマンド入力の始まりを表しています。この`$`の後にコマンドを入力することで、Linuxを操作していきます。
試しに`shutdown -h now`と入力してみましょう。シャットダウンしたはずです。
（しない場合は`sudo shutdown -h now`と入力してみてください。`sudo`の意味は後述します。）
これは、「今シャットダウンしてください」という意味のコマンドです。
このような、「コマンドを入力したらそのコマンドの機能が実行されるソフトウェア」を「ターミナル」と呼びます。

# スナップショット

VirtualBoxの画面に戻ります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/dc9f45d2-80fb-fe1f-2c2d-7414f53f3ac3.png)

「マシンツール」から、「スナップショット」の画面を開いてください。
ここは、スナップショットを管理する画面です。
スナップショットとは、ゲームでの「セーブ」のようなものです。
状態を保存します。
「作成」をクリックしてみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/18199768-5b9e-de61-8b26-c8f77b7b33e4.png)

スナップショットの名前と説明を入力する画面が出てきました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/d6ec0a4f-f287-cb3a-3e1e-9dba80af3536.png)

初期状態を意味する「initial_state」とし、保存してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/afc4bedb-c17f-d369-d3e7-30d2cb21520e.png)

「initial_state」という名前で現在の状態がセーブされました。

# ホストオンリーアダプターの設定

一番最初の設定のところで、ホストオンリーアダプターを設定したことを覚えていますか？
あれの詳細な設定をしていきます。

（設定手順）
・VMの起動/ログイン
・IPアドレスの確認
・設定ファイルの編集
・ネットワークサービスのリスタート
・IPアドレスの再確認

## ・VMの起動/ログイン

Ubuntuを起動し、ログインします。

## ・IPアドレスの確認

`ip a`と入力し、実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/ad33b32e-3323-6a6d-7a2f-9b6157fb7a9c.png)

1番が、ローカルホストです。
自分自身を表します。
`lo`という名前になっています。
inetの部分がIPアドレスを表します。
127.0.0.1と書いてあるので、このIPアドレスに向かってパケットを送ると自分自身にパケットを送ったことになります。

2番が、NATです。
なぜわかるかというと、最初にアダプター1に設定したのがNATだからです。
今回は`enp0s3`という名前になっています。
NATについては、少し難しいと思いますが http://wa3.i-3-i.info/word11978.html を参考にしてください。
ここでのNATは、ゲストOS（Ubuntu）用IPアドレスからホストOS（Windows）用IPアドレスへ変換します。
ゲストOS（Ubuntu）が外部ネットワーク（Googleとか）と通信する場合は、このNATを用いてホストOS（Windows）を通して行います。

3番が、ホストオンリーアダプターです。
なぜわかるかというと、最初にアダプター2に設定したのがホストオンリーアダプターだからです。
今回は`enp0s8`という名前になっています。
ホストオンリーアダプターは、ホストOS（Windows）とのプライベートな（外部に公開されていない）ネットワークのためのアダプターです。
このホストオンリーアダプターを用いれば、ゲストOS（Ubuntu）とホストOS（Windows）の間では自由に双方向通信することができます。
しかし、loやenp0s3と違い、enp0s8にはIPアドレスが割り当てられていないのがわかると思います。
なので、このenp0s8にIPアドレスを手動で割り当てていこうと思います。

## ・設定ファイルの編集

`sudo vim /etc/network/interfaces`と入力し、実行します。

`sudo`とは、「今から管理者権限で次のコマンドを実行します」という意味です。高い権限が必要なコマンドを実行するときは、これを先頭に付けてあげる必要があります。

`vim`とは、Ubuntu16.04 serverに標準で用意されているエディタのひとつです。（ここではVimを推奨しているわけではありません。たまたま僕がVimが使えるだけです。自分の好きなエディタを使っても全然構いません。）

`/etc/network/interfaces`とは、ネットワークの設定を書くためのテキストファイルです。

`sudo vim /etc/network/interfaces`を実行すると、テキスト編集画面に入ります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/df23ec5c-621a-9ff3-43ce-40e2b535a527.png)

`hjkl`かもしくは矢印キーでカーソルを移動させます。
初期状態では、文字の入力はできません。
`i`を入力することで文字を入力できるようになります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/1affab5b-1b3d-f058-657e-bc017c02e179.png)

左下に`-- INSERT --`と表示されます。
この文字を入力できるモードをインサートモードと呼びます。
`Esc`を押すと、再び文字を入力できないモードに入ります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/a6ed07b6-5c86-0965-5256-889eb78605db.png)

左下の`-- INSERT --`が消えます。これをノーマルモードと呼びます。
ノーマルモードに入った状態で`:set number`と入力してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/1bb4c1d8-e62c-52b2-7b49-2373e3d537d0.png)

左下に入力中の文字が表示されます。
エンターを押して実行すると、左側に行番号が現れるはずです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/f34ea7c6-2ac1-65a3-8524-2e6a6497effe.png)

このように、数多くのコマンドを持ち合わせているエディタがVimです。
最初の超絶簡素なエディタから自分好みのエディタに育て上げていくのがとても楽しいので、ぜひ暇な人はやってみてください。チューニングしまくると、次のように、全く違うエディタに変貌します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/f9007c62-e148-0e3e-f2db-b7351d214bb3.png)

話が逸れてしまいました。本題に戻ります。
`auto lo`のブロックと`auto enp0s3`のブロックが見えると思います。
これは、`lo`の設定と`enp0s3`の設定のブロックです。
やはり、`enp0s8`の設定が書かれていませんね。
今回は何も理解しなくても大丈夫なので、まず、インサートモードに入り、次の設定を追記します。
まだコピー＆ペーストはできないので、頑張って写経してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/3c61f3ca-808f-87e4-484a-7f6d65380854.png)

ここまで写せたら、ホストOS（Windows）のIPアドレスを確認します。
Windowsに戻り、Windowsキーを押して、「cmd」と入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/7d5339c1-e984-d3ea-5ae9-896c5ff27203.png)

エンターを押してコマンドプロンプトを実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/9b8b39c2-ace1-2236-815b-22afc6ffcb5d.png)

これは、Windows版のターミナルです。
Linux版と比べ、機能が著しく少ないです。

`ipconfig`と入力し、実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/047e8b68-2b19-9e75-93fa-cb323402bf14.png)

`VirtualBox Host-Only Network`を探します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/98b4e68d-5993-4948-e845-843b6640921e.png)

IPアドレスとサブネットマスクを確認します。
今回はIPアドレスが`192.168.56.1`、
サブネットマスクが`255.255.255.0`でした。

ゲストOS（Ubuntu）に戻ります。

`address 192.168.56.2`のように、`address`の後に`VirtualBox Host-Only Network`のIPアドレスの最後だけを変えたIPアドレスを設定します。ここはスクリーンショットを完全に写すのではなく、各自が適切な数値を設定してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/1727cf44-34e4-ff5b-69a0-f76c40ce0757.png)

次に、サブネットマスクを同じ値に設定します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/a607935f-283c-33c4-61e0-eb16493a45e9.png)

以上でネットワークの設定ファイルの編集は終わりです。
`Esc`キーを押し、ノーマルモードに戻ってください。
そしたら、`:wq`というコマンドを先程の`:set number`と同じ要領で実行してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/2d7b0fd2-86a1-10d0-8c04-f6efa1e0a260.png)

すると、セーブされてVimが終了するはずです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/64f8caf5-371d-fb64-54b2-6e4d75b6ee0f.png)

尚、`:w`だけだとセーブのみ、`:q`だけだとセーブせず終了のみになります。

設定ファイルの編集は終わったので、ネットワークサービスをリスタートさせ、設定を反映させましょう。

## ・ネットワークサービスのリスタート

`sudo systemctl status networking`と入力し、実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/65de687f-6f8f-518f-061a-d84cc8261a3e.png)

`systemctl`とは、「サービスを管理するコマンド」です。
サービスとは、ネットワークサービスのように、常に動き続けるタイプのソフトウェアのことです。
`systemctl`コマンドを使えば、サービスを「開始」したり「停止」したり「自動で起動するように設定」したりできます。
今回は、`networking`という「ネットワークサービス」を操作します。
`status`とは、`systemctl`コマンドの「現在のサービスの状態を確認する」サブコマンドです。
`sudo systemctl status networking`で`networking`サービスの現在の状態を確認できます。
`active`となっていれば、起動しています。`inactive`となっていれば、停止しています。
通常は`active`となっているはずです。
この`networking`サービスを、一度停止させ、もう一度起動します。
`stop`サブコマンドと`start`サブコマンドを使っても良いのですが、この「停止」「起動」を一度に行える`restart`という「再起動」サブコマンドが用意されています。

`sudo systemctl restart networking`と入力し、実行してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/006611ca-bfb9-18ac-c580-c271718b1ac7.png)

これで、ネットワークサービスが再起動され、ネットワーク設定が更新されたはずです。

## ・IPアドレスの再確認

実際に、ネットワーク設定が更新されたか、見てみましょう。

`ip a`ともう一度入力し、確認してみます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/921088f8-bd47-c257-dd34-9b72d93ea5a3.png)

正しく、ホストオンリーアダプターである`enp0s8`にもIPアドレスが割り当てられていますね。
これで、ホストOS（Windows）からでも`192.168.56.2`に向かって通信すればゲストOS（Ubuntu）と通信できるようになります。

# SSH

SSHについては、 http://wa3.i-3-i.info/word11722.html を参考にしてください。
要するに、遠隔で操作したい！ってやつです。

（SSH手順）
・リポジトリのアップデート
・古い既存ソフトウェアのアップデート
・openssh-serverにインストール
・sshの有効化
・Tera Termのインストール/SSHログイン

## ・リポジトリのアップデート

`sudo apt update`と入力し、実行します。

`apt`とは、「ソフトウェアを管理するコマンド」です。
ソフトウェアを「検索」したり「インストール」したり「アップデート」したり「削除」したりという機能がまとめて提供されています。

`update`とは、`apt`コマンドのサブコマンドです。前述した`「検索」したり「インストール」したり「アップデート」したり「削除」したり`という部分を指定します。
今回の`update`サブコマンドは、「リポジトリのアップデート」を行います。
「リポジトリ」とは、iOSでいうところの「AppStoreの品揃え」のようなものだと思うとわかりやすいと思います。
Ubuntuを入れたばかりは、ソフトウェアの品揃えが空っぽです。
つまり、「iPhone買ったけどAppStoreの中身が空っぽなんだけど！」のような状況なわけです。
なので、`sudo apt update`コマンドを実行して最新の品揃えにアップデートする必要があります。
iOSのAppStoreは自動的に最新版になってくれますが、Ubuntuはなってくれません。
なので、定期的にこのコマンドを実行し、品揃えを最新版にしてあげる必要があります。

## ・古い既存ソフトウェアのアップデート

「よし、リポジトリ（品揃え）も最新版になったわけだし、さっそくソフトウェアをインストールしていくか！」といきたいところですが、その前に、既に入っているソフトウェアが古くなっていないか確認しておきましょう。
そして、古いバージョンのソフトウェアを見つけたら最新版に取り換えてもらいましょう。
それを行うのが`sudo apt upgrade`コマンドです。
iOSでいうところの「アプリのアップデート」に相当します。
`Do you want to continue? [Y/n]`と表示されたら、`y`と入力して続行しましょう。
リポジトリのアップデートと同じく、こちらも自動では行われないので、定期的に行いましょう。
長期間更新をサボっていると、物凄く長い時間かかることがあります。

## ・openssh-serverのインストール

準備が整ったので、さっそく欲しいソフトウェアをインストールしていきます。
今回はSSHを有効にするために、`openssh-server`というソフトウェアをインストールします。
`sudo apt install openssh-server`と入力して実行します。
この`install`サブコマンドが、ソフトウェアを「インストール」するサブコマンドです。
`Do you want to continue? [Y/n]`と表示されたら、`y`と入力して続行しましょう。

## ・sshの有効化

`sudo systemctl status ssh`と入力し実行します。
`systemctl`は、ネットワーク設定のところでもでてきましたね。サービスを管理するコマンドでした。
先程は`networking`という「ネットワークサービス」を操作しましたが、今回は`ssh`という「リモート接続サービス」を操作します。
`status`サブコマンドの結果が`inactive`だった場合、`sudo systemctl start ssh`を実行します。
これで、sshサービスを起動/開始できます。
また、Ubuntuを立ち上げるたびに毎回これを打つのは面倒なので、`sudo systemctl enable ssh`を実行しておきます。
これは初めて出てくるサブコマンドですね。
これで、sshサービスを「自動で起動するように設定」することができます。
（sshはデフォルトで自動起動する設定になっているかもしれませんが、一応。）

## ・Tera Termのインストール/SSHログイン

https://forest.watch.impress.co.jp/library/software/utf8teraterm/ から、「Tera Term」をダウンロード/インストールします。
インストール方法・使い方は https://eng-entrance.com/teraterm-install を参考にしてください。

「ホスト」を入力する画面では、先程の「ホストオンリーアダプター」のIPアドレスを指定してください。
僕の場合は、`192.168.56.2`でした。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/afb5f3f0-984f-463c-a1c0-b1314f1fa73e.png)

次へ進み、ユーザ名とパスフレーズを入力すると、ターミナルの画面に入ることができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/0966fab4-99a9-7f8f-efdd-c8b9339ce2b3.png)

## ・Tera Termの使い方

後は、普通のターミナルと同じ感覚で使用することができます。
右クリックか`Ctrl+Shift+C`でコピーできます。
右クリックの場合、コピーと同時にペーストしてしまうので、気を付けてください。
2行以上選択した状態で右クリックすると、いきなりコピーには入らず、選択した領域の中のどこをコピーするか指定する画面に入るので、そこでコピーして、キャンセルを押すと無難にコピーすることができます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/bd829184-e962-bd83-d1d8-4a2e9106efa1.png)

ファイルを送信・受信したい場合は、左上の「ファイル」から「SSH SCP...」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/f5671674-b5b2-b453-441e-9d0a27b6dd0e.png)

上がホストOS（Windows）からゲストOS（Ubuntu）への送信です。
下がゲストOS（Ubuntu）からホストOS（Windows）への送信です。
フォルダは送れないので、フォルダを送りたい場合はzipに圧縮してから送りましょう。

ホストOS（Windows）からゲストOS（Ubuntu）への送信に限れば、ドラッグ＆ドロップでも送信可能です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/706b9ad2-3aa4-5bd5-60e6-2c0cb3381569.png)

送信先のフォルダ（ディレクトリ）を指定して、「SCP」を選択してください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/e84ea5a1-b4b9-3a80-6ed5-38d0b737ce1e.png)

# プロンプトに色を付ける

今、`miyagaw61@ubuntu:~$`というプロンプトが全て白字になっていて非常に寂しい見た目になっています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/957fc35b-ebc6-19c4-5ca8-7812e3731ec2.png)

環境によっては、いくつか簡単なコマンドを実行するだけで色が付いてくれる可能性があるので、試しにやってみます。
次の2行を入力し、実行してみてください。

```
export TERM=xterm-256color
source ~/.bashrc
```

色が付きましたか？僕の環境ではこうなりました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/edfc2c14-f94a-005b-4546-3090693f0878.png)

これでも色が付かなかった場合は、他の原因で色が付いていない可能性があるので、今は妥協しましょう。
後々、Linuxに慣れてきた頃、頑張ってみてください。

コマンドの解説をします。

`export TERM=xterm-256color`ですが、これは今は理解しなくて大丈夫です。
これを実行しておくと、プロンプト設定時に色が付いてくれるようになります。
後々自分でターミナル周りをチューニングする時、`export TERM=なんとか`というコマンドをまた実行する機会があるかもしれません。

`source ~/.bashrc`ですが、このコマンドはとても重要になります。

まず、`~/.bashrc`ですが、これは「Ubuntuを起動する度に毎回読み込まれるファイル」になります（本当はUbuntuではなくターミナルを起動する度に毎回読み込まれるのですが、今回の環境ではUbuntuを起動すると同時にターミナルが起動されるので、このような書き方をしています）。
つまり、「Ubuntuを起動する度に毎回最初に実行して欲しいコマンド」があった場合、このファイルにそのコマンドを書いておくと、Ubuntuを起動する度に毎回最初に実行してくれます。

`source`は、「ファイルを読み込んで一行ずつ実行する」というコマンドです。
つまり、`source ~/.bashrc`で「"~/.bashrc"という名前の"Ubuntuを起動する度に毎回読み込まれるファイル"を上から一行ずつ実行していく」という意味になります。

そして、この`source ~/.bashrc`でプロンプトに色が付いたということは、「~/.bashrc」の中でプロンプトの設定をしているということになります。
もっと正確に言えば「~/.bashrc」の中に「`export TERM=xterm-256color`がされていればプロンプトに色を付ける」という設定が書かれています（僕の環境ではそうでした）。
なので、「Ubuntuを起動する度に毎回自動でプロンプトに色を付けて欲しい」ということであれば、「~/.bashrc」の一番最初に`export TERM=xterm-256color`を書いてあげれば良い、ということになります。

実際にやっていきます。

`vim ~/.bashrc`と入力し、`~/.bashrc`を編集していきましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/b97ef6e3-8fed-b629-ee24-6828d78ede83.png)

凄い量のテキストが表示されました。
Ubuntuは、毎回ターミナル起動時にこれを上から実行しているのです。
ちなみに、`#`が最初に付いている行は無視されます。これを「コメント」と呼びます。

では、さっそく`export TERM=xterm-256color`を先頭に追記してみましょう。

`i`を入力し、文字を入力できる「インサートモード」に入り、`export TERM=xterm-256color`と入力します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/2af04b30-a6c3-4ebc-8afd-36670592305d.png)

これでOKです。
`Esc`キーを入力し、文字を入力できる「インサートモード」からコマンドを入力できる「ノーマルモード」に戻ります。
`:wq`を入力してエンターを押し、「保存して終了」しましょう。

Vimが閉じたら、完了です。

`sudo reboot`というコマンドを入力し、実行してみましょう。
このコマンドは再起動を意味します。

VirtualBox上のUbuntuとTera Termの接続が切れ、Tera Termが終了してしまうので、Ubuntuの起動が完了したら、再びTera Termで接続します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/46f6736b-0bef-f54b-2c18-69ced5fba2a7.png)

VirtualBox上のUbuntuがこの画面になったら、Tera Termから接続です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/bde0e3fb-580c-da78-6492-36952a4b3647.png)

ホストにUbuntuのホストオンリーアダプターのIPアドレスを入力してOK、その後、ユーザ名とパスワードフレーズを入力してOKでしたね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/132486/118a14d0-2c73-ea9e-209e-5982e4997001.png)

見事、色付きプロンプトを最初から表示させることに成功しました！

# Guest Additions

VirtualBoxには、`Guest Additions`と呼ばれる、「ゲストOSとしての便利な機能をたくさん提供してくれるプラグイン」が存在します。
その機能の中の一つとして、「共有フォルダの有効化」というものがあります。
しかし、前述のTera Termのファイル送受信機能で十分なので、共有フォルダ機能の有効化はそこまで必須ではありません。
どうしても「ホストOS（Windows）とゲストOS（Ubuntu）の間でフォルダを共有したい！」という方は、 https://qiita.com/miyagaw61/items/bd577a2e08ec04081235 を参考に有効化してみてください。
まだ説明していないコマンドなどが出てきますが、各自で調べて頑張ってみてください。

# これから何をすればいいの？

自由にLinux（Ubuntu）で遊んでください！
Web開発をしたい方はapache2を入れてそのLinuxをWebサーバにしても良し、C言語でプログラミングをしたい方はgccを入れてC言語のソースコードをコンパイルできるようにしても良し、Vimを自分好みにチューニングするも良し、何をしても良しです！
Linuxについてもっと理解を深めたいなら、 http://www.garunimo.com/program/linux/ がおすすめです！