0x00 回顾
前面已经重新做完了基本的系统,下面咱们来配置,下面的工作主要就是内核跟 grub 了,当然还有网络配置,时间,语言之类的配置,咱们下面一一说。其实这才是重点。Linux 要做哪些基础配置装一遍 arch,看看这段 就一目了然了。下面我们开始做。 ### 0x01 网络配置
网卡名配置
先查看一下网卡现在的名称 我一般使用的是 ip a
(lfs chroot) root:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:e0:4c:1b:a7:03 brd ff:ff:ff:ff:ff:ff
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:e0:4c:1b:a7:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.8.224/24 brd 192.168.8.255 scope global dynamic noprefixroute enp3s0
valid_lft 16804sec preferred_lft 16804sec
inet6 fe80::db3c:b8f1:b411:9074/64 scope link noprefixroute
valid_lft forever preferred_lft forever
上面的结果可以看出来我是双网卡而且 enp3s0 是连接状态的。网卡的名字就是 2: enp2s0,3: enp3s0 这些字样的东西,每台机器略有不同。第一个 lo 是回环设备它有 2 个主要的作用 一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题,另一个作用是某些程序在运行的时候使用了网络的方法调用了本机其他程序的端口,这样数据不出去。
创建手动命名规则,比方说,将接口命名成 enp3s0 这样。为此,请在 /etc/systemd/network/ 中创建 .link 文件,为其中的一个,一些,或者说你全部的接口赋予明确的名字 我这里只做一个
cat > /etc/systemd/network/10-enp3s0.link << EOF
[Match]
# Change the MAC address as appropriate for your network device
MACAddress=00:e0:4c:1b:a7:04
[Link]
Name=enp3s0
EOF
ip 获取
1.dhcp 方式
cat > /etc/systemd/network/10-eth-dhcp.network << EOF
[Match]
Name=enp3s0
[Network]
DHCP=ipv4
[DHCP]
UseDomains=true
EOF
2.如果是写静态 ip 用下面的 ip 是我现在的状态,domain 随便写
cat > /etc/systemd/network/10-eth-static.network << EOF
[Match]
Name=enp3s0
[Network]
Address=192.168.8.224/24
Gateway=192.168.8.1
DNS=192.168.8.1
Domains= ivoivo
EOF
创建 /etc/resolv.conf 文件
下面写的是常用的配置
cat > /etc/resolv.conf << EOF
# Begin /etc/resolv.conf
domain ivoivo
nameserver 8.8.8.8
nameserver 114.114.114.114
# End /etc/resolv.conf
EOF
配置系统主机名称
ivo是我自己写的,写到hostname 里面
echo ivo > /etc/hostname
配置hosts
cat > /etc/hosts << EOF
# Begin /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# End /etc/hosts
EOF
0x02 配置系统时间
硬件时间设置
将硬件时钟设置为本地时间 就是读 bios 里面的时间,使用下面的命令建立一个配置文件。这个文件不存在的话 systemd 会默认读取 UTC 时间
cat > /etc/adjtime << EOF
0.0 0 0.0
0
LOCAL
EOF
网络时间同步
默认自动启动 如果想关了可以用下面的命令关闭
systemctl disable systemd-timesyncd
0x03 语言环境
控制台 默认是英文,语言环境如果是用的中文的用这个配置文件,如果是英文 需要把下面的 en_US.UTF-8
改成 zh_CN.gb18030
vim .bashrc
LC_ALL=en_US.utf8 locale language
LC_ALL=en_US.utf8 locale charmap
LC_ALL=en_US.utf8 locale int_curr_symbol
LC_ALL=en_US.utf8 locale int_prefix
source .bashrc
创建 /etc/locale.conf
文件 如果用中文的语言用这个配置文件
cat > /etc/locale.conf << EOF
LANG=zh_CN.gb18030
EOF
如果后续使用英文的语言,这样写
cat > /etc/locale.conf << EOF
LANG=en_US.UTF-8
EOF
0x04 创建 /etc/inputrc 文件
输入相关的,默认不需要修改除非有些机器特殊的键盘,用下面的脚本来建立一个比较基本的配置文件
cat > /etc/inputrc << EOF
# Begin /etc/inputrc
# Modified by Chris Lynn <roryo@roryo.dynup.net>
# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off
# Enable 8bit input
set meta-flag On
set input-meta On
# Turns off 8th bit stripping
set convert-meta Off
# Keep the 8th bit for display
set output-meta On
# none, visible or audible
set bell-style none
# All of the following map the escape sequence of the value
# contained in the 1st argument to the readline specific functions
\eOd: backward-word
\eOc: forward-word
# for linux console
\e[1~: beginning-of-line
\e[4~: end-of-line
\e[5~: beginning-of-history
\e[6~: end-of-history
\e[3~: delete-char
\e[2~: quoted-insert
# for xterm
\eOH: beginning-of-line
\eOF: end-of-line
# for Konsole
\e[H: beginning-of-line
\e[F: end-of-line
# End /etc/inputrc
EOF
0x05 创建 /etc/shells 文件
配置 shell 的环境咱们只装了 bash 所以 shell 设置为 bash
cat > /etc/shells << EOF
# Begin /etc/shells
/bin/sh
/bin/bash
# End /etc/shells
EOF
0x06 创建 创建 /etc/fstab 文件
这就要用到第一篇的时候我们写到的东西了,那时候我们定义的 sda3 为根目录 sda4 是 swap。
cat > /etc/fstab << EOF
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
/dev/sda3 / ext4 defaults 1 1
/dev/sda4 swap swap pri=1 0 0
# End /etc/fstab
EOF
0x07 linux内核
先解压内核的文件,清理一下,保持内核足够的干净
tar xf linux-4.20.12.tar.xz
cd linux-4.20.12
make mrproper
make defconfig
# 生成一个默认的配置文件
make menuconfig 下面这几个是必选项切记
General setup -->
[ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED]
[ ] Enable deprecated sysfs features by default [CONFIG_SYSFS_DEPRECATED_V2]
[*] open by fhandle syscalls [CONFIG_FHANDLE]
[ ] Auditing support [CONFIG_AUDIT]
[*] Control Group support [CONFIG_CGROUPS]
Processor type and features --->
[*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP]
Networking support --->
Networking options --->
<*> The IPv6 protocol [CONFIG_IPV6]
Device Drivers --->
Generic Driver Options --->
[ ] Support for uevent helper [CONFIG_UEVENT_HELPER]
[*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS]
[ ] Fallback user-helper invocation for firmware loading [CONFIG_FW_LOADER_USER_HELPER]
Firmware Drivers --->
[*] Export DMI identification via sysfs to userspace [CONFIG_DMIID]
File systems --->
[*] Inotify support for userspace [CONFIG_INOTIFY_USER]
<*> Kernel automounter version 4 support (also supports v3) [CONFIG_AUTOFS4_FS]
Pseudo filesystems --->
[*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL]
[*] Tmpfs extended attributes [CONFIG_TMPFS_XATTR]
Kernel hacking --->
Choose kernel unwinder (Frame pointer unwinder) ---> [CONFIG_UNWINDER_FRAME_POINTER]
# 后面会单独开一篇帖子说说内核编译,这里先不说,先让我们的机器能跑起来再说
make
make modules_install
# 创建出来一个内核的镜像
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-4.20.12-lfs-8.4-systemd
# 移动内核镜像到 boot
cp -iv System.map /boot/System.map-4.20.12
# 内核的符号文件
这里我就不做 备份 .config 文件了,因为我们没有单独去做配置。 然后说下 grub,所有的教程里面都是说 grub 单独的安装到一个新的硬盘里面,但是我们做的时候只有 sda 所以我们这步和其他的不一样,这一步我们更新宿主的 grub
# 新开一个终端,在宿主下面的shell 做
grub2-mkconfig -o /boot/grub2/grub.cfg
# 更新的时候就能看到新的 lfs 的内核了,
重启就能启动了。 # 0x08 最后的一点配置
创建一个 systemd 所需的 /etc/os-release 文件:
cat > /etc/os-release << EOF
NAME=Linux From Scratch
VERSION=8.4-systemd
ID=lfs
PRETTY_NAME=Linux From Scratch 8.4-systemd
VERSION_CODENAME=ivoivo
EOF
创建文件 /etc/lfs-release
echo 8.4-systemd > /etc/lfs-release
建立文件
cat > /etc/lsb-release << EOF
DISTRIB_ID=Linux From Scratch
DISTRIB_RELEASE=8.4-systemd
DISTRIB_CODENAME=ivoivo
DISTRIB_DESCRIPTION=Linux From Scratch
EOF
至此都已经结束,请严格的按照官方文档去做,越早做错东西对后面的影响越大。所以第二部分装软件妈的时候能检查就检查,我不做是因为之前都做过,按照书里面的建议来。后面会单独说 grub
和 内核编译
这两部分。下期 一目了然
系列将从头说一下 ALFS 使用自动化的方式去把 LFS 做出来,这个方便的很,但是如果你没有做过几遍 lfs 的话,实话讲没有什么意义。LFS 中有不懂的东西最好都去查查弄明白收获会非常的大。