[超初心者]仮想マシン(Liunux)環境構築の備忘録

## はじめに

今までWindowsしか使用していなかった自分がLinux練習に以前環境構築したメモを備忘録として書きます。
この記事でのゴールはWindowsに立てたLinuxから、更にvagrantコマンドで孫VM作ったり壊したりする環境を構築することです。

## 方針・概要

Windows上にLinux仮想環境を構築する場合、
「Windows に Virtualbox + vagrant インストール」して仮想PCを複数起動するのがメジャーな気がしますが、
vagrantコマンド叩く側がWindowsなのはツライ＆手元のWindows環境はあまり汚したくないので、
自分は、Ubuntu18(デスクトップ版)を仮想で立てて、その中で更に複数の仮想環境を立てることにしました。

※Powershel.exe , cmd.exeツライ
※WSLもいいけどvagrantなどの挙動が不安。vagrant.exeならOKかもしれないが、
　そもそもWSL使うの自体Linux初心者的に原因切り分け難しいことが多い気がして厳しいと思う。
※以前はwindowsにGit for windows ,virtualbox,vagrant入れてgit bash からvagrant叩いてたけど
　間に1つLinuxのVM挟んだほうが初心者的にむしろ気楽だった。


## 筆者の環境
- Windows10
  - マザーボード：仮想化支援機能"intel VT-x"を有するマザーボード。(BIOSで設定onになっているか確認すること)
  - SSD 512GB:Windows10のsystemdrive
  - SSD 512GB:VMイメージ置き場　※負荷を考慮してsystemdriveと分けたほうがいい気がしたので。知らんけど）

## 構成概要

【任意のLinux(virtualbox + vagrant)】 on 【Ubuntu18(VmwareWorkstation)】 on 【Windows10】

- Host(Windows10)
    - 子Guest(Ubuntu18.04LTS)
         - 孫Guest(任意のLinux)



### "Vmware Workstation 15 Player"を使用する理由
virtualboxやhyper-vの選択肢もありますが
"Vmware Workstation 15 Player"は仮想化支援がゲストでも使え
ゲストから仮想マシンを作成可能だったため使用している。
（また、非商用用途で無料で使用可のようで、かつvirtualboxとも共存可能なので選んだ）

## 手順
### GuestOSはubuntu18.04 日本語版をインストール

1. 上記のISOをダウンロード
2. 仮想マシン作成、インストール
 - 仮想マシンの場所は、負荷を考慮してシステムドライブと別のドライブ（SSD）に入れた。
 - メモリやシステムドライブはある程度確保してあげるといい。（自分は16G,90Gくらい確保してます。たしか。）
 - 設定- CPUタブでintel VT-Xを仮想化する。
 - 簡易インストールに従うと ユーザー名やパスワードを入れるだけなので楽。

### ubuntu設定
端末を起動。

```bash:bash$
# まずは最新に
sudo apt update
sudo apt upgrade
```
## gnome-terminal設定

個人の好みで以下のプロファイルを作成

- solarized-dark
- solarized-light

※既定をsolarized-lightにする。

## 壁紙変える(デフォルトは壁紙がローテーションしたためうっとおしかった)

## 言語サポート
以下を参考に実施。

https://linuxfan.info/ubuntu-18-04-basic-settings

## timezone
タイムゾーン・ロケールを日本に変える。

## home直下のフォルダ名を英語にする

```bash:bash$
LANG=C xdg-user-dirs-update --force
```

ログアウト
ログイン
変更する。(すでにディレクトリ内に入っているフォルダは削除されないので手動で中身移動して消す)

## 日本語MOZC プロパティ
Vim（やVscodeなどのVimプラグイン）でEsc押したらIME無効化してほしいのでMOZCのGUIで以下の設定を追加しておく

入力文字なし Ctrl+[ IMEを無効化

## sophosインストール
[参考サイト](https://qiita.com/ayuri/items/342a0ddbd861ab1f5134)


以下URLにアクセスしてダウンロード。
 https://www.sophos.com/ja-jp/products/free-tools/sophos-antivirus-for-linux.aspx

```bash:bash$
cd ~/Downloads/
$ tar zxvf sav-linux-free-9.tgz
sophos-av/
sophos-av/sav.tar
sophos-av/talpa.tar
sophos-av/uncdownload.tar
sophos-av/install.sh

$ cd sophos-av
$ sudo ./install.sh
```

## package install
入れたいパッケージは好みで適当に入れる。

```bash:bash$
sudo apt install git
sudo apt install tmux
sudo apt install vim
sudo apt install neovim
sudo apt install zsh
sudo apt install curl
sudo apt install catfish
sudo apt install gawk
sudo apt install ansible
sudo apt install xsel
sudo apt install tree
sudo apt install gparted

```


## Chromeをインストール
firefox開いて、chrome検索してダウンロードしてインストール。

```bash:bash$
sudo apt install gdebi-core
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo gdebi google-chrome-stable_current_amd64.deb
```

## shell extensions

```bash:bash$
sudo apt install gnome-tweak-tool
sudo apt install gnome-shell-extensions
sudo apt install chrome-gnome-shell 
```

https://extensions.gnome.org/

chromeで上記URL(extentions)開いて、
好きな拡張をonにする。

- Extensions
- Dash to Panel
- Switcher

## vscode install
chromeで公式ページからダウンロードしインストール
Sync Setting拡張入れて同期したりすると便利。

## ~~dnsmasq install~~
~~いれたら53ポート使用済みって言われた。lsof -i:53　をみたらsystemd-resolveと競合してた。
/etc/hosts　読み取って名前解決してくれるのでdnsmasq不要だった。~~


## virtualbox とvagrant 仮想化設定
### virtualbox と vagrant install
ブラウザ開いて公式からdebおとして順番に入れる。

### vagrant plugin install

```bash:bash$
vagrant plugin install vagrant-vbguest 
vagrant plugin install vagrant-hostmanager
sudo vi /etc/sudoers.d/vagrant_hostmanager
```

```/etc/sudoers.d/vagrant_hostmanager
Cmnd_Alias VAGRANT_HOSTMANAGER_UPDATE = /bin/cp <home-directory>/.vagrant.d/tmp/hosts.local /etc/hosts
%<admin-group> ALL=(root) NOPASSWD: VAGRANT_HOSTMANAGER_UPDATE                                                    
```

### vagrant
あとは孫のVMを作ったり壊したりを、ubuntuの端末上のコマンド（vagrantfile編集）だけでできます。

```bash:bash$
## 作業ディレクトリ作成
mkdir cent7_test 
cd cent7_test

## box指定して初期化、
vagrant init centos/7

## 必要に応じて設定編集
vi vagrantfile

## 起動
vagrant up

## リロード
vagrant reload

## 終了
vagrant halt

```

### 設定ファイル
各VMで使うドットファイルやビルドスクリプトをGitで管理する。
(tmux・zsh・vimなどの設定をいろんな記事とか参考にしつつ育てます。)
繰り返す環境構築はansibleで極力自動化。