Rokiのチラ裏

学生による学習のログ

Gentoo導入ログ

とてつもなく自由*1になりたかったのでGentooを導入する事とした。

パーティション作成

fdisk /dev/sda

40GBを単純に三つに切り、boot、swap、rootで構成。 f:id:Rok1:20161024192324j:plain

フォーマット

mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda3
mkswap /dev/sda2
swapon /dev/sda2

マウント

mount /dev/sda3 /mnt/gentoo/
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot

時刻を合わせる

ntpdate ntp.nict.jp

Stage3を入手する

cd /mnt/gentoo
links www.gentoo.org/main/en/mirrors.xml

JPからiijを使う。今回はreleases/amd64/autobuilds/20161020/stage3-amd64-20161020.tar.bz2をダウンロード。展開。

tar xvjpf stage3-amd64-20161020.tar.bz2
rm -rf stage3-amd64-20161020.tar.bz2

portageを入手する

links www.gentoo.org/main/en/mirrors.xml

同じくiijを利用する。snapshots/portage-latest.tar.bz2をダウンロード。展開する。

tar xvjf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
rm -rf ortage-latest.tar.bz2

カーネルコンパイルの準備

CFLAGSのオプションを確認。

cc -march=native -E -v -&1 | grep cc1

march=haswellが確認できたため、make.confのCFLAGSに追加する。CFLAGSにおける最適化設定についてはこの辺りを参照。またhaswellオプションはGCC4.9.0以上から対応とのこと。

Intel Haswell CPU with 64-bit extensions, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2 and F16C instruction set support. - stackoverflow
nano -w /mnt/gentoo/etc/make.conf

CFLAGS="-O2 -march=haswell -pipe"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j9"

ミラーを設定。

mirrorselect -i -o >> /mnt/gentoo/etc/make.conf
mirrorselect -i -r -o >> /mnt/gentoo/etc/make.conf

近い場所を設定した。

tail -n 2 /mnt/gentoo/etc/make.conf

GENTOO_MIRRORS="http://ftp.iij.ad.jp/pub/linux/gentoo/"
SYNC="rsync://rsync.jp.gentoo.org/gentoo-portage"

DNS情報のコピー

cp -L /etc/resolv.conf /mnt/gentoo/etc

/procと/devをマウント

マウント先でも今の環境の情報を参照できるようにしておく。

mount -t proc none /mnt/gentoo/proc
mount --rbind /dev /mnt/gentoo/dev

ディスク上の環境へ移行

chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile
export PS1="(chroot) $PS1"

portageとlocaleの設定

emerge --sync
nano -w /etc/locale.gen
locale-gen

タイムゾーンの設定

cp /usr/share/zoneinfo/Japan /etc/localtime

カーネルインストール

emerge gentoo-sources

カーネルを設定する。ここら辺はハンドブックを見つつ。

cd /usr/src/linux
make menuconfig

カーネルビルド

make && make modules_install

-O2フラグを付与しているので取り敢えず気長に待つ。その後カーネルイメージを/bootにコピーする.

ls -l /usr/src/linux
cp arch/x86_64/boot/bzImage /boot/kernel-4.4.26-gentoo

fstabの編集

nano /etc/fstab

以下のように設定した。フロッピーディスクを使うことは考えられないので、コメントアウトした。 f:id:Rok1:20161024204848j:plain

ホスト名とネットワークの設定

まず適当なホスト名をつける。

nano -w /etc/conf.d/hostname

DHCPクライアントをインストールしブート時に自動的に接続するようにする。

emerge dhcpcd
cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 default

パスワードとキーマップなど

passwd
nano -w /etc/conf.d/hwclock

clock="local"

必要なシステムツールのインストール

emerge syslog-ng
rc-update add syslog-ng default
emerge logrotate

emerge mlocate

emerge --ask net-analyzer/nmap
echo ">=net-analyzer/nmap-6.25 gtk ipv6 lua nls ssl ncat ndiff nmap-update nping" >> /etc/portage/package.use

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

emerge grub
nano -w /boot/grub/grub.conf

title Gentoo Linux 4.4.26
root (hd0,0)
kernel /boot/kernel-4.4.26-gentoo root=/dev/sda3

title Gentoo Linux 4.4.26 (Rescue)
root (hd0,0)
kernel /boot/kernel-4.4.26-gentoo root=/dev/sda3 init=/bin/bb

grub2-mkconfig -o /boot/grub/grub.cfg
grub2-install /dev/sda

再起動

exit
umount -l dev/
umount -l proc/
reboot

CDイメージを抜く。

一般ユーザーを作る

useradd roki -d /home/roki
cd /home
mkdir roki 
chown -R roki:roki roki
passwd roki
emerge sudo
groupadd sudo
visudo
%sudo   ALL=(ALL) ALL

usermod -G sudo roki

仕上げ

仕上げとして、ディスプレイマネージャやGUI環境を構築できるようにしておく。

emerge boost
emerge app-misc/screen
emerge dev-vcs/git

現段階では何を入れようかまだ決めていないので、しばらくGentooではCUI生活を送ることとする。*2

参照

Handbook:X86 - Gentoo Wiki

*1:GNUの掲げる自由の意味ではない。Gentooプロプライエタリ・ソフトウェアなバイナリパッケージが存在する。

*2:GNOME 3は重いし、LXDEは何だか淡白に感じる。UI自体はOS Xに慣れているので、何かそういった観点から良いものはないだろうか…