Linux 成分が不足してきたので久しぶりにデスクトップを構築してみる。
ISO 入手から UEFI boot の USB メモリ作成
SystemRescueCd がよい
Rufas で起動する USB メモリを作成する
パーティション構成とターゲットシステムの種類を GPT UEFI コンピュータ用のパーティション構成を選択するべし
起動
USB メモリを差し込んで PC を起動し、del キーで UEFI 画面に入る。
UEFI の起動メニューから USB メモリを選択して SystemRescueCd を起動する。
> efibootmgr # UEFIモードで起動したか確認
> passwd # sshログイン用のパスワードを決める
> startx
> ifconfig # ip確認
# Handbook(Preparing the disks)
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks
# parted /dev/sda
(parted) print
Model: ATA ST3500418AS (scsi)
Disk /dev/sda: 476940MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1.00MiB 129MiB 128MiB efi boot, esp
2 129MiB 641MiB 512MiB linux-swap(v1) primary
3 641MiB 102401MiB 101760MiB gentoo
# mkswap /dev/sda2
# swapon /dev/sda2
# mkfs.ext4/dev/sda3
# mount /dev/sda3 /mnt/gentoo
# mkfs.vfat /dev/sda1
# mkdir /mnt/gentoo/boot
# mount /dev/sda1 /mnt/gentoo/boot
Installing the Gentoo installation files
clock 設定。
# ntpd -q -g
Stage3 の download と解凍
# cd /mnt/gentoo
# wget http://ftp.jaist.ac.jp/pub/Linux/Gentoo/releases/amd64/autobuilds/20170831/stage3-amd64-20170831.tar.bz2
# tar xvjpf stage3-\*.tar.bz2 --xattrs --numeric-owner
portage 設定
# nano -w /mnt/gentoo/etc/portage/make.conf
CFLAGS="-march=native -O2 -pipe"
# Use the same settings for both variables
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j5" # 4 コアなので
Installing the Gentoo base system
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Base
mirror 設定
日本のサーバーを選択
# mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
repository 設定
ここよくわからぬ
# mkdir /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
chroot 準備
# cp -L /etc/resolv.conf /mnt/gentoo/etc/
# mount -t 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
chroot
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) $PS1"
(chroot) livecd / #
構築
# emerge-webrsync
# eselect news read
# emerge --ask --update --deep --newuse @world
profile 選択は後で起動するようになってからやればいいのでここではやらない。
timezone。
# echo "Asia/Tokyo" > /etc/timezone
# emerge --config sys-libs/timezone-data
nano でなくて vim を使いたいので入れとく。
# emerge -av vim
locale。日本語を有効にして、システムは en_us.UTF-8 に。
# vim /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.EUC-JP EUC-JP
ja_JP.UTF-8 UTF-8
# locale-gen
# eselect locale list
Available targets for the LANG variable:
[1] C
[2] en_US.utf8 \*
[3] ja_JP
[4] ja_JP.eucjp
[5] ja_JP.ujis
[6] ja_JP.utf8
[7] japanese
[8] japanese.euc
[9] POSIX
[ ] (free form)
Configuring the Linux kernel
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel
source
# emerge --ask sys-kernel/gentoo-sources
genkernel
boot パーティションは分けなかった。
# emerge --ask sys-kernel/genkernel
# genkernel all # 長時間かかる
# emerge --ask sys-kernel/linux-firmware
Configuring the system
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/System
/etc/fstab
/dev/sda3 / ext4 noatime 0 1
# EFI。EFI 起動するときに使ったデバイスでないといかん
#/dev/sda1 /boot vfat noatime 0 1
/dev/sdb2 /boot vfat noatime 0 1
/dev/cdrom /mnt/cdrom auto noauto,ro 0 0
/dev/sda2 none swap sw 0 0
network
# vim /etc/conf.d/hostname
# vim /etc/conf.d/net
config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"
routes_eth0="default via 192.168.0.1"
# emerge --ask --noreplace net-misc/netifrc
# cd /etc/init.d
# ln -s net.lo net.eth0
# rc-update add net.eth0 default
root password
# root passwd
Installing system tools
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Tools
logger
# emerge --ask app-admin/sysklogd
# rc-update add sysklogd default
cron
# emerge --ask sys-process/cronie
# rc-update add cronie default
sshd
# rc-update add sshd default
Configuring the bootloader
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Bootloader
efibootmgr ではまる
https://wiki.gentoo.org/wiki/EFI_stub_kernel
https://wiki.gentoo.org/wiki/Efibootmgr
# emerge --ask sys-boot/efibootmgr
# mkdir -p /boot/efi/boot
# cp /boot/kernel-genkernel-x86_64-4.12.5-gentoo /boot/efi/boot/bootx64.efi
# efibootmgr -c -d /dev/sda -p 1 -L "Gentoo" -l "\efi\boot\bootx64.efi" initrd='\initramfs-genkernel-x86_64-4.12.5-gentoo'
EFI variables are not supported on this system.
ぐぬぬ。
# mount | grep efivars
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
mount: mount point /sys/firmware/efi/efivars does not exist
EFI モードになっていないぽい?
UEFI 軌道の usb メモリの作成ができていない?
minimal.iso じゃなくて livedvd.iso で起動して続きからやってみる。
SystemRescueCd
efi がリードオンリー
# efibootmgr -c -d /dev/sdb -p 2 -L "Gentoo" -l "\efi\gentoo\kernel-genkernel-x86_64-4.12.5-gentoo" initrd='\efi\gentoo\initramfs-genkernel-x86_64-4.12.5-gentoo'
Could not prepare Boot variable: Read-only file system
# mount -o remount /sys/firmware/efi/efivars -o rw,nosuid,nodev,noexec,noatime
https://wiki.archlinuxjp.org/index.php/EFISTUB
# efibootmgr -c -d /dev/sdb -p 2 -L "Gentoo" -l "/EFI/gentoo/kernel-genkernel-x86_64-4.12.5-gentoo" -u "root=/dev/sda3 rw initrd=/EFI/gentoo/initramfs-genkernel-x86_64-4.12.5-gentoo"
BootCurrent: 000C
Timeout: 0 seconds
BootOrder: 0001,0000,000C,000D,0008,0009
Boot0000* Windows Boot Manager
Boot0008* CD/DVD Drive
Boot0009* Hard Drive
Boot000C* UEFI: Sony Storage Media PMAP
Boot000D* ubuntu
Boot0001* Gentoo
しかし、起動するとカーネルパニック。うまくいかぬ。
GRUB2 のシェルから起動
https://jp.linux.com/news/linuxcom-exclusive/418274-lco20140625
SystemRescueCd の起動時の grub メニューで c を押して grub のシェルに入る。
grub> ls (hd2,gpt2)/
efi
grub> set root=(hd2,gpt2)
grub> linux /efi/gentoo/kernel-genkernel-x86_64-4.12.5-gentoo root=/dev/sda3
grub> initrd /efi/gentoo/initramfs-genkernel-x86_64-4.12.5-gentoo
起動できた。カーネルパニックになるのはブートパラメーターの与え方が間違っているぽい。
efibootmgr
うまくいった手順。
-u でカーネルパラメーターを指定する?
# mount -o remount /sys/firmware/efi/efivars -o rw,nosuid,nodev,noexec,noatime
# efibootmgr -c -d /dev/sdb -p 2 -L "Gentoo" -l "/EFI/gentoo/kernel-genkernel-x86_64-4.12.5-gentoo1" -u "root=/dev/sda3 rw initrd=/EFI/gentoo/initramfs-genkernel-x86_64-4.12.5-gentoo"
なんとか起動。
Finalizing
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Finalizing
eth0 の修正
net.eth0 で起動するように enp3s0 を修正する。
/etc/udev/rules.d/50-ether.rules
SUBSYSTEM=="net", ATTR{address}=="XX:XX:XX:XX:XX:XX", NAME="eth0"
# udevadm test /sys/class/net/enp3s0
changing net interface name from 'enp3s0' to 'eth0'
# /etc/init.d/net.eth0 start
# ping www.google.com
...
user 追加
# useradd -m -G users,wheel,audio -s /bin/bash larry
# passwd larry
ssh で外部から新しく作ったユーザーでアクセスできることを確認。
shell 設定
/etc/inputrc
set bell-style none
"\C-n":history-search-forward
"\C-p":history-search-backward
完成
リモートから ssh ログインできるところまでできた。
efibootmgr 周りがなんかドキュメントが間違っている気がするが誰も使っていないのであろうか。
その他
追加インストールメモ。
eix
USE=sqlite
# emerge -av eix
/etc/cron.daily
eix-sync
cpuflag
# emerge -av app-portage/cpuid2cpuflags
$ cpuinfo2cpuflags-x86
CPU_FLAGS_X86="aes avx fma3 fma4 mmx mmxext pclmul popcnt sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 xop"
ntp
# emerge -av ntp
# rc-update add ntpd default