一目了然系列之 Centos7 编译构建 LFS 8.4(5)

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 中有不懂的东西最好都去查查弄明白收获会非常的大。

上一篇
下一篇