#ethernet
#配置ip地址
ip addr $ipaddress/netmask dev interface
#配置路由
ip route add default via ipaddress
#wifi
#扫描wifi
iwlist wlan0 scan
#连接wifi
wpa_passpharse SSID password > wifi.conf
wpa_supplicant -c wifi.conf -B -i wlan0#wlan为无线网卡名称,自行根据自己的网卡型号进行改动
#获取ip地址
dhcpcd wlan0
这里使用fdisk工具对磁盘进行分区,同样的也可以使用cfdisk或者其他磁盘分区工具
fdisk /dev/sda
查看当前磁盘分区
Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
Device Start End Sectors Size Type
/dev/sda1 2048 526335 524288 256M EFI System
/dev/sda2 526336 2623487 2097152 1G Linux swap
/dev/sda3 2623488 19400703 16777216 8G Linux filesystem
/dev/sda4 19400704 60549086 41148383 19.6G Linux filesystem
创建一个gpt分区列表
Command (m for help):g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).
如果当前存在其他的分区,可以选择将分区删除
Command (m for help):d
Partition number (1-4): 1
创建一个efi分区,大小建议256MB
Command (m for help):n
Partition number (1-128, default 1): 1
First sector (2048-60549086, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549086, default 60549086): +256M
Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.
Command (m for help):t
Selected partition 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.
创建一个swap分区
Command (m for help):n
Partition number (2-128, default 2):
First sector (526336-60549086, default 526336):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549086, default 60549086): +4G
Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.
Command (m for help):t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 19
Changed type of partition 'Linux filesystem' to 'Linux swap'.
创建主分区
Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F
Device Start End Sectors Size Type
/dev/sda1 2048 526335 524288 256M EFI System
/dev/sda2 526336 8914943 8388608 4G Linux swap
/dev/sda3 8914944 60549086 51634143 24.6G Linux filesystem
将分区信息写入磁盘
Command (m for help):w
当前磁盘分区信息
分区 | 详细信息 |
---|---|
/dev/sda1 | 启动分区 |
/dev/sda2 | swap分区 |
/dev/sda3 | 根分区 |
boot分区文件系统一般考虑兼容性使用fat文件系统
mkfs.vfat /dev/sda1
swap分区
mkswap /dev/sda2
根分区,可采用(ext3/4 xfs btrfs ntfs jfs…)使用非ext文件系统在后面编译linux内核的时候要启动linux内核对该文件系统的支持
这里采用btrfs文件系统
mkfs.btrfs /dev/sda3
#将/dev/sda3主磁盘分区挂载到/mnt/gentoo下面
mount /dev/sda3 /mnt/gentoo
stage3包提供了最基本的portage包管理器编译工具链和一些最基本的链接库
#获取Gentoo stage3包
wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220109T170538Z/stage3-amd64-systemd-20220109T170538Z.tar.xz
tar -Jxf stage3-amd64-systemd-20220109T170538Z.tar.xz -C /mnt/gentoo
#将之前格式化的boot磁盘挂载
mount /dev/sda1 /mnt/gentoo/boot
nano /mnt/gentoo/etc/portage/make.conf
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-march=native -O3 -pipe -fstack-protector-strong" #设置编译参数(-march=native可以根据cpu指令集进行优化,-O3优化级别)
CFLAGS="${COMMON_FLAGS}" #C编译参数
CXXFLAGS="${COMMON_FLAGS}" #C++编译参数
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
ACCEPT_KEYWORDS="amd64" #可接受的软件包等级(稳定与不稳定)(这里为全局keyworkds,若想为特定软件包指定特定的Keyworkds(可以在/etc/protage/portage.accpet_keywords
ACCEPT_LICENSE="*" #可接受的软件包许可证
MAKEOPTS="-j8 -l7.2" #根据cpu核心数来配置(一般配置为cpu核心数+1),如果机器配置不够尽量将线程数调低一些,方式内存爆.
CHOST="x86_64-pc-linux-gnu"
#--keep-going表示portage在编译软件出错的时候继续进行编译--with-bdeps表示在碰上依赖的时候一起安装上依赖
EMERGE_DEFAULT_OPTS="--jobs=8 --load-average=7.2 --ask --keep-going --with-bdeps=y"
GRUB_PLATFORMS="efi-64" #配置GRUB架构平台
CPU_FLAGS_X86=""#使用cpuflags查看cpu参数
#设置语言
L10N="en-US en"
LINGUAS="en-US en"
#镜像源
NETEASE="https://mirrors.163.com/gentoo/"
NEUSOFT="https://mirrors.neusoft.edu.cn/gentoo/"
TSINGHUA="https://mirrors.tuna.tsinghua.edu.cn/gentoo/"
CDS="http://mirrors.yun-idc.com/gentoo/"
ALI="https://mirrors.aliyun.com/gentoo/"
BIT="https://mirror.bit.edu.cn/gentoo/"
USTC="https://mirrors.ustc.edu.cn/gentoo/"
AUTO_CLEAN="yes"
#设置自动清理
VIDEO_CARDS="intel nvidia"#配置显卡驱动
INPUT_DEVICES="libinput" #配置输入设备的基本库
#将microcode直接编译进内核
MICROCODE_SIGNATURES="-S"
LC_MESSAGES=C
PORTDIR="/var/db/repos/gentoo" #软件包的ebuild文件存储目录
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs" #软件包的存储目录
#设置软件包缓存目录
PORTAGE_TMPDIR="/tmp" #portage的编译目录
#设置portage构建软件包目录(如果内存较大,建议设置在内存里面)
# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C
GENTOO_MIRRORS="${USTC}" #配置Gentoo镜像源(软件镜像源)
#全局USE
USE="-X -qt5 "
#创建存放gentoo仓库配置文件的目录
mkdir --parents /mnt/gentoo/etc/portage/repos.conf
#将gentoo软件仓库配置模板拷贝至上述创建的目录下
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
配置仓库镜像源(获取ebuild的镜像源)
nano /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
将镜像源换成国内的中科大gentoo源
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /var/db/repos/gentoo
sync-type = rsync
sync-uri = rsync://mirrors.ustc.edu.cn/gentoo-portage
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 24
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4
#配置dns解析文件
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
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
#假如用的不是gentoo的livecd,需要加入以下
test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
chmod 1777 /dev/shm
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot)${PS1}"
emerge-webrsync
root #eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/17.1 *
[2] default/linux/amd64/17.1/desktop
[3] default/linux/amd64/17.1/desktop/gnome
[4] default/linux/amd64/17.1/desktop/kde
emerge --ask app-portage/cpuid2cpuflags#用于查看cpu参数,可以将参数配置到portage配置文件中使得可以针对cpu参数进行优化
这里按自己的实际需求自行配置
sys-devel/gcc cet pgo go lto nptl -objc -objc++ -objc-gc -fixed-point -d
sys-devel/gdb cet lzma multitarget python server source-highlight xml xxhash
sys-devel/clang static-analyzer
dev-lang/python -bluetooth -wininst
net-analyze/nmap nse nping ncat libssh2
app-containers/docker btrfs cli apparmor aufs container-init device-mapper overlay
app-editors/vim cscope racket -X -crypt -terminal
net-misc/wget cookie-check
net-wireless/wpa_supplicant ap -broadcom-sta -crda eap-sim -eapol-test -mesh -p2p
配置时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #将时间配置到上海时区
hwclock --systohc #同步时间
配置语言和地区
#/etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
locale-gen
#列出所有可用的locale
root #eselect locale list
Available targets for the LANG variable:
[1] C
[2] C.utf8
[3] en_US
[4] en_US.iso88591
[5] en_US.utf8
[6] de_DE
[7] de_DE.iso88591
[8] de_DE.iso885915
[9] de_DE.utf8
[10] POSIX
[ ] (free form)
#设置locale
root #eselect locale set 9
配置主机名
hostnamectl set-hostname Gentoo
配置hosts文件
/etc/hosts
# This defines the current system and must be set
127.0.0.1 tux.homenetwork tux localhost
# Optional definition of extra systems on the network
192.168.0.5 jenny.homenetwork jenny
192.168.0.6 benny.homenetwork benny
emerge --ask --verbose sys-kernel/linux-firmware sys-firmware/intel-microcode
#sys-kernel/linux-firmware 包含了一些常用的驱动
#sys-firmware/intel-microcode 用于更新microcode,以保持系统的稳定性
#获取内核源码
emerge --ask sys-kernel/gentoo-sources sys-kernel/dracut sys-apps/pciutils
#sys-kernel/gentoo-sources 为内核源码
#sys-kernel/dracut用与生成initramfs
#sys-apps/pciutils软件包用于收集硬件信息(一些pci设备)
#列出当前可用内核
eselect kernel list
#设置使用那个内核
eselect kernel set
#编译内核
#进入内核目录
cd /usr/src/linux
#开始编译
#配置编译选项
make menuconfig
#开始编译
make -j8 && make modules_install -j8
#安装内核
make install
#生成一个initramfs
dracut --kver=4.9.16-gentoo
#记得打开frame_buffer(大坑)。
emerge --ask --verbose net-wireless/iw net-wireless/wpa_supplicant net-misc/dhcp net-dns/dnsmasq sys-boot/grub:2 app-editors/vim sys-boot/efibootmgr
#net-wireeless/iw 一个网络管理工具
#net-wireless/wpa-supplicant wifi连接工具
#net-misc/networkmanager 网络管理工具
#net-misc/dhcp dhcp客户端
#net-misc/dnsmasq dns服务器以及dhcp服务器
#app-admin/sysklogd 日志分析工具
#sys-boot/grub:2 grub(一种bootloader)
#app-editors/vim vim编辑器
#sys-boot/efibootmgr uefi系统引导必要的
emerge --ask --verbose --deep --newuse --update @world
生成fstab文件
#生成fstab文件
blkid
#如果使用的archlinux的livecd,可以使用archlinux的genfstab自动生成fstab文件
#genfstab /mnt/gentoo > /mnt/gentoo/etc/fstab
#建议使用uuid
blkid >> /etc/fstab
修改/etc/fstab文件
UUID="203C-2BDD" /boot vfat defaults 0 1
UUID="5afdfbc9-0c66-4a13-8f29-da00199af5de" / ext4 defaults defaults,noatime,discard 0 2
这里默认使用的引导是grub2,也可以使用其他的系统引导如lilo uboot等
生成grub配置文件
mkdir /boot/grub
grub-mkconfig -o /boot/grub/grub.cfg
安装系统引导
grub-install --taget=x86_64-efi --efi-directory=/boot --bootloader-id=Gentoo
#设置root用户的密码
passwd root