7
0

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 5 years have passed since last update.

Hyper-V に Gentoo Linux を入れてみる

Posted at

1. はじめに

Docker を導入するので,Hyper-V を有効にしたのですが,よくよく考えなくても Hyper-V をいじったことがなかったので,取り敢えず Linux を入れて遊んでみます.WSL で Ubuntu を入れたので,Arch Linux か Gentoo Linux を入れようと思っていたところに,Qiita に Hyper-VにGentoo Linuxをinstallする が掲載されたので,Gentoo Linux をインストールすることにしました.いつもどおり,私の備忘録代わりのメモになります.

2. Hyper-V

コマンドプロンプトから systeminfo を実行して,Hyper-V の要件を満たすように BIOS(UEFI?) の
設定を変更します.設定 → アプリ → (アプリと機能) → プログラムと機能 → Windows 機能の有効化または無効化 から Hyper-V に,今は必要ないですが,Windows ハイパーバイザープラットフォーム にチェックを付けて機能を有効にします.再起動が求められるので,支持に従います.

Google 先生に軽く聞いたところ,最近の Hyper-V は 既定のスイッチ が作成されるので,仮想スイッチには,これを使います.仮想スイッチの外部,内部,プライベートなども暇をみて試してみたいです.

3. Gentoo Linux

基本的には,Gentoo AMD64 HandbookHyper-V のとおりに作業します.

前出の Qiita の記事 にあるとおり Ubuntu のインストールメディアを使います.ここ からダウンロードします.私は,WSL(Ubuntu) のターミナルで下記コマンドでダンロードしました.

$ cd ~/downloads/src (任意のディレクトリ)
$ curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04.1-desktop-amd64.iso
$ sha256sum ubuntu-18.04.1-desktop-amd64.iso

sha256sum でハッシュ値を求め,(http://releases.ubuntu.com/18.04/SHA256SUMS) のチェックサムと比較します.

3.1 仮想マシンの作成

スタートメニューから Hyper-V マネージャー を起動します.新規 → 仮想マシン から 仮想マシン新規作成ウィザード を起動して下記のように設定します(メモリやハードディスクの容量はお好みに).

  • 開始する前に
    → 次へ
  • 名前と場所の指定
    → 名前: Gentoo Linux (なんでもかまいません)
    → 仮想マシンを別のマシンに格納するにチェック
    → 場所: C:\Users\xxxx\VM\ (フォルダを指定)
    → 次へ
  • 世代の指定
    → 第 2 世代
    → 次へ
  • メモリの割り当て
    → 起動メモリ: 512 GB, 動的メモリ使用にチェック(デフォルト)
    → 次へ
  • ネットワークの構成
    → 接続: 既定のスイッチ
    → 次へ
  • 仮想ハードディスクの接続
    仮想ハードディスクを作成する
    → サイズ: 32G
    → 次へ
    • インストールオプション
      → ブート CD/DVD-ROM からオペレーティングシステムをインストールするにチェック入れる
      → イメージファイル: ubuntu-18.04.1-desktop-amd64.iso
      → 次へ
  • 要約
    → 完了

3.2 仮想マシンの設定

Hyper-V マネージャー 仮想マシン Gentoo Linux を選択すると,操作タブの下側に仮想マシン Gentoo Linux が表示されるので,設定のセキュリテイから セキュアブートを有効にする のチェックを外します.

3.3 インストール

操作タブの Gentoo Linux起動 → 接続 でコンソールが表示されます.しばらく待つと,XWindow(GUI) が 表示されるので,右クリックして open terminal を選択してターミナルを起動します.

3.3.0 前準備

プロキシ環境の場合,プロキシの設定をします.

# export http_proxy=http://xxx.xxxx.xxxx.xxx:port
# export https_proxy=http://xxx.xxxx.xxxx.xxx:port
# export RSYNC_PROXY=xxx.xxxx.xxxx.xxx:port

3.3.1 ディスクの設定

ハンドブックのとおりに下記のように設定します.

パーティション ファイルシステム サイズ 説明
/dev/sda1 (ブートローダ) 2M BIOSブートパーティション
/dev/sda2 fat32 (UEFI使用) 128M ブート/EFIシステムパーティション
/dev/sda3 (swap) 512M スワップパーティション
/dev/sda4 ext4 32G ルートパーティション
パーティションの作成
# lsblk (ディスクの確認 or fdisk -l)
# parted -a optimal /dev/sda
# mklabel gpt
# print
# rm N (N: パーティションが残っていれば削除)
# unit mib
# mkpart primary 1 3
# name 1 grub
# set 1 bios_grub on
# print
# mkpart primary 3 131
# name 2 boot
# mkpart primary 131 643
# name 3 swap
# mkpart primary 643 -1
# name 4 rootfs
# set 2 boot on
# quit
ファイルシステムの作成
# mkfs.vfat -F32 /dev/sda2
# mkfs.ext4 /dev/sda4
# mkswap /dev/sda3
# swapon /dev/sda3
マウント
# mkdir /mnt/gentoo
# mount /dev/sda4 /mnt/gentoo
# mkdir /mnt/gentoo/boot
# mount /dev/sda2 /mnt/gentoo/boot

3.3.2 Stage3 のインストール

日付の確認
# date

間違っていれば,修正します.

stage tarball のダウンロードと展開

残念ながら,links コマンドがないので,firefox で URL を確認して,wget で取得します.
firefox を立ち上げて,(プロキシの設定が必要なら行う) https://www.gentoo.org/downloads/#other-arches の Stage archives の Stage3 (一番上) の URL をコピーする.stage3-amd64-yyyymmddT...Z.tar.xz のようなファイル名になっていると思いますが,ハンドブック同様に stage3-amd64-<release>.tar.xz で表記します.

# cd /mnt/gentoo
# wget URL を貼り付け
# tar xpf stage3-amd64-<release>.tar.xz ==xattrs-include='*.*' ==numeric-owner
コンパイルオプションの設定
# vi /mnt/gentoo/etc/portage/make.conf
make.conf
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
LINGUAS="en ja"

3.3.3 ベースシステムのインストール

Gentoo ebuild リポジトリの設定
# mkdir /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portsge/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
DNS 情報のコピー
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
必要なファイルシステムのマウント
# mount --types proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys
# mount --make-rslave /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev
# mount --make-rslave /mnt/gentoo/dev

# test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
# mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
# chmod 1777 /dev/shm
新しい環境に入る
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"

Ubuntu のインストールメディアを使っているにで export PS1="(chroot) $PS1" でプロンプトの設定を変更しなくても chroot の環境と判別できますが,ハンドブックのとおりに指定しています.

ブートパーティションのマウント
# mkdir /boot
# mount /dev/sda2 /boot

/dev/sda2 を再度マウントするのが分かりませんが,ハンドブックの支持に従います.

Portage の設定 & システムの更新
# emerge-webrsync
# emerge --sync
# eselect news list
# eselect news read
# eselect profile list
# emerge --ask --update --deep --newuse @world
# emerge --depclean
タイムゾーンの設定
# echo "Asia/Tokyo" > /etc/timezone
# emerge --config sys-libs/timezone-data
ロケールの設定
# nano -w /etc/locale.gen
# locale-gen
# eselect locale list
# eselect locale set 4
# less /etc/env.d/02locale
# env-update && source /etc/profile && export PS1="(chroot) $PS1" (環境のリロード)
locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8

3.3.4 カーネルの構築

カーネルソースのインストール

amd64 ベースのシステムのカーネルは,sys-kernel/gentoo-sources パッケージを推奨してるようですが,利用できるバージョンの選択方法が Gentoo Linux 未経験者には敷居が高ったですw まさに一見さんお断りの雰囲気が漂っているように思いました.

emerge --ask sys-kernel/gentoo-sources でカーネルをインストールするのですが,この場合,4.15.52 がインストールされます.最新の 4.17.11(2018/08/03) をインストールするには,emerge --ask sys-kernel/gentoo-sources:4.17.11 とする必要があります.ebuild が gentoo-sources-4.17.11.ebuild なので emerge --ask sys-kernel/gentoo-sources-4.17.11 なんかにしたら怒られます.せめてどこかに明記して欲しかったです.カーネルの削除の項目でカーネルソースの保護の記述で気づきました.また,この方法は良くない (?) らしく /etc/portage/package.accept_keywords/ で指定するのがお作法みたいです.まだ,よくわかっていません.

# echo "sys-kernel/gentoo-sources ~amd64" >> /etc/portage/package.accept_keywords/gentoo-sources
# emerge --ask sys-kernel/gentoo-sources
# ls -al /usr/src/linux
ハードウェア情報の取得 (lspci)

必要ないような気もしますが,ハンドブックに従います.

# emerge --ask sys-apps/pciutils
カーネルの設定

ここでも,Linux に疎いので少しハマりました.make menuconfig/ から HYPERV を検索して,Selects (PARAVIRT)Depends on (HYPERV) の項目を y にしないと,設定項目が出てこないので,設定項目が出てこなければ確認します.

# cd /usr/src/linux
# make menuconfig

まず最初に,Selects PARAVIRT を有効にして,Depends on: HYPERV を有効にします.この 2 つを有効にすれば, Hyper-V の設定項目が表示されます.

PARAVIRT
Processor type and features
[*] Linux guest support
HYPERV
Device Drivers
 Microsoft Hyper-V guest support
  <*> Microsoft Hyper-V client drivers
  <*> Microsoft Hyper-V Utilities driver
  <*> Microsoft Hyper-V Balloon drivers

必要ない項目もあると思いますが,Handbook の設定と,Hyper-V の設定,前出の Qiita の記事 の設定を行います.

X Server を使う予定があれば,下記設定を追加します.

# nano -w /etc/portage/make.conf
make.conf
VIDEO_CARDS="fbdev"
カーネルのコンパイルおよびインストール
# make && make modules_install
# make install
```

##### initramfsのビルド

今回はビルドしていませんが,必要なら行います.

```bash
# emerge --ask sys-kernel/genkernel
# genkernel --install initramfs
```

#### 3.3.5 システムの設定

##### fstab の設定

```bash
# nano -w /etc/fstab
```

```:fstab
/dev/sda2               /boot           vfat            noatime         0 1
/dev/sda3               none            swap            sw              0 0
/dev/sda4               /               ext4            noatime         0 1

/dev/cdrom              /mnt/cdrom      auto            noauto,user     0 0
```

##### ネットワークの設定

ホスト名を設定します.

```bash
# nano -w /etc/conf.d/hostname
```

```bash:hostname
hostname="hostname"
```

ドメイン名の設定が必要なら,`/etc/conf.d/net` に設定を追加します.

IPアドレスとルーティングの設定をします.ここでは,dhcp でアドレスを取得します.

```bash
# emerge --ask --noreplace net-misc/netifrc
# nano -w /etc/conf.d/net
```

```bash:net
config_eth0="dhcp"
```

##### ネットワークの自動起動

```bash
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default
# nano -w /etc/hosts
```

```bash:hosts
127.0.0.1       hostname localhost
```

##### root パスワードの設定

```bash
# passwd

3.3.6 ツールのインストール

システムロガーのインストール
# emerge --ask app-admin/metalog
# rc-update add metalog default
cron デーモンのインストール
# emerge --ask sys-process/cronie
# rc-update add cronie default
ファイルのインデックス作成ツールのインストール
# emerge --ask sys-apps/mlocate
sshd デーモンの起動
# rc-update add sshd default
ファイルシステムツールのインストール
# emerge --ask sys-fs/dosfstools
dhcp クライアントのインストール
# emerge --ask net-misc/dhcpcd

3.3.7 ブートローダのインストール

ブートローダの設定

UEFI に GRUB(2) をインストールします.

# echo 'GRUB_PLATFOMS="efi-64"' >> /etc/portage/make.conf
# emerge --ask sys-boot:grub:2
# grub-install --target=x86_64-efi --efi-directory=/boot
# grub-mkconfig -o /boot/grub/grub.cfg
システムの再起動

再起動が終われば Gentoo が立ち上がっていると思います.

# exit
# cd
# umount -l /mnt/gentoo/dev{/shm,/pts,}
# umount -R /mnt/gentoo
# reboot

3.3.8 インストール後の設定

ユーザの作成をします.

# useradd -m -G users,wheel,audio -s /bin/bash user
# passwd user

インストールに使用した不要なファイルを削除します.

# rm stage3-amd64-<release>.tar.xz

あとは、適当に環境を構築して遊んでみます.

7
0
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
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?