Skip to content

Instantly share code, notes, and snippets.

@xiupos
Last active October 11, 2024 08:56
Show Gist options
  • Save xiupos/516ed4c66815fa8ea388dbaef2a99f20 to your computer and use it in GitHub Desktop.
Save xiupos/516ed4c66815fa8ea388dbaef2a99f20 to your computer and use it in GitHub Desktop.
Gentoo Linux インストールメモ

#gentooinstallbattle メモ

インストールメディア

Manjaro Install Media

wget -O disk.iso https://download.manjaro.org/gnome/24.1.0/manjaro-gnome-24.1.0-241001-linux610.iso
sudo dd bs=4M if=disk.iso of=/dev/sdx status=progress && sync

インストール作業の途中で中断, 再開

#
# 中断
#

exit

cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
# shutdown -h now
# or
# reboot

#
# 再開
#

swapon /dev/nvme0n1p2

mount /dev/nvme0n1p3 /mnt/gentoo

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
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run

chroot /mnt/gentoo /bin/bash
###
source /etc/profile
export PS1="(chroot) ${PS1}"

mount /dev/nvme0n1p1 /boot

Gentoo Linux のインストール

#
# ディスクの準備
#

# UEFI 向けに GPT でディスクをパーティショニングする
sgdisk -z /dev/nvme0n1
sgdisk -n 1:0:+512M -t 1:ef00 -c 1:"EFI System" /dev/nvme0n1
sgdisk -n 2:0:+32G -t 2:8200 -c 2:"Linux swap" /dev/nvme0n1
sgdisk -n 3:0: -t 3:8300 -c 3:"Linux filesystem" /dev/nvme0n1

# ファイルシステムを作成する
mkfs.vfat -F 32 /dev/nvme0n1p1
mkfs.btrfs -f /dev/nvme0n1p3
mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2

# ルートパーティションのマウント
mkdir -p /mnt/gentoo
mount /dev/nvme0n1p3 /mnt/gentoo

#
# Gentooインストールファイルをインストール
#

# 日時を設定する
ntpd -q -g

# stage tarball をダウンロードする
cd /mnt/gentoo
# https://ftp.iij.ad.jp/pub/linux/gentoo/releases/amd64/autobuilds/current-stage3-amd64-desktop-systemd/
wget https://ftp.iij.ad.jp/pub/linux/gentoo/releases/amd64/autobuilds/current-stage3-amd64-desktop-systemd/stage3-amd64-desktop-systemd-20230319T170303Z.tar.xz

# stage tarball を展開する
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

# コンパイルオプションを設定する
cat << EOF > /mnt/gentoo/etc/portage/make.conf
FEATURES="buildpkg parallel-fetch parallel-install distcc getbinpkg"
EMERGE_DEFAULT_OPTS="--jobs=5 --tree --verbose"

PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"

LC_MESSAGES=C

MAKEOPTS="--jobs=5 --load-average=5"

COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="\${COMMON_FLAGS}"
CXXFLAGS="\${COMMON_FLAGS}"
FCFLAGS="\${COMMON_FLAGS}"
FFLAGS="\${COMMON_FLAGS}"

ACCEPT_KEYWORDS="~amd64"
#ACCEPT_LICENSE="* -@EULA"

USE="cjk clang curl ffmpeg gles2 llvm-libunwind offensive sixel vaapi xinerama zstd"

GENTOO_MIRRORS="https://ftp.jaist.ac.jp/pub/Linux/Gentoo/ https://ftp.riken.jp/Linux/gentoo/ http://ftp.iij.ad.jp/pub/linux/gentoo/ http://ftp.jaist.ac.jp/pub/Linux/Gentoo/ http://ftp.riken.jp/Linux/gentoo/"

GRUB_PLATFORMS="efi-64"
EOF

#
# Gentooベースシステムのインストール
#

# Gentoo ebuild リポジトリ
mkdir -p /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

# DNS 情報をコピーする
cp --dereference /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
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run

# 新しい環境に入る
chroot /mnt/gentoo /bin/bash
###
source /etc/profile
export PS1="(chroot) ${PS1}"

# ブートパーティションをマウントする
mkdir /efi
mount /dev/nvme0n1p1 /efi

# Web から Gentoo ebuild リポジトリのスナップショットをインストールする
emerge-webrsync

# 任意自由選択: Gentoo ebuildリポジトリを更新する
# emerge --sync

# 適切なプロファイルを選ぶ
eselect profile list
eselect profile set 7

# 追加可能: バイナリパッケージホストを追加する
getuto

# \@worldの更新
emerge --verbose --update --deep --newuse @world

# タイムゾーン
ln -sf ../usr/share/zoneinfo/Asia/Tokyo /etc/localtime

# ロケールの選択
cat << EOF >> /etc/locale.gen
en_US.UTF-8 UTF-8
ja_JP.UTF-8 UTF-8
EOF
locale-gen
eselect locale list
eselect locale set 4
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

#
# カーネルの設定
#

# 任意自由選択: ファームウェアとマイクロコードのインストール
emerge sys-devel/distcc sys-kernel/linux-firmware sys-firmware/sof-firmware

# カーネルソースのインストール
emerge sys-kernel/gentoo-kernel-bin
eselect kernel list
eselect kernel set 1

#
# システムの設定
#

# ファイルシステムの情報
cat << EOF >> /etc/fstab
/dev/nvme0n1p1		/efi		vfat		defaults,noatime		0 2
/dev/nvme0n1p2		none		swap		sw		0 0
/dev/nvme0n1p3		/		btrfs		noatime		0 1
EOF

# rootパスワード
passwd # pass

# ホストとドメインのための情報
hostnamectl hostname lenovo2103
systemd-machine-id-setup
systemd-firstboot --prompt # jp106, lenovo2103
systemctl preset-all --preset-mode=enable-only

# ネットワーク
emerge net-misc/dhcpcd
systemctl enable dhcpcd

#
# ツールのインストール
#

# 任意自由選択: ファイルのインデックスを作成
emerge sys-apps/mlocate

# 省略可能: シェル補完
emerge app-shells/bash-completion

# 時刻同期
emerge net-misc/chrony
systemctl enable chronyd

# ファイルシステムツール
emerge sys-block/io-scheduler-udev-rules

# 任意自由選択: ワイヤレス・ネットワークツール # 1, 1のインストール
emerge net-wireless/iw net-wireless/wpa_supplicant

#
# ブートローダーの設定
#

# Emerge
emerge --verbose sys-boot/grub

# インストール
grub-install --efi-directory=/efi

# 設定
grub-mkconfig -o /boot/grub/grub.cfg

#
# インストールの締めくくり
#

# 毎日使用するためのユーザを追加します
useradd -m -G users,wheel,audio -s /bin/bash xiupos
passwd xiupos # pass

# tarファイルの削除
rm /stage3-*.tar.*

環境構築

# sudo
emerge app-admin/sudo
echo "%wheel ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers

# sshdc
sudo -u xiupos mkdir --parents /home/xiupos/.ssh
sudo -u xiupos sh -c "echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFlM368FQ4t/28RBW78h0HePJ0SbsuL0uqVcqu04LdN2 [email protected]' >> /home/xiupos/.ssh/authorized_keys"
systemctl enable sshd

# git, vim
emerge dev-vcs/git app-editors/vim

# zsh
emerge app-shells/zsh
chsh -s /bin/zsh root
chsh -s /bin/zsh xiupos

# omz
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
omz theme set dieter
sudo -u xiupos sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
omz theme set dieter
exit
exit

# Xorg
emerge \
  media-libs/mesa \
  x11-base/xorg-server \
  x11-base/xorg-drivers
gpasswd -a xiupos video

# Gnome
emerge gnome-base/gnome x11-terms/guake

# Google Chrome
echo "www-client/google-chrome google-chrome" >> /etc/portage/package.license
emerge www-client/google-chrome

# VSCode
echo "app-editors/vscode Microsoft-vscode" >> /etc/portage/package.license
emerge app-editors/vscode

# Discord
echo "net-im/discord all-rights-reserved" >> /etc/portage/package.license
emerge net-im/discord

# eselect/repository
emerge app-eselect/eselect-repository
mkdir -p /etc/portage/repos.conf

# Fcitx, SKK
eselect repository enable gentoo-zh
emerge --sync
emerge \
  app-i18n/fcitx \
  app-i18n/fcitx-configtool \
  app-i18n/fcitx-skk \
  app-i18n/fcitx-qt \
  app-i18n/fcitx-gtk
cat << EOF >> /etc/environment
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
EOF
sudo -u xiupos sh -c "mkdir -p ~/.config/libskk/rules"
sudo -u xiupos sh -c "git clone https://github.com/xiupos/Sapporo ~/.config/libskk/rules/Sapporo"

# Source Code Pro, Source Sans Pro
emerge media-fonts/source-code-pro

# Source Code pro (Nerd)
echo "media-fonts/nerd-fonts sourcecodepro" > /etc/portage/package.use/nerd-fonts
echo "edia-fonts/nerd-fonts Vic-Fieger-License" >> /etc/portage/package.license
emerge media-fonts/nerd-fonts

カーネルコンパイル

# カーネルソース
emerge sys-kernel/pf-sources
eselect kernel list
eselect kernel set 1
cd /usr/src/linux

# genkernel, clang
emerge sys-kernel/genkernel sys-devel/clang sys-devel/lld

# genkernel.config
cp /etc/genkernel.conf /etc/genkernel.llvm.conf
cat << EOF >> /etc/genkernel.llvm.conf
KERNEL_AS="llvm-as"
KERNEL_AR="llvm-ar"
KERNEL_CC="clang"
KERNEL_LD="ld.lld"
KERNEL_NM="llvm-nm"
UTILS_AS="llvm-as"
UTILS_AR="llvm-ar"
UTILS_CC="clang"
UTILS_CXX="clang++"
UTILS_LD="ld.lld"
UTILS_NM="llvm-nm"
EOF

# カーネルコンフィグ
zcat /proc/config.gz > /usr/src/linux/.config
yes '' | make oldconfig localmodconfig
mv .config .config.local

# カーネルコンパイル
LLVM=1 LLVM_IAS=1 genkernel all \
  --kernel-config=.config.local \
  --config=/etc/genkernel.llvm.conf \
  --kernel-append-localversion=-llvm \
  --utils-objcopy=llvm-objcopy \
  --utils-objdump=llvm-objdump \
  --utils-readelf=llvm-readelf \
  --utils-strip=llvm-strip \
  --utils-ranlib=llvm-ranlib \
  --kernel-objcopy=llvm-objcopy \
  --kernel-objdump=llvm-objdump \
  --kernel-readelf=llvm-readelf \
  --kernel-strip=llvm-strip \
  --kernel-ranlib=llvm-ranlib

# ブートローダの設定
grub-mkconfig -o /boot/grub/grub.cfg
Copy link

ghost commented Jun 6, 2023

config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true

Customize any spec on the VM:
vb.memory = "6144"
vb.cpus = "1"
vb.customize ["modifyvm",:id,"--cpuid-portability-level","2"]
vb.customize ["modifyvm",:id,"--cpu-profile","Intel Core i7-5600U"]
vb.customize ["modifyvm",:id,"--cpuid-set","00000001","0001067a","00000000","7ffafbbf","2fd3fbff"]
vb.customize ["setextradata",:id,"VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC","1"]
vb.customize ["setextradata",:id,"VBoxInternal/Devices/smc/0/Config/DeviceKey","ourhardworkbythesewordguardedpleasedontsteal(c)AppleComputerInc"]
end

Oall未確定 (messagebus portage sshd 通らない, >libffi>libncurses>libintl 6パッケージで簡易検査せよ)
makepkg.conf

UNINSTALL_IGNORE="/sbin /bin /lib /lib64 /lib32"

GENTOO_MIRRORS="rsync://ftp.iij.ad.jp/pub/linux/gentoo/ https://ftp.iij.ad.jp/pub/linux/gentoo/ http://ftp.iij.ad.jp/pub/linux/gentoo/"

ACCEPT_KEYWORDS="* ~*"
ACCEPT_LICENSE="@OSI-APPROVED OSGi-Specification-2.0 unRAR zlib Apache-2.0 python openssl intel-ucode ipw-2100w ipw-2200w Broadcom NVIDIA-r2 no-source-code linux-fw-redistributable google-chrome"

FEATURES="unmerge-orphans parallel-fetch"

PORTAGE_NICENESS="-20"
PORTAGE_IONICE="ionice -c2 -n7 -p${PID}"
PORTAGE_SCHEDULING_POLICY="round-robin"
PORTAGE_SCHEDULING_PRIORITY="1"

EMERGE_DEFAULT_OPTS="--load-average 0.00050"

MAKEOPTS="-j6"

RUSTFLAGS="-C target-cpu=alderlake -C opt-level=3"

COMMON_FLAGS="-g0 -march=alderlake -mtune=skylake-avx512
-mno-3dnow -mno-tbm -mno-lwp -mno-fma -mno-fma4 -mno-bmi -mno-bmi2
-mno-lzcnt -mno-rtm -mno-hle -mno-f16c -mno-xsaveopt -mno-xsavec
-mno-rdrnd -mno-rdseed -mno-fsgsbase -mno-clzero -mno-adcx -mno-prefetchwt1
-mno-clflushopt -mno-cldemote -mno-rdpid -mno-movdiri -mno-movdir64b
-mno-mwaitx -mno-waitpkg -mno-clwb -mno-ptwrite -mno-enqcmd
-mno-vpclmulqdq -mno-sgx -mno-amx-tile -mno-amx-int8 -mno-amx-bf16
-mno-avx512er -mno-avx512pf -mno-avx512bf16 -mno-avx5124fmaps -mno-avx5124vnniw
-fmath-errno -freciprocal-math -fpredictive-commoning -fcx-limited-range
-fplt -fstack-protector -fno-wrapv -fno-trapv -fno-short-enums
-fno-ivopts -fno-unsafe-math-optimizations -fno-stack-clash-protection
-fno-merge-all-constants -fno-inline-functions-called-once -fno-inline-small-functions"

PICFLAGS="-fPIC -D_FORTIFY_SOURCE=2"

STAGE1_CFLAGS="${CFLAGS}"
STAGE2_CFLAGS="${CFLAGS}"
STAGE3_CFLAGS="${CFLAGS}"
CFLAGS="${CFLAGS} ${COMMON_FLAGS}"
CPPFLAGS="${CPPFLAGS} ${COMMON_FLAGS}"
CXXFLAGS="${CXXFLAGS} ${COMMON_FLAGS}"
BOOT_CFLAGS="${CFLAGS} ${COMMON_FLAGS}"
CFLAGS_BUILD="${CFLAGS} ${COMMON_FLAGS}"
CXXFLAGS_BUILD="${CXXFLAGS} ${COMMON_FLAGS}"
CFLAGS_TARGET="${CFLAGS} ${COMMON_FLAGS}"
CXXFLAGS_TARGET="${CXXFLAGS} ${COMMON_FLAGS}"

LC_MESSAGES=C

Copy link

ghost commented Jun 9, 2023

Copy link

ghost commented Jun 11, 2023

参考 (もとが i7-8750H:AthenaOS か {Xeon Platinum 8xxx | i7-1165G7}:UhuruOSで実行)

yay -S alhp-keyring alhp-mirrorlist ( https://somegit.dev/ALHP/ALHP.GO/ )
まぁクソオプション混ざってるのでわからん!けど
Arch x86-64-v3 athlon64だと
glibc bash systemd libxcrypt freetype2 fontconfig dconf gstreamer pulseaudio pipewire gdm-config(←???) brltty broadcom-wl-dkms btrfs-progs gnupg dmraid fakeroot fzf gnome-keyring grub inetutils {jre,jdk,}-openjdk man-db openvpn speech-dispatcher firefox tor-browser wpa_supplicant xdg-user-dirs zram-generator が不正

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment