安装带 systemd 的 gentoo不管是物理机还是虚拟机，首先进入 resuce ，哪个发行版的都行，最好带 systemd，推荐 manjaro1 分区BIOS 启动方式建议使用 fdisk ,UEFI 启动建议使用 gdisk1.1 fdiskfdisk /dev/sda 进入分区模式 首先 n 新建一个分区，大小至少 20GB ，要不要一个盘一个分区自己把握 建完分区后 w 保存分区 mkfs.ext4 /dev/sda1 格式化根分区1.2 gdiskgdisk /dev/sda 进入分区模式 首先 n 新建 boot 分区， 大小16MB， 然后建根分区，大小至少 20GB 建立 boot 的时候提示选择分区类型的时候输入 EF00 ， 标示为 EFI System 建完分区后 w 保存分区 mkfs.vfat -F 32 /dev/sda1 格式化 boot 分区 mkfs.ext4 /dev/sda2 格式化根分区2 挂载分区2.1 BIOSmkdir /mnt/gentoo mount /dev/sda1 /mnt/gentoo cd /mnt/gentoo VERSION='20180528' wget "http://distfiles.gentoo.org/releases/amd64/autobuilds/${VERSION}/systemd/stage3-amd64-systemd-${VERSION}.tar.bz2" tar xjf "stage3-amd64-systemd-${VERSION}.tar.bz2"VERSION 版本号自行前往 https://gentoo.osuosl.org/releases/amd64/autobuilds/current-stage3-amd64-systemd/ 查看并替换2.2 UEFImkdir /mnt/gentoo mount /dev/sda2 /mnt/gentoo mkdir -p /mnt/gentoo/boot/efi mount /dev/sda1 /mnt/gentoo/boot/efi cd /mnt/gentoo VERSION='20180528' wget "https://gentoo.osuosl.org/releases/amd64/autobuilds/current-stage3-amd64-systemd/stage3-amd64-systemd-${VERSION}.tar.bz2" tar xjf "stage3-amd64-systemd-${VERSION}.tar.bz2"VERSION 版本号自行前往 https://gentoo.osuosl.org/releases/amd64/autobuilds/current-stage3-amd64-systemd/ 查看并替换3 chrootmount -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 /mnt/gentoo /bin/bash source /etc/profile export PS1="(chroot) $PS1"4 更新和安装echo "nameserver 8.8.8.8" > /etc/resolv.conf # DNS 看鸡子是国内的还是国外的自己改一改 emerge-webrsync4.1 时区和编码东八区和英文 UTF-8 编码，好像没什么不对ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime emerge --config sys-libs/timezone-data eselect locale set en_US.UTF-8 env-update && source /etc/profile && export PS1="(chroot) $PS1"4.2 多线程编译和乳优化 CPU 编译MAKEOPTS=$[`echo \`nproc\``+1] echo "MAKEOPTS=\"-j${MAKEOPTS}\"" >> /etc/portage/make.conf emerge app-portage/cpuid2cpuflags TEMP=`cpuid2cpuflags | awk -F ':' '{print $2}'` echo "CPU_FLAGS_X86=\"${TEMP}\"" >> /etc/portage/make.conf emerge -avuDN @world4.4 安装必要的包emerge -av sys-kernel/genkernel-next sys-kernel/gentoo-sources logrotate cronie sys-boot/grub:2 # 开机自启动这些包 systemctl enable sshd.service systemctl enable cronie.service systemctl enable systemd-networkd.service systemctl enable systemd-timesyncd.service # 国内注意修改 /etc/systemd/timesyncd.conf FallbackNTP 为墙内 NTP 服务器 # root 敢死队 sed -i "s@#PermitRootLogin@PermitRootLogin@" /etc/ssh/sshd_config sed -i "s@PermitRootLogin.*@PermitRootLogin yes@" /etc/ssh/sshd_config sed -i "s@#PasswordAuthentication@PasswordAuthentication@" /etc/ssh/sshd_config sed -i "s@PasswordAuthentication no@PasswordAuthentication yes@" /etc/ssh/sshd_config # 初始化 /etc/machine-id systemd-machine-id-setup # 如果有需要的话用 rsyslog 替换 systemd 的 log 处理 emerge -av rsyslog echo "\$ModLoad imjournal" >> /etc/rsyslog.conf sed -i "s@#ForwardToSyslog=no@#ForwardToSyslog=yes@" /etc/systemd/journald.conf systemctl enable rsyslog.service~~genkernel 和 grub 的配置处理sed -i 's@#UDEV="yes"@UDEV="yes"@' /etc/genkernel.confMAKEOPTS=$[echo \cat /proc/cpuinfo | grep 'processor' | wc -l``+1]sed -i "s@#MAKEOPTS=.*@MAKEOPTS="-j${MAKEOPTS}"@" /etc/genkernel.confsed -i 's@# GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"@GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"@' /etc/default/grub~~4.5 配置网络不重命名网卡为 en* ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rulesDHCP 分配 IP 更多网络配置方式见 systemd.network 中文手册cat > /etc/systemd/network/80-dhcp.network <<EOF [Match] Name=eth0 [Network] DHCP=yes EOF静态 IPv4 + IPv6 下面用局域网地址作为演示，杜甫请更换为实际互联网地址cat > /etc/systemd/network/10-eth0.network <<EOF [Match] Name=eth0 [Network] Address=fe80::20c:29ff:fef9:1/64 Gateway=192.168.1.1 Gateway=fe80::1 [Address] Address=192.168.1.123 Peer=192.168.1.1/32 EOF4.6 root 密码passwd5 安装内核, grub, fstab, 分配 swapfile# swapfile 如果 1GB 小了自己增加 dd if=/dev/zero of=/swapfile count=1024 bs=1M mkswap /swapfile chmod 600 /swapfile # 本菜鸡只会用 genkernel ，大佬请绕道 # genkernel 不会编译全部网卡驱动，如果启动后出现没网卡的情况就是这里出问题了 genkernel all --menuconfig --makeopts=-j${MAKEOPTS}进入内核配置界面选择 Gentoo Linux → Support for init systems, system and service managers选中 systemd 按 y官方 WIKI 没写 OPENRC 要不要去掉，我去掉了也没什么神奇的事发生5.1 BIOS 启动时的 fstab 和 grubUUID1=`blkid /dev/sda1 | awk '{printf($2)}' | awk -F "[\"\"]" '{print $2}'` TYPE1=`blkid /dev/sda1 | awk '{printf($3)}' | awk -F "[\"\"]" '{print $2}'` echo "UUID=${UUID1} / ${TYPE1} defaults 0 1" >> /etc/fstab echo '/swapfile swap swap defaults 0 0' >> /etc/fstab grub-install /dev/sda grub-mkconfig -o /boot/grub/grub.cfg5.2 UEFI 启动时的 fstab 和 grubUUID1=`blkid /dev/sda1 | awk '{printf($2)}' | awk -F "[\"\"]" '{print $2}'` TYPE1=`blkid /dev/sda1 | awk '{printf($3)}' | awk -F "[\"\"]" '{print $2}'` echo "UUID=${UUID1} /boot/efi ${TYPE1} defaults 0 2" >> /etc/fstab UUID2=`blkid /dev/sda2 | awk '{printf($2)}' | awk -F "[\"\"]" '{print $2}'` TYPE2=`blkid /dev/sda2 | awk '{printf($3)}' | awk -F "[\"\"]" '{print $2}'` echo "UUID=${UUID2} / ${TYPE2} defaults 0 1" >> /etc/fstab echo '/swapfile swap swap defaults 0 0' >> /etc/fstab grub-install --target=x86_64-efi --efi-directory=/boot/efi # 如果有只读的错误报出，执行以下 mount -o remount,rw /sys/firmware/efi/efivars grub-mkconfig -o /boot/grub/grub.cfg6 退出并重启exit reboot7 启动成功后给鸡起个名使用 localhost 某些程序会出神奇的问题...HOSTNAME='这里机器名自己填' hostnamectl set-hostname ${HOSTNAME} echo "127.0.0.1 ${HOSTNAME}" >> /etc/hosts echo "::1 ${HOSTNAME}" >> /etc/hosts