3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ローカルPC上にLinux仮想環境を構築する

Last updated at Posted at 2021-02-03

経緯

ドットインストールで「git入門」の学習をしようとしたところ、Linux環境が必要とのことだったため構築。
何年か前に一度構築したことがあったが、手順は完全に頭から消えていた。

一番参考になったのはこちらのページ。わかりやすい。
【Linux環境構築】VagrantとVirtualBoxとは?使い方を初心者向けに解説!

環境

ローカルPCのOS:Windows10
仮想マシンのOS:CentOS 7.0

VirtualBoxをインストール

よくわからないが、とりあえず言われるがままに謎の箱をインストール。

ローカルPCはWindows10なので、Windows hostsを選択。

Vagrantをインストール

こちらもよくわからないまま、インストール。

HashiCorpという会社が開発しているらしく、めっちゃ日本っぽいやんと思ったら、創業者のMitchell Hashimotoはやはり日本人の血が入っているらしい。すげぇ。

ダウンロードページで、Windows用を選択。(ダウンロードに30分~1時間くらいかかった)

Vagrantの環境準備

まずはコマンドプロンプトを開いて、Vagrantがインストールされていることを確認。

コマンドプロンプト
> vagrant -v

Vagrant 2.2.14みたいなバージョンの数字がでればOK。

次に、フォルダをつくります。
なんとなくCドライブ直下にしました。

コマンドプロンプト
> mkdir C:\vagrant

CentOSのインストール

仮想環境として利用したい無償OSを探して、Vagrantの中にインストールします。

この中から適当に選んで、「Copy」ボタンを押してダウンロード用のURLをコピーしてきます。

VirtualBox用とも書いててそれっぽいこちらを選んでみました。
CentOS 7.0 x64 (Minimal, VirtualBox Guest Additions 4.3.28, Puppet 3.8.1 - see here for more infos)

もう一度コマンドプロンプトを開き、先ほど作成したフォルダに移動します。

コマンドプロンプト
> cd C:\vagrant

Vagrantに仮想マシン(OS)をインストールします。

コマンドプロンプト
> vagrant box add centos-7.0 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

addの後ろの「centos-7.0」はなんでもいいみたい。
URL部分はコピーしてきたものを貼り付けてください。

Progressが100%になって、Successfully added box 'centos-7.0' (v0) for 'virtualbox'!みたいなのが出たらインストール完了です。

再度コマンドプロンプトを開いて、Vagrantの初期化を行うコマンドを実行します。(「centos-7.0」はインストール時に付けた名前)

コマンドプロンプト
> cd C:\vagrant  (念のため)
> vagrant init centos-7.0

すると、C:\vagrantにVagrantfileなるものが作成されます。

作成されたVagrantfileをテキストエディタ(メモ帳でもなんでもOK)で開き、修正していきます。

修正するのは1ヶ所で、「config.vm.network "private_network", ip: "192.168.33.10"」の前の#を消すだけ。

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "centos-7.0"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine and only allow access
  # via 127.0.0.1 to disable public access
  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"  ←ここのコメントアウト(#)を外す

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Enable provisioning with a shell script. Additional provisioners such as
  # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
end

仮想マシンを起動

こちらのコマンドで仮想マシンを起動します。

コマンドプロンプト
> vagrant up

ところが、ここでエラーが発生。。

Stderr: VBoxManage.exe: error: Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter #2' (VERR_INTNET_FLT_IF_NOT_FOUND).
VBoxManage.exe: error: Failed to attach the network LUN (VERR_INTNET_FLT_IF_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

ググったところ、こちらの記事の手順で解消できました。

VirtualBox で Failed to open/create the internal network 'HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter' が出た時の対処

再度気を取り直して、vagrant upを実行すると、VirtualBoxにマウントできたみたいな内容のログが吐かれた。

仮想マシンの起動完了。

Vagrantから仮想マシンにログイン

vagrant upした後に、こちらのコマンドを実行。

コマンドプロンプト
> vagrant ssh

こんな感じで表示されたらログインできてます。

コマンドプロンプト
> vagrant ssh
c:\vagrant>vagrant ssh
Last login: Thu Jul 16 08:48:31 2015 from 10.0.2.2
Welcome to your Vagrant-built virtual machine.
[vagrant@localhost ~]$

例えば、pwdとかしてみると、カレントディレクトリがわかりました。

[vagrant@localhost ~]$ pwd
/home/vagrant
[vagrant@localhost ~]$

ちなみに、初期のユーザとパスワードはこのようになってるようです。

ユーザー パスワード
vagrant vagrant
root vagrant

ログアウト(exit)して、仮想マシンを停止(vagrant halt)しておきます。

コマンドプロンプト
[vagrant@localhost ~]$ exit
Abgemeldet
Connection to 127.0.0.1 closed.

c:\vagrant>vagrant halt
==> default: Attempting graceful shutdown of VM...

c:\vagrant>

VirtualBoxから仮想マシンにログイン

WindowsのスタートメニューからVirtualBoxを開きます。

2021-02-03.png

開くとvagrant~みたいなマシンが選択できるようになっているので、起動を押すとターミナルが開いてログインできます。

仮想マシンの言語設定

まずは、localeコマンドで今の言語がどのように設定されているか(環境変数)を確認します。

コマンドプロンプト
[vagrant@localhost home]$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

なぜかドイツ語っぽいので、英語に変更します。

コマンドプロンプト
[vagrant@localhost home]$ LANG=C

LANGという環境変数をC(英語)にするというような意味らしいです。

コマンドプロンプト
[vagrant@localhost home]$ locale
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

これで英語になりました。

仮想マシンの時刻設定

dateコマンドで時刻を表示してみます。

コマンドプロンプト
[vagrant@localhost home]$ date
Thu Feb  4 14:06:59 CET 2021

CET(中央ヨーロッパ時間)になってます。
タイムゾーンでも確認してみます。

コマンドプロンプト
[vagrant@localhost home]$ timedatectl status
      Local time: Thu 2021-02-04 14:20:54 CET
  Universal time: Thu 2021-02-04 13:20:54 UTC
        Timezone: Europe/Berlin (CET, +0100)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2020-10-25 02:59:59 CEST
                  Sun 2020-10-25 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2021-03-28 01:59:59 CET
                  Sun 2021-03-28 03:00:00 CEST

やはりヨーロッパっぽいので、日本のタイムゾーンに変更します。(途中でrootユーザのパスワードを入力する必要があります。)

コマンドプロンプト
[vagrant@localhost home]$ timedatectl set-timezone Asia/Tokyo
==== AUTHENTICATING FOR org.freedesktop.timedate1.set-timezone ===
Authentication is required to set the system timezone.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[vagrant@localhost home]$

もう一度タイムゾーンを確認すると、、

コマンドプロンプト
[vagrant@localhost home]$ timedatectl status
      Local time: Thu 2021-02-04 22:23:59 JST
  Universal time: Thu 2021-02-04 13:23:59 UTC
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[vagrant@localhost home]$ date
Thu Feb  4 22:24:49 JST 2021

日本時間になりました。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?