安装 Gentoo Linux CLI
文档时效性说明
本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。
原英文标题:Install Gentoo Linux CLI
1. 分区磁盘
| printf "g\nn\n1\n\n+256M\nt\nuefi\nn\n2\n\n+4G\nt\n2\nswap\nn\n3\n\n\nt\n3\nlinux\np\nw\n" | fdisk /dev/sda
sync
|
| mkfs.vfat -F 32 /dev/sda1
mkswap /dev/sda2
mkfs.ext4 -F /dev/sda3
|
2. 挂载文件系统
| swapon /dev/sda2
mkdir -p /mnt/gentoo
mount /dev/sda3 /mnt/gentoo/
|
3. 下载并解压 stage3 tarball
| ntpd -q -g
cd /mnt/gentoo
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20211010T170540Z/stage3-amd64-openrc-20211010T170540Z.tar.xz
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
|
4. 配置编译选项
| sed -i 's/COMMON_FLAGS="-O2 -pipe"/COMMON_FLAGS="-march=x86-64 -O2 -pipe"/' /mnt/gentoo/etc/portage/make.conf
echo MAKEOPTS="\"-j$(nproc)\"" >> /mnt/gentoo/etc/portage/make.conf
|
5. 设置 Gentoo 镜像
| echo 'GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"' >> /mnt/gentoo/etc/portage/make.conf
|
6. 配置 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
sed -i 's/sync-uri = rsync:\/\/rsync.gentoo.org\/gentoo-portage/sync-uri = rsync:\/\/mirrors.tuna.tsinghua.edu.cn\/gentoo-portage/' /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
|
7. 复制 DNS 信息
| cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
|
8. 挂载必要的文件系统
| 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
|
9. 进入新环境
| chroot /mnt/gentoo /bin/bash
|
10. 挂载 boot 分区
11. 从网络安装 Gentoo ebuild 仓库快照
| emerge-webrsync
emerge --sync
|
12. 选择正确的 profile
| eeselect profile list
eeselect profile set 1
|
13. 更新 @world 集合
| emerge --verbose --update --deep --newuse @world
|
14. 接受所有许可
| echo "ACCEPT_LICENSE=\"*\"" >> /etc/portage/make.conf
|
15. 时区
| echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data
|
16. 配置 locales
| echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
eeselect locale list
eeselect locale set 5
env-update && source /etc/profile
|
17. 安装内核源码
| emerge sys-kernel/gentoo-sources
eeselect kernel list
eeselect kernel set 1
ls -l /usr/src/linux
|
18. 内核配置和编译
| emerge sys-kernel/genkernel
echo "/dev/sda1 /boot vfat defaults 0 2" >> /etc/fstab
genkernel all
ls /boot/vmlinu* /boot/initramfs*
echo "/dev/sda2 swap swap defaults 0 0" >> /etc/fstab
echo "/dev/sda3 / ext4 defaults 0 0" >> /etc/fstab
|
19. 主机和域名信息
| echo "hostname=\"hxp-server\"" > /etc/conf.d/hostname
echo "dns_domain_lo=\"homenetwork\"" > /etc/conf.d/net
echo "nis_domain_lo=\"my-nisdomain\"" > /etc/conf.d/net
emerge --noreplace net-misc/netifrc
echo "config_enp3s0=\"dhcp\"" > /etc/conf.d/net
cd /etc/init.d
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default
|
20. 设置 root 密码
| sed -i 's/^password/# password/' /etc/pam.d/system-auth
echo "password required pam_unix.so nullok sha512 shadow" >> /etc/pam.d/system-auth
sed -i 's/root:x:/root::/' /etc/passwd
|
21. 系统日志
| emerge app-admin/sysklogd
rc-update add sysklogd default
|
22. Cron 守护进程
| emerge sys-process/cronie
rc-update add cronie default
|
23. 文件索引
24. 远程访问
| rc-update add sshd default
|
25. 文件系统工具
| emerge sys-fs/e2fsprogs sys-fs/xfsprogs sys-fs/dosfstools
|
26. 安装 DHCP 客户端
27. 安装 GRUB2 引导加载器
| echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge sys-boot/grub:2
grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
mkdir /boot/EFI/boot
cp /boot/EFI/gentoo/grubx64.efi /boot/EFI/boot/bootx64.efi
|
28. 添加日常使用用户
| useradd -m -G users,wheel,audio -s /bin/bash hxp
sed -i 's/hxp:x:/hxp::/' /etc/passwd
|
29. 重启系统
| exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
|
30. 原文(English)
| ---
tags:
- Gentoo
- Linux
---
# Install Gentoo Linux CLI
!!! warning "文档时效性说明"
本文为早期笔记,可能存在版本过时、命令失效、链接失效、最佳实践变化等问题。请以官方最新文档为准。
## Partitioning disk
```bash
printf "g\nn\n1\n\n+256M\nt\nuefi\nn\n2\n\n+4G\nt\n2\nswap\nn\n3\n\n\nt\n3\nlinux\np\nw\n" | fdisk /dev/sda
sync
|
| mkfs.vfat -F 32 /dev/sda1
mkswap /dev/sda2
mkfs.ext4 -F /dev/sda3
|
Mount filesystem
| swapon /dev/sda2
mkdir -p /mnt/gentoo
mount /dev/sda3 /mnt/gentoo/
|
Download and unpack tarball
| ntpd -q -g
cd /mnt/gentoo
wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/20211010T170540Z/stage3-amd64-openrc-20211010T170540Z.tar.xz
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
|
Configuring compile options
| sed -i 's/COMMON_FLAGS="-O2 -pipe"/COMMON_FLAGS="-march=x86-64 -O2 -pipe"/' /mnt/gentoo/etc/portage/make.conf
echo MAKEOPTS="\"-j$(nproc)\"" >> /mnt/gentoo/etc/portage/make.conf
|
Set Gentoo mirror
| echo 'GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"' >> /mnt/gentoo/etc/portage/make.conf
|
| 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
sed -i 's/sync-uri = rsync:\/\/rsync.gentoo.org\/gentoo-portage/sync-uri = rsync:\/\/mirrors.tuna.tsinghua.edu.cn\/gentoo-portage/' /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
|
Copy DNS info
| cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
|
Mount necessary filesystems
| 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
|
Entering the new environment
| chroot /mnt/gentoo /bin/bash
|
Mounting the boot partition
Installing a Gentoo ebuild repository snapshot from the web
| emerge-webrsync
emerge --sync
|
Choosing the right profile
| eeselect profile list
eeselect profile set 1
|
Updating the @world set
| emerge --verbose --update --deep --newuse @world
|
Accept all license
| echo "ACCEPT_LICENSE=\"*\"" >> /etc/portage/make.conf
|
Timezone
| echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data
|
| echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
eeselect locale list
eeselect locale set 5
env-update && source /etc/profile
|
Installing the sources
| emerge sys-kernel/gentoo-sources
eeselect kernel list
eeselect kernel set 1
ls -l /usr/src/linux
|
Kernel configuration and compilation
| emerge sys-kernel/genkernel
echo "/dev/sda1 /boot vfat defaults 0 2" >> /etc/fstab
genkernel all
ls /boot/vmlinu* /boot/initramfs*
echo "/dev/sda2 swap swap defaults 0 0" >> /etc/fstab
echo "/dev/sda3 / ext4 defaults 0 0" >> /etc/fstab
|
Host and domain information
| echo "hostname=\"hxp-server\"" > /etc/conf.d/hostname
echo "dns_domain_lo=\"homenetwork\"" > /etc/conf.d/net
echo "nis_domain_lo=\"my-nisdomain\"" > /etc/conf.d/net
emerge --noreplace net-misc/netifrc
echo "config_enp3s0=\"dhcp\"" > /etc/conf.d/net
cd /etc/init.d
ln -s net.lo net.enp3s0
rc-update add net.enp3s0 default
|
Set root password
| sed -i 's/^password/# password/' /etc/pam.d/system-auth
echo "password required pam_unix.so nullok sha512 shadow" >> /etc/pam.d/system-auth
sed -i 's/root:x:/root::/' /etc/passwd
|
System logger
| emerge app-admin/sysklogd
rc-update add sysklogd default
|
Cron daemon
| emerge sys-process/cronie
rc-update add cronie default
|
File indexing
Remote access
| rc-update add sshd default
|
| emerge sys-fs/e2fsprogs sys-fs/xfsprogs sys-fs/dosfstools
|
Installing a DHCP client
Install GRUB2 boot loader
| echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
emerge sys-boot/grub:2
grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
mkdir /boot/EFI/boot
cp /boot/EFI/gentoo/grubx64.efi /boot/EFI/boot/bootx64.efi
|
Adding a user for daily use
| useradd -m -G users,wheel,audio -s /bin/bash hxp
sed -i 's/hxp:x:/hxp::/' /etc/passwd
|
Rebooting the system
| exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
reboot
|
```