どうも、NIPPAです。
Linux修行として、Gentoo Linuxをインストールしてみます。
Virtual Boxにデュアルブート可能なインストール方法です。
Gentoo wikiを参考にしています。
- 前提
- 1. 事前準備
- 2. VMの設定
- 3. VMにGentooのLive CDをアタッチして、起動
- 4. Gentoo Linuxのインストール
- 5. ファイルシステムの作成
- 6. スワップパーティションの有効化
- 7. パーティションのマウント
- 8 日時の設定
- 9. stage tarballのインストール
- 10. コンパイルオプションの設定
- 11 Gentooベースシステムの設定
- 11.1 chrootする
- 11.2 Gentoo ebuild リポジトリの設定
- 11.3 DNS 情報のコピー
- 11.4 必要なファイルシステムのマウント
- 11.5 新しい環境へchroot
- 11.6 ブートパーティションのマウント
- 11.7 Portageのインストール
- 11.8 Gentoo ebuildリポジトリの更新
- 11.9 プロファイルの選択
- 11.10 USE変数の設定
- 11.11 タイムゾーンの設定
- 11.12 ロケールの設定
- 11.13 カーネルソースのインストール
- 11.14 カーネルのビルド
- 11.15 fstabの編集
- 11.16 ホスト名の設定
- 11.17 ネットワークの設定
- 11.18 クロック設定
- 11.19 ランレベルの設定
- 11.20 rootユーザのパスワードの設定
- 11.21 ブートローダーの設定
- 11.22 システムのリブート
- 11.23 VirtualBoxのEFIの有効化
- 12. 最後に
前提
今回は、MacOSにVirtualBoxをインストールして、MacOS上のVirtual machine(VM)にGentoo Linuxをインストールします。
インストール環境など
VM: VirtualBox 6.1.0
ゲストOS : Gentoo Linux (amd64) : 2020-01-08
1. 事前準備
1.1 VirtualBoxのインストール
VirtualBoxの公式サイトから、MacOS用のdmg(disk image file)をダウンロードし、インストールする。
MacOS 10.13以上だと、「システム環境設定」→「セキュリティ&プライバシー」→下の段の「VitualBox」を許可しないとインストールが失敗する。
1.2 Gentooのディスクイメージのダウンロード
Gentooの公式サイトから、Live environmentsをダウンロードする。
今回は、64bit OSを使いたいので、amd64/x86_64のMinimal Installation CDを使用する。
2. VMの設定
今回は、最小スペックで作成する。VMなので、後ほど変更もできる。
構成
CPU: 1 CPU
Memory size(RAM): 1024 MB
Disk: 8GB (VDI/Dynamically allocated)
DiskはVirtual Disk imageで動的な割当で作成。変更しない場合は、固定(fixed)でも良い。
3. VMにGentooのLive CDをアタッチして、起動
3.1 VMにGentooのLive CDをアタッチ
インストールするVMを選択し、
Storage
-> Controller:IDE IDE secondary Master
-> [Optical Drive]
をから、ダンロードしたGentoo live CDをアタッチする。
3.2 Boot Orderの設定
インストールするVMを選択し、
System
-> Boot Order
でOptical
、Hard Disk
の順に設定する。
3.3 VMの起動
インストールするVMを選択し、ツールバーもしくは右クリックのメニューからNormal Start
を選択して起動する。
BIOS画面でBootを聞かれるので、Enter
でOptical DiskからOSの起動をする。
起動時に、キーボードの
4. Gentoo Linuxのインストール
4.1 ネットワーク接続設定
基本的にはネットワークデバイスをLive CDから読み込むので、自動でネットワーク接続がされている。
ネットワークの接続確認(接続先はpingが通ればどこでもOK)
ping -c 3 www.gentoo.org
接続できない場合は、公式Wikiを参考に。
4.2 Diskの作成
今回のGPT(GUID Partition Table)構成は以下の通り。
Partition | File system | size | 説明 |
---|---|---|---|
/dev/sda1 | ブートローダー | 2MiB | BIOSブートパーティション |
/dev/sda2 | fat32 | 256MiB | EFIシステムパーティション |
/dev/sda3 | swap | 512MiB | スワップパーティション |
/dev/sda4 | ext4 | 残りのディスク | ルートパーティション |
fat32の最小は256MiBサイズであることに注意
まず、パーティションを作成するディスクの確認をする。
# fdisk -l
sda
が8GiBのディスクなので、sda
にパーティションを作成する。
parted
コマンドでパーティションの作成をする。
# parted -a optimal /dev/sda
パーティションテーブルの名前をつける。
(parted) mklabel gpt
unit
の設定をする。
(parted) unit mib
4.2.1 BIOSブートパーティションの作成
(parted) mkpart primary 1 3 # 1から3MiBをパーティションに区切る (parted) name 1 grub # パーティション1の名前をつける (parted) set 1 bios_grub on # BIOSブートパーティションに設定する (parted) print # 作成したパーティションの確認
4.2.2 ブートパーティションの作成
(parted) mkpart primary 3 259 (parted) name 2 boot (parted) print
4.2.3 スワップパーティションの作成
(parted) mkpart primary 259 771 (parted) name 3 swap (parted) print
4.2.4 ルートパーティションの作成
(parted) mkpart primary 771 -1 (parted) name 4 rootfs (parted) print
4.2.5 EFIシステムの設定
ブートパーティションをEFIシステムパーティションとして設定する。
(parted) set 2 boot on
最終的に以下のようになる。
(parted) print Model: ATA Block Device (scsi) Disk /dev/sda: 8192MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1.00MiB 3.00MiB 2.00MiB grub bios_grub 2 3.00MiB 259MiB 256MiB boot boot, esp 3 259MiB 771MiB 512MiB swap 4 771MiB 2000MiB 19.4GiB rootfs
5. ファイルシステムの作成
BIOSブートパーティションは空領域である必要があります。なので、/dev/sda1
はフォーマットしません。
# mkfs.vfat -F32 /dev/sda2 # mkfs.ext4 /dev/sda4
6. スワップパーティションの有効化
スワップ領域を初期化する。
# mkswap /dev/sda3
スワップを有効化する。
# swapon /dev/sda3
7. パーティションのマウント
7.1 ルートパーティションのマウント
# mount /dev/sda4 /mnt/gentoo
7.2 espパーティション(ブートパーティション)のマウント
場所を間違えないように注意してください。
# mkdir /mnt/gentoo/boot # mount /dev/sda2 /mnt/gentoo/boot
8 日時の設定
日時が大幅にずれていると、ファイルをダウンロードできない。
日時の確認
# date
日時の手動設定
# date [MMDDhhmmYYYY]
または
# date --set "YYYY-MM-DD hh:mm:ss"
9. stage tarballのインストール
# cd /mnt/gentoo # links https://www.gentoo.org/downloads/mirrors/
download
-> adm64
-> stage fileをダウンロードする。
または、
# wget http://distfiles.gentoo.org/releases/amd64/autobuilds/20200112T214502Z/stage3-amd64-20200112T214502Z.tar.xz
でダウンロードする。
ダウンロードしたstage tarballファイルを検証する。
# openssl dgst -r -sha512 stage3-amd64-20200112T214502Z.tar.xz
stage tarballファイルを展開する。
# tar xpvf stage3-amd64-20200112T214502Z.tar.xz --xattrs-include='*.*' --numeric-owner
10. コンパイルオプションの設定
make.confを設定する。
# nano /mnt/gentoo/etc/portage/make.conf
# すべての言語において設定するコンパイラフラグ COMMON_FLAGS="-march=native -O2 -pipe" # 同じ設定を両方の変数に使用 CFLAGS="${COMMON_FLAGS}" CXXFLAGS="${COMMON_FLAGS}" # makeのオプションを必要に応じてつける。CPU+1を推奨。 MAKEOPTS="-j2"
11 Gentooベースシステムの設定
11.1 chrootする
mirrorselect
でミラーを選択する。
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf # cat /mnt/gentoo/etc/portage/make.conf
手動で設定する場合は、make.conf内にGENTOO_MIRRORS
変数の設定にmirrorのURLを与えてば良い。
GENTOO_MIRRORS="[mirror URL]"
11.2 Gentoo ebuild リポジトリの設定
# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf # cat /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
ファイルの中身が、
[DEFAULT] main-repo = gentoo [gentoo] location = /var/db/repos/gentoo sync-type = rsync sync-uri = rsync://rsync.gentoo.org/gentoo-portage auto-sync = yes sync-rsync-verify-jobs = 1 sync-rsync-verify-metamanifest = yes sync-rsync-verify-max-age = 24 sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc sync-openpgp-key-refresh-retry-count = 40 sync-openpgp-key-refresh-retry-overall-timeout = 1200 sync-openpgp-key-refresh-retry-delay-exp-base = 2 sync-openpgp-key-refresh-retry-delay-max = 60 sync-openpgp-key-refresh-retry-delay-mult = 4 sync-webrsync-verify-signature = yes
11.3 DNS 情報のコピー
# cp -d /etc/resolv.conf /mnt/gentoo/etc
11.4 必要なファイルシステムのマウント
# mount --types proc /proc /mnt/gentoo/proc # mount --rbind /sys /mnt/gentoo/sys # mount --rbind /dev /mnt/gentoo/dev # mount --make-rslave /mnt/gentoo/sys # mount --make-rslave /mnt/gentoo/dev
systemdを使う場合、--make-rslave
が必要。
11.5 新しい環境へchroot
# chroot /mnt/gentoo /bin/bash # source /etc/profile # export PS1="(chroot) ${PS1}"
11.6 ブートパーティションのマウント
# mount /dev/sda2 /boot
すでにマウントしてある場合は、スキップ。
11.7 Portageのインストール
# emerge-webrsync
「/var/db/repos/gentoo/がない」エラーは無視する。
11.8 Gentoo ebuildリポジトリの更新
emerge-webrsyncコマンドはほぼ最新の(通常は24時間以内に作成される)スナップショットをインストールしているので、任意。
# emerge --sync
11.9 プロファイルの選択
# eselect profile list
ここでは、default/linux/amd64/17.1 (stable)
を選択した。
11.10 USE変数の設定
USE変数の確認。
# emerge --info | grep ^USE
USEフラグの詳細は/var/db/repos/gentoo/profiles/use.desc
を確認。
nano /etc/portage/make.conf
にUSEフラグを設定する。後ほど変更も可能。
USE="x gtk git curl networkmanager kde vim zip zlib"
11.11 タイムゾーンの設定
タイムゾーンの確認する。
# ls /usr/share/zoneinfo/
タイムゾーンをJapan
に設定する。
# echo "Japan" > /etc/timezone # emerge --config sys-libs/timezone-data
11.12 ロケールの設定
# nano /etc/locale.gen
ここでは、/etc/locale.gen
に
en_US.UTF-8 UTF-8 jp_JP.UTF-8 UTF-8
を記載。ロケールを生成し、設定・反映する。
# locale-gen # eselect locale list # eselect locale set [番号] # env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
11.13 カーネルソースのインストール
カーネルソースを/usr/src/
にインストールする。ソースの確認。
# emerge --ask sys-kernel/gentoo-sources # ls -l /usr/src/linux
11.14 カーネルのビルド
# emerge gentoo-sources # cd /usr/src/linux # make menuconfig # make && make modules_install # make install
lspci
コマンドでハードウェア情報を確認して、menuconfig
でカーネルのconfigurationを決める。
設定はgentoo公式wikiも参考にしてください。
11.15 fstabの編集
# nano -w /etc/fstab
ここでは以下を追記した。
/dev/sda2 /boot ext2 defaults,noatime 0 2 /dev/sda3 none swap sw 0 0 /dev/sda4 / ext4 noatime 0 1
11.16 ホスト名の設定
/etc/conf.d/net
を作成して、ホスト名を記載する。
dns_domain_lo="[Host Name]"
11.17 ネットワークの設定
DHCPの設定をするために、現在のネットワークをifconfig
で確認をする。
/etc/conf.d/net
にinterface名ごとに記載する。
以下、一例。
config_eth0="dhcp"
DHCPクライアントのインストール。
# emerge --ask net-misc/dhcpcd
指定IPを利用する場合は、以下のように設定する。
config_enp0s3="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" routes_enp0s3="default via 192.168.0.1"
ネットワークを起動時に自動設定するために、以下を行う。
# cd /etc/init.d # ln -s net.lo net.eth0 # rc-update add net.eth0 default
11.18 クロック設定
UTC以外の時間設定の場合、/etc/conf.d/hwclock
に以下に変更する。
clock="local"
11.19 ランレベルの設定
systemlogger
# emerge --ask app-admin/sysklogd # rc-update add sysklogd default
cron
# emerge --ask sys-process/cronie # rc-update add cronie default
# rc-update add sshd default
11.20 rootユーザのパスワードの設定
passwd
11.21 ブートローダーの設定
UEFIを使用するため、/etc/portage/make.conf
に設定を追加する。
# echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
ブートローダーを取得する。
# emerge --ask --newuse --deep sys-boot/grub:2
間違えて、make.conf
を編集する前にブートローダーを取得してしまった場合は、
# emerge --ask --update --newuse --verbose sys-boot/grub:2
でアップデートする。
インストール
# grub-install --target=x86_64-efi --efi-directory=/boot --removable
Grub2の設定ファイルの作成
# grub-mkconfig -o /boot/grub/grub.cfg
11.22 システムのリブート
# exit lived ~# cd lived ~# umount -l /mnt/gentoo/dev lived ~# umount -R /mnt/gentoo lived ~# reboot
11.23 VirtualBoxのEFIの有効化
Enable EFI
にチェックを入れる。
12. 最後に
これでGentoo Linuxのインストールが完了です。
勉強することが多かったですが、インストールできました。
次は、このOSを使って、ラズパイ用ディスクを作成してみたいと思います。
ではでは、また次回。