Gentoo Linux を sysytemd でインストールする(裏)¶
概要¶
Gentoo のインストールに慣れている人向けに、筆者の手順を紹介します。 下記環境で決め打ち & プライベートネットワーク内サーバのベースを想定してます。
UEFI + GPT + SSD + btrfs + systemd
あまり一般的ではない所は、sysvinit & openrc を削除する部分とブートローダを使わない所でしょうか。
インストールの準備をする¶
インストールメディアは SystemRescueCd を使用する。
BIOSで該当のメディアがブートされるように設定し、インストールメディアをセットしブートする
キーボードの選択
対話シェルが起動した状態
DHCP 環境の場合は下記コマンドでIPアドレスが割り当てられた事を確認する
ip a
固定IPアドレスを振る例
# インターフェース名とIPアドレスは環境に合わせて置き換える
ip link set dev eno1 up
ip addr add 10.16.128.77/24 broadcast 10.16.128.255 dev eno1
ip route add default via 10.16.128.254
リモートからsshで接続してインストール作業を実施する為、コンソールよりsshdの起動とrootパスワードの設定をする
passwd
# 任意のパスワード aaa等を入力
# sshd が起動していない場合は起動する
/etc/init.d/sshd start
# 起動確認
pgrep -l sshd
コンソールで上記設定ができたら、リモートより SSH 接続をする
ディスクの確認¶
lsblk -f
blkid
パーティション設定 (GPT+UEFI)¶
先にコマンドで調べたストレージデバイスにパーティション、ファイルシステムを作成する。
gdiskコマンドを利用する
# /dev/sdaに作成する例
gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.0
The protective MBR's 0xEE partition is oversized! Auto-repairing.
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Command (? for help):p ※pで現在のパーティション状況を表示
Command (? for help): d ※不要なパーティションを削除する例
Partition number (1-6): 1
Command (? for help): o ※全てのパーティションを削除しGPTのパーティションテーブルを作成
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y
Command (? for help): n ※ESP(EFI System Partition)を作成する
Partition number (1-128, default 1):
First sector (34-500118158, default = 2048) or {+-}size{KMGTP}:
Last sector (2048-500118158, default = 500118158) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'
Command (? for help): n
Partition number (3-128, default 3):
First sector (34-500118158, default = 34605056) or {+-}size{KMGTP}:
Last sector (34605056-500118158, default = 500118158) or {+-}size{KMGTP}: +20G ※ルートとして標準の「Linux filesystem」に割り当てる。
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): p ※ 確認
Command (? for help): w ※ 変更を書き込んで終了
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.
ESPのフォーマット
mkfs.vfat -F32 /dev/sda1
ルート領域をbtrfsでフォーマット
mkfs.btrfs -f -L root /dev/sda2
Detected a SSD, turning off metadata duplication. Mkfs with -m dup if you want to force metadata duplication.
btrfs-progs v4.2.2
See http://btrfs.wiki.kernel.org for more information.
Performing full device TRIM (20.00GiB) ...
Label: root
UUID: 950dc1ea-feef-4ec8-9642-392bff95d977
Node size: 16384
Sector size: 4096
Filesystem size: 20.00GiB
Block group profiles:
Data: single 8.00MiB
Metadata: single 8.00MiB
System: single 4.00MiB
SSD detected: yes
Incompat features: extref, skinny-metadata
Number of devices: 1
Devices:
ID SIZE PATH
1 20.00GiB /dev/sda3
ディスクのマウント¶
# btrfs のサブボリュームを作成する
mkdir -p /mnt/btrfs
mount /dev/sda2 /mnt/btrfs
cd /mnt/btrfs
btrfs subvolume create gentoo
btrfs subvolume create usr-portage
btrfs subvolume create var-log
# ルート→サブボリューム→bootの順にマウントする
mount -odefaults,subvol=gentoo,compress=lzo,ssd_spread /dev/sda2 /mnt/gentoo
cd /mnt/gentoo
mkdir -p usr/portage var/log
mount -odefaults,subvol=usr-portage,compress=lzo,ssd_spread /dev/sda2 usr/portage
mount -odefaults,subvol=var-log,compress=lzo,ssd_spread /dev/sda2 var/log
mkdir -p /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
# 確認
btrfs filesystem show
btrfs sub list /mnt/gentoo
マウントの状態とルートのディスク容量を確認
df -hT
btrfs filesystem df /mnt/gentoo
# 意図しないサイズの場合、リブートをしてサイズが意図通りになる事がある
インストール用ファイル準備¶
作業領域にカレントを移し、最新のstage3のアーカイブをダウンロード、展開する
cd /mnt/gentoo
MIRROR='ftp://ftp.iij.ad.jp/pub/linux/gentoo/';
STAGE3=${MIRROR}/releases/amd64/autobuilds/$(curl -L ${MIRROR}/releases/amd64/autobuilds/latest-stage3-amd64-systemd.txt -s | awk '!/^\s*(#|$)/{print $1}');
curl -LO ${STAGE3}.DIGESTS;
curl -LO ${STAGE3};
STAGE3_FILENAME=$(echo ${STAGE3}|awk -F/ '{print $NF}')
RIGHT_HASH_VALUE=$(awk -v STAGE3_FILENAME=$STAGE3_FILENAME '/SHA512 HASH/{FLAG=1} $2==STAGE3_FILENAME {if(FLAG==1){ print; FLAG=0}}' $STAGE3_FILENAME.DIGESTS)
HASH_VALUE=$(sha512sum $STAGE3_FILENAME)
[ "$HASH_VALUE" = "$RIGHT_HASH_VALUE" ] && echo OK
tar xfp $STAGE3_FILENAME;
Portageスナップショットをダウンロードし、インストール
cd /mnt/gentoo
wget http://ftp.iij.ad.jp/pub/linux/gentoo/releases/snapshots/current/portage-latest.tar.bz2.md5sum
wget http://ftp.iij.ad.jp/pub/linux/gentoo/releases/snapshots/current/portage-latest.tar.bz2
md5sum -c portage-latest.tar.bz2.md5sum
tar xf /mnt/gentoo/portage-latest.tar.bz2 -C /mnt/gentoo/usr
make.confの設定¶
コンパイルオプションの設定とミラーサイトの選択を記述する
エディタで編集をする
vim /mnt/gentoo/etc/portage/make.conf
お好みで
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
# コア数 + 1 程度
MAKEOPTS="-j9"
# USEフラグ
USE="mmx sse sse2 cjk unicode nptl nptlonly threads nls systemd"
USE="${USE} acpi dbus hal xml pam nis nfs"
USE="${USE} -bindist -alsa -cups -gnome -gtk -kde -oss -perl -qt3 -qt4 -ruby -X"
LINGUAS="ja"
GENTOO_MIRRORS="ftp://ftp.iij.ad.jp/pub/linux/gentoo/ ftp://ftp.jaist.ac.jp/pub/Linux/Gentoo/"
# portage log
PORT_LOGDIR="/var/log/portage"
PORTAGE_ELOG_CLASSES="warn error log"
PORTAGE_ELOG_SYSTEM="save"
portage のシンク先の設定¶
gentoo.confの編集
mkdir /mnt/gentoo/etc/portage/repos.conf
vim /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /usr/portage
sync-type = rsync
sync-uri=rsync://rsync.jp.gentoo.org/gentoo-portage
auto-sync = yes
DNS情報のコピー¶
cp -L /etc/resolv.conf /mnt/gentoo/etc/
# 固定 IP アドレスを振っている場合は手動で編集
システムパーティションのマウント¶
mount -t proc none /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する¶
cd /mnt/gentoo && chroot /mnt/gentoo /bin/bash
source /etc/profile && export PS1="(chroot) $PS1"
Vimのインストール¶
インストール中の作業用に Vim をインストールする
mkdir /etc/portage/package.use
echo app-editors/vim python vim-pager lua luajit >> /etc/portage/package.use/vim
emerge -avt app-editors/vim
echo "set paste" > ~/.vimrc
デバイス確認系のツールをインストール¶
- ethtool:
sys-apps/ethtool
- lspci, lsmod:
pciutils
- lshw:
sys-apps/lshw
まとめてインストール
emerge -avt sys-apps/ethtool sys-apps/pciutils sys-apps/lshw
各種情報を出力し、メモをしておく
lspci -k
lsmod
lshw -short
カーネルソースをインストール¶
echo "sys-kernel/gentoo-sources symlink"> /etc/portage/package.use/gentoo
mkdir -p /etc/portage/package.keywords
echo "sys-kernel/gentoo-sources ~amd64" > /etc/portage/package.keywords/gentoo
emerge -avt gentoo-sources
ls -l /usr/src
カーネル構成設定¶
cd /usr/src/linux
make menuconfig
make menuconfig の KVM 用パラメータ
===================================
コンテナ用 ::
CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
UEFI の Linux カーネル設定オプション ::
CONFIG_RELOCATABLE=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y #手動
CONFIG_FB_EFI=y
CONFIG_FRAMEBUFFER_CONSOLE=y
UEFI Runtime Variables Support (efivarfs ファイルシステム - /sys/firmware/efi/efivars)。
CONFIG_EFIVAR_FS=y #手動
UEFI Runtime Variables Support (古い efivars sysfs インターフェイス - /sys/firmware/efi/vars)。このオプションは無効にしてください。
CONFIG_EFI_VARS=n #手動
GUID Partition Table GPT 設定オプション - UEFI サポートのために必須
CONFIG_EFI_PARTITION=y
UEFI用?
[*] Enable the block layer --->
Partition Types --->
[*] Advanced partition selection
[*] EFI GUID Partition support
Processor type and features --->
[*] EFI runtime service support
Firmware Drivers --->
EFI (Extensible Firmware Interface) Support -->
<*> EFI Variable Support via sysfs
UEFI,systemd,KVM ホスト用
Linux/x86 4.4.6-gentoo Kernel Configuration
General setup --->
<*> Kernel .config support
[*] Enable access to .config through /proc/config.gz
[*] Memory placement aware NUMA schedule
[*] Automatically enable NUMA aware memory/task placement (NEW)
[*] Namespaces support --->
[*] Configure standard kernel features (expert users) --->
[*] Enable loadable module support --->
[ ] Forced module loading
[*] Module unloading
[*] Forced module unloading
[*] Module versioning support
[ ] Source checksum for all modules (NEW)
[ ] Module signature verification (NEW)
-*- Enable the block layer --->
IO Schedulers --->
<*> Deadline I/O scheduler
<*> CFQ I/O scheduler
Default I/O scheduler (deadline) ---> ※SSDの場合は deadlineで。No-opにすると速いが大きなファイルの読み書きで他のタスクに影響が出る HDDの場合はCFQのままで。
Processor type and features --->
[*] Linux guest support --->
[*] Enable paravirtualization code ※KVM Guest
[*] Paravirtualization layer for spinlocks ※KVM Guest
[ ] Xen guest support
[*] KVM Guest support (including kvmclock) ※KVM Guest
[*] Paravirtual steal time accounting
Processor family (Generic-x86-64) --->
(X) Core 2/newer Xeon
[*] Supported processor vendors --->
[*] Support Intel processors
[*] Enable Maximum number of SMP Processors and NUMA Nodes
<*> CPU microcode loading support ※ CPUのマイクロコードアップデートに必要
[*] Intel microcode loading support ※ CPUのマイクロコードアップデートに必要
[*] Numa Memory Allocation and Scheduler Support
[*] Old style AMD Opteron NUMA detection
[*] ACPI NUMA detection
[*] Enable KSM for page merging ※ KVM 使用時にメモリ圧縮の為に ksm/ksmtuned サービスと一緒に使う
[*] EFI runtime service support ※ UEFI起動に必要
[*] EFI stub support ※ UEFI起動に必要
[ ] EFI mixed-mode support ※ 不要
[*] Networking support --->
Networking options --->
-*- TCP/IP networking
<M> IP: AH transformation ※iptables
<M> IP: ESP transformation ※iptables
<M> IP: IPComp transformation ※iptables
<*> IP: IPsec transport mode ※iptables
<*> IP: IPsec tunnel mode ※iptables
<M> IP: IPsec BEET mode ※iptables
<*> Large Receive Offload (ipv4/tcp) (NEW) ※iptables
<*> INET: socket monitoring interface ※iptables
<M> UDP: socket monitoring interface ※iptables
<*> The IPv6 protocol ---> ※iptables
[*] Network packet filtering framework (Netfilter) ---> ※iptables
[*] Advanced netfilter configuration
Core Netfilter Configuration ---> ※iptables
<*> nfmark target and match support
<*> ctmark target and match support
<*> CHECKSUM target support
<*> "addrtype" address type match support
<*> "comment" match support
<*> "conntrack" connection tracking match support
<*> "hl" hoplimit/TTL match support
<*> "iprange" address range match support
<*> "length" match support
<*> "limit" match support
<*> "mac" address match support
<*> "multiport" Multiple port match support
IP: Netfilter Configuration --->
<*> IP tables support (required for filtering/masq/NAT)
<*> "ah" match support
<*> "ecn" match support
<*> "rpfilter" reverse path filter match support
<*> "ttl" match support
<*> IPv4 NAT
<*> MASQUERADE target support
<*> NETMAP target support
<*> REDIRECT target suppor
<*> ARP tables support
<*> ARP packet filtering
<*> ARP payload mangling
<*> Ethernet Bridge tables (ebtables) support ---> ※802.1d Ethernet Bridgingを先にチェック
<*> ebt: mark target support
<*> 802.1d Ethernet Bridging ※VMが使用するインターフェースブリッジで使用
[*] IGMP/MLD snooping (NEW)
[*] VLAN filtering
<*> 802.1Q/802.1ad VLAN Support ※VMが使用するインターフェースブリッジで使用
[*] GVRP (GARP VLAN Registration Protocol) support ※VMが使用するインターフェースブリッジで使用
[*] MVRP (Multiple VLAN Registration Protocol) support ※VMが使用するインターフェースブリッジで使用
[ ] Amateur Radio support --->
< > RF switch subsystem support --->
<*> Plan 9 Resource Sharing Support (9P2000) ---> ※KVMゲスト VirtFSに必要 Virtualization driversを先にチェック
<*> 9P Virtio Transport ※KVMゲスト VirtFSに必要 Virtualization driversを先にチェック
<*> CAIF support --->
Device Drivers --->
[*] Block devices --->
<*> DRBD Distributed Replicated Block Device support ※DRBDを使う場合
[*] DRBD fault injection ※DRBDを使う場合
<*> Virtio block driver ※KVMゲスト必須 Virtio driversを先にチェック
SCSI device support --->
[*] SCSI low-level drivers ---> ※サーバでLSIのRAIDカードを使っている場合
[*] LSI Logic New Generation RAID Device Drivers
<*> LSI Logic Management Module (New Driver)
<*> LSI Logic MegaRAID Driver (New Driver)
<*> LSI Logic Legacy MegaRAID Driver
<*> LSI Logic MegaRAID SAS RAID Module
<*> virtio-scsi support (EXPERIMENTAL) ※KVMゲスト
[*] Multiple devices driver support (RAID and LVM) ---> ※LVMを使う場合
<*> Device mapper support
<*> Crypt target support
<*> Snapshot target
<*> Thin provisioning target
<*> Mirror target
<*> Multipath target
<*> I/O Path Selector based on the number of in-flight I/Os
<*> I/O Path Selector based on the service time
[*] Network device support --->
<M> Bonding driver support ※複数のインターフェースをまとめる場合
<M> Ethernet team driver support --->
<M> Broadcast mode support
<M> Round-robin mode support
<M> Random mode support
<M> Active-backup mode support
<M> Load-balance mode support
<*> MAC-VLAN support ※KVMホスト
<*> MAC-VLAN based tap driver ※KVMホスト
<*> Universal TUN/TAP device driver support ※KVMホスト
<*> Virtio network driver ※KVMゲスト 必須
<*> CAIF virtio transport driver ※KVMホスト 先に Networking support -> CAIF support をチェックする必要あり
<*> Host kernel accelerator for virtio net ※KVMホスト
[*] Ethernet driver support ---> ※必要に応じて
[*] Broadcom devices
{*} Broadcom NetXtremeII support
Character devices --->
<*> Virtio console ※KVMゲスト device virtio-serial を使ったシリアル接続をする時に必要 libvirtのシリアル接続には不要
<*> Hardware Random Number Generator Core support --->
<*> VirtIO Random Number Generator support※KVMゲスト
Serial drivers --->
<*> 8250/16550 and compatible serial support ※シリアル接続に必要
[*] Console on 8250/16550 and compatible serial port ※シリアル接続に必要
Graphics support --->
Direct Rendering Manager --->
<*> Kernel modesetting driver for MGA G200 server engines ※サーバのグラフィックカードで使われている事が多い lspciの結果を見る
<*> ATI Radeon
[*] Enable userspace modesetting on radeon (DEPRECATED)
<*> Cirrus driver for QEMU emulated device
< > Virtio GPU driver
[*] DMA Engine support --->
<*> Intel I/OAT DMA support
[*] Virtualization drivers ---> ※KVMゲスト 先にチェックする
Virtio drivers ---> ※KVMゲスト
<*> PCI driver for virtio devices ※KVMゲスト
[*] Support for legacy virtio draft 0.9.X and older devices
<*> Virtio balloon driver ※KVMゲスト
<*> Virtio input driver ※KVMゲスト
<*> Platform bus driver for memory mapped virtio devices ※KVMゲスト
[*] Memory mapped virtio devices parameter parsing ※KVMゲスト
Firmware Drivers --->
<*> BIOS update support for DELL systems via sysfs ※DELL機のみ
<*> Dell Systems Management Base Driver ※DELL機のみ
EFI (Extensible Firmware Interface) Support --->
< > EFI Variable Support via sysfs ※ UEFIブートに不要
File systems --->
[*] Ext3 extended attributes (NEW)
<*> The Extended 4 (ext4) filesystem
[*] Use ext4 for ext2/ext3 file systems
[*] Ext4 POSIX Access Control Lists
[*] Ext4 Security Labels ※KVMホスト
<*> XFS filesystem support
[*] XFS Quota support
[*] XFS POSIX ACL support
[*] XFS Realtime subvolume support
[*] XFS Verbose Warnings
<*> Btrfs filesystem support
[*] Btrfs POSIX Access Control Lists
[*] Dnotify support ※NFSを利用する時に必要
[*] Network File Systems --->
<*> NFS client support for NFS version 4
[*] NFS client support for NFSv4.1
<*> NFS server support ※NFSサーバを構築する場合
-*- NFS server support for NFS version 3
[*] NFS server support for NFS version 4
[*] Provide Security Label support for NFSv4 server
<*> Plan 9 Resource Sharing Support (9P2000) ※KVMゲスト VirtFS
[*] 9P POSIX Access Control Lists ※KVMゲスト VirtFS
[*] 9P Security Labels ※KVMゲスト VirtFS
Security options --->
[ ] Enable different security models
-*- Cryptographic API --->
<*> CRC32c INTEL hardware acceleration
<*> GHASH digest algorithm (CLMUL-NI accelerated)
<*> AES cipher algorithms (x86_64)
[*] Virtualization --->
<*> Kernel-based Virtual Machine (KVM) support ※KVMホスト
<*> KVM for Intel processors support ※KVMホスト
< > KVM for AMD processors support
[ ] Audit KVM MMU (NEW)
[*] KVM legacy PCI device assignment support (NEW) ※KVMホスト
<*> Host kernel accelerator for virtio net ※KVMホスト
カーネルをインストールする¶
カーネルconfigが終わったらコンパイル、インストールを実施する
make && make modules_install
make install
# initramfs?モジュール読み込み?面倒だから全部組み込みで!
systemd の適用¶
システムが systemd を使うように設定変更
# default/linux/amd64/13.0/systemd が選択されている事を確認
eselect profile list
# 例
[12] default/linux/amd64/13.0/systemd *
openrc と sysvinit を削除する
emerge -C sys-apps/sysvinit sys-apps/openrc
systemd 関連の USE フラグを変更する
mkdir /etc/portage/package.use
echo "sys-apps/systemd gnuefi importd curl lzma gcrypt sysv-utils" > /etc/portage/package.use/systemd
mkdir /etc/portage/package.keywords
echo "sys-apps/systemd ~amd64" > /etc/portage/package.keywords/systemd
echo "sys-apps/util-linux ~amd64" >> /etc/portage/package.keywords/systemd
echo "sys-libs/libseccomp ~amd64" >> /etc/portage/package.keywords/systemd
Python に sqlite の USEフラグ を付ける
echo "dev-lang/python sqlite gdbm ipv6 ncurses readline ssl threads xml" >> /etc/portage/package.use/python
mkdir /etc/portage/package.keywords
echo "dev-lang/python ~amd64" >> /etc/portage/package.keywords/python
パッケージのコンパイルし直し
emerge -avDN @world
emerge --depclean
fstabの修正¶
エディタで編集する
vim /etc/fstab
例
/dev/sda1 /boot vfat defaults,noatime 1 2
/dev/sda2 / btrfs defaults,noatime,subvol=gentoo,compress=lzo,ssd_spread,space_cache 0 1
/dev/sda2 /usr/portage btrfs defaults,noatime,subvol=usr-portage,compress=lzo,ssd_spread,space_cache 0 1
/dev/sda2 /var/log btrfs defaults,noatime,subvol=var-log,compress=lzo,ssd_spread,space_cache 0 1
ネットワーク設定¶
固定IPアドレス割り当て
vim /etc/systemd/network/eno1.network
[Match]
Name=eno1
Virtualization=no
[Network]
DHCP=no
DNS=10.16.128.1
Domains=usaturn.local
NTP=10.16.128.1
[Address]
Address=10.16.128.77
Broadcast=10.16.128.255
[Route]
Gateway=10.16.128.254
ネットワークデーモンをスタートアップに追加する
systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service
ステータスの確認
networkctl -a
networkctl status eno1
sshdの設定¶
とりあえず内部ネットワーク用にゆるく設定しとく
vim /etc/ssh/sshd_config
PermitRootLogin yes # rootログイン
UsePAM yes
PasswordAuthentication yes # パスワードログイン許可
RSAAuthentication no # ssh v1 不可
PubkeyAuthentication yes # ssh v2 許可
sshd 有効化
systemctl enable sshd
Created symlink from /etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib64/systemd/system/sshd.service.
rootのパスワードの設定¶
passwd
必要なパッケージをインストールする¶
ファイルシステムに btrfs を利用している場合は専用パッケージが必要
emerge -avt sys-fs/btrfs-progs
マイクロコードのアップデート
emerge -avt sys-kernel/linux-firmware
ブート設定¶
bootctl --path=/boot install
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/boot/EFI/Boot/BOOTX64.EFI".
Created EFI boot entry "Linux Boot Manager".
efibootmgr のインストール
emerge -avt sys-boot/efibootmgr
エントリの確認
efibootmgr -v
uefi 変数がカーネルでサポートされていて正しく動作していることを確認する
efivar -l
ブートローダ(grub, systemd-boot)を使わずに UEFI に直接カーネルを読ませるエントリを追加する
NEWVMLINUZ=$(ls -lt /boot|awk '/vmlinuz/{print $NF}'|head -1)
VERSION=$(echo $NEWVMLINUZ|awk 'BEGIN{FS="-"}{print $2}')
PARTUUID=$(blkid -s PARTUUID -o value /dev/sda2)
efibootmgr -d /dev/sda -p 1 -c -L "Gentoo ${VERSION}/GNU Linux" -l /${NEWVMLINUZ} -u "root=PARTUUID=${PARTUUID} rw reboot=warm"
# systemd の USE フラグに sysv-utils を使っている場合 はカーネルパラメータに init=/usr/lib/systemd/systemd reboot=warm" は不要
注釈
efibootmgr のその他使い方
ブート順の設定例 ::
efibootmgr -o 0007,0004,0000,0002,000A,0001,0003,0008,0009,0005,0006
UEFI エントリ削除 ::
efibootmgr -b 0007 -B
システムの再起動¶
再起動をするが、再起動する前にchrootを抜けmountした領域を外す必要がある
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount /mnt/gentoo{/boot,/sys,/proc,}
再起動を実施する
reboot
注釈
再起動後に問題があった場合 SystemRescueCd で chroot する所までのコマンド
mount /dev/sda2 /mnt/gentoo
mkdir -p /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
mount -t proc none /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
cd /mnt/gentoo && chroot /mnt/gentoo /bin/bash
env-update
source /etc/profile && export PS1="(chroot) $PS1"
名前解決の設定¶
/etc/resolv.conf
をインターフェース設定で生成される resolv.conf のシンボリックリンクにする
rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
ホスト名の設定¶
# hostnamectl set-hostname <HOSTNAME>
# /etc/hostname に書き込まれる
# FQDNは使わない。FQDNはhostsに書く
# 例
hostnamectl set-hostname afxw
# 確認
hostnamectl
ロケールの設定¶
ロケールの指定
# 使用可能なロケール一覧を確認する
localectl list-locales
# ja_JP.utf8 を指定
localectl set-locale LANG=ja_JP.utf8
キー配列の指定
localectl set-keymap jp106
確認
localectl
時刻の設定¶
タイムゾーンを Tokyo にする
timedatectl set-timezone Asia/Tokyo
Tokyo になった事を確認。また、RTC(hwclock)が UTC と同じ時刻である事を確認
timedatectl status
時刻同期の設定¶
systemd-timesyncd を有効にする。インターフェース設定に記述したものが使われる。
systemctl start systemd-timesyncd.service
systemctl status systemd-timesyncd.service
systemctl enable systemd-timesyncd.service
# 時刻の確認
timedatectl status
date
デフォルトエディタの設定¶
profile を編集する
vim /etc/profile
EDITOR=/usr/bin/vim
export EDITOR=${EDITOR:-/bin/nano} # この行の上に追加
ドットコマンドで profile を読み込む
. /etc/profile
sudoの設定¶
echo "app-admin/sudo -sendmail" >> /etc/portage/package.use/sudo
emerge -avt app-admin/sudo
visudo
%wheel ALL=(ALL) ALL
その他パッケージインストール¶
システムユーティリティ一括インストール
echo "app-misc/tmux vim-syntax" > /etc/portage/package.use/tmux
emerge -avt app-portage/gentoolkit net-dns/bind-tools sys-apps/dstat app-portage/pfl sys-apps/gptfdisk sys-apps/the_silver_searcher app-portage/eix app-shells/zsh dev-vcs/rcs app-misc/tmux
eix のインデックス作成
eix-update
設定完了後の確認¶
リブート
systemctl reboot
インストールしたパッケージの確認
eix -cI --selected
スタートアップの確認
systemctl list-unit-files|grep enabled
eix-sync の定期実行¶
eix-sync を実行するユニット eixsync.service を作成する
vim /etc/systemd/system/eixsync.service
[Unit]
Description=execute eix-sync
[Service]
Type=simple
ExecStart=/usr/bin/eix-sync
RemainAfterExit=no
eixsync.service が正常に実行できる事を確認する
# 実行
systemctl start eixsync.service
# ログの確認
systemctl status eixsync.service
journalctl -f -u eixsync
timer ユニットを作成する
vim /etc/systemd/system/eixsync.timer
# 毎朝 9 時に eixsync.service を実行する
[Unit]
Description=execute eix-sync
[Timer]
OnCalendar=*-*-* 9:30:00
Unit=eixsync.service
[Install]
WantedBy=multi-user.target
eixsync.timer を有効にする
systemctl daemon-reload
systemctl start eixsync.timer
systemctl status eixsync.timer
systemctl enable eixsync.timer
timer ユニット一覧を確認する
systemctl list-unit-files -t timer
systemctl list-timers
SSD の場合に実施する設定¶
fstrim コマンドを定期的に実行する
systemctl start fstrim.timer
systemctl status fstrim.timer
systemctl enable fstrim.timer
# timer ユニット一覧の確認
systemctl list-unit-files -t timer