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 Handbook と Hyper-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
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" (環境のリロード)
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
の設定項目が表示されます.
Processor type and features
[*] Linux guest support
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
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
あとは、適当に環境を構築して遊んでみます.