Skip to content

Liddy’s Linux 11.0 编译日志 Day4

…编译GCC时进行的测试所用时间远远超出了预期,大概为20个小时…咱的电脑通过熬夜才测试完毕,总之以下是测试结果。

=== g++ tests ===


Running target unix
FAIL: g++.dg/asan/asan_test.C -O2 (test for excess errors)
UNRESOLVED: g++.dg/asan/asan_test.C -O2 compilation failed to produce executable

=== g++ Summary ===

# of expected passes 207329
# of unexpected failures 1
# of expected failures 1073
# of unresolved testcases 1
# of unsupported tests 9048
/sources/gcc-11.2.0/build/gcc/xg++ version 11.2.0 (GCC)

=== gcc tests ===


Running target unix
FAIL: gcc.dg/analyzer/analyzer-verbosity-2a.c (test for excess errors)
FAIL: gcc.dg/analyzer/analyzer-verbosity-3a.c (test for excess errors)
FAIL: gcc.dg/analyzer/edges-1.c (test for excess errors)
FAIL: gcc.dg/analyzer/file-1.c (test for excess errors)
FAIL: gcc.dg/analyzer/file-2.c (test for excess errors)
FAIL: gcc.dg/analyzer/file-paths-1.c (test for excess errors)
FAIL: gcc.dg/analyzer/file-pr58237.c (test for excess errors)
FAIL: gcc.dg/analyzer/pr99716-1.c (test for excess errors)

=== gcc Summary ===

# of expected passes 160220
# of unexpected failures 8
# of expected failures 854
# of unsupported tests 2407
/sources/gcc-11.2.0/build/gcc/xgcc version 11.2.0 (GCC)

=== libatomic tests ===


Running target unix

=== libatomic Summary ===

# of expected passes 54
=== libgomp tests ===


Running target unix

=== libgomp Summary ===

# of expected passes 2879
# of expected failures 4
# of unsupported tests 310
=== libitm tests ===


Running target unix

=== libitm Summary ===

# of expected passes 44
# of expected failures 3
# of unsupported tests 1
=== libstdc++ tests ===


Running target unix
FAIL: 17_intro/headers/c++1998/49745.cc (test for excess errors)
FAIL: 22_locale/numpunct/members/char/3.cc execution test
FAIL: 22_locale/time_get/get_time/char/2.cc execution test
FAIL: 22_locale/time_get/get_time/char/wrapped_env.cc execution test
FAIL: 22_locale/time_get/get_time/char/wrapped_locale.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/2.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/wrapped_env.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/wrapped_locale.cc execution test

=== libstdc++ Summary ===

# of expected passes 14823
# of unexpected failures 8
# of expected failures 104
# of unsupported tests 352

…继续编译。

GCC顺利完成安装之后,最终编译链通过测试,一切正常。

编译Groff时选择则了A4…作为./configure的选项。

Liddy’s Linux需要UEFI启动的支持,所以跳过了传统的GRUB的安装…待编译BLFS的时候再进行GRUB2的安装,现如今还能够使用现有的Linux系统(计算机中安装着Ubuntu Studio,而移动硬盘中安装有Kubuntu)中的GRUB2暂时进行Liddy’s Linux的启动。

所有LFS基本程式包(内核及启动脚本之外)全部安装完毕,开始进行调试符号(大概是这个)的清理(8.77. Stripping)。「重要:为了不造成系统的破坏,所以从LFS book间直接复制粘贴了命令。」

.la文件也删掉了,在此之后,每次备份的时候都会删掉.la文件。总之,开始第九章。

运行了”bash /usr/lib/udev/init-net-rules.sh“配置网络设备,注意每次网络硬件更新之时,应该需要重新配置一遍。
(/etc/udev/rules.d/70-persistent-net.rules)
这是咱使用这个脚本配置之后的结果:
”SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”14:b3:1f:ff:bb:13″, ATTR{dev_id}==”0x0″, ATTR{type}==”1″, NAME=”enp5s0″“
…暂且没有继续配置下去(9.5.1. Creating Network Interface Configuration Files)。若是无法联网的话,以后再慢慢调试好了。

这是咱的/etc/resolv.conf文件:

domain google-public-dns-a.google.com
nameserver 8.8.8.8
nameserver 8.8.4.4

将本地主机名配置为了localhost:
echo “localhost” > /etc/hostname

同理,咱的/etc/hosts文件:

127.0.0.1 localhost.localdomain localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

…咱对服务器管理方面不精熟,该了解一些相关知识了。

使用LFS默认配置了/etc/inittab文件…这些的话倒是很熟悉。

/etc/sysconfig/clock中UTC设置为了0。

终端键盘设置保持默认就可以了,无须特别添加文件。

Bash默认(/etc/profile)显示设置为了中文(zh_CN.utf8)。退出chroot环境并重新进入之后,bash环境已经更为了中文。

这是咱的/etc/fatab,暂时如此…这一版的Liddy’s Linux只会且只能够当作预览版安装至U盘间,那时候还需要逐一重新配置UUID…明年三月继续依照LFS制作Liddy’s Linux时,将会更为使用安装程式更改…希望明年三月之时,咱的力量能够如此。

cat > /etc/fstab << “EOF”
# Begin /etc/fstab

# file system mount-point type options dump fsck
# order

UUID=22ca6295-b367-41e0-bb48-13458b0b61d7 / ext4 defaults 1 1
proc /proc proc nosuid,noexec,nodev 0 0
sysfs /sys sysfs nosuid,noexec,nodev 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /run tmpfs defaults 0 0
devtmpfs /dev devtmpfs mode=0755,nosuid 0 0

# End /etc/fstab
EOF

开始最重要的编译内核!首先选中了bootup logo,然后…看起来所有的数位板(Wacom以及其他)输入设备(Touchscreens与Tablets)被默认选中为模块,不必修改,包括HID Drivers中Wacom设备也被默认设置成为了模块;随后按照LFS 11.0中的指引(10.3. Linux-5.13.12)以及此处(https://www.linuxfromscratch.org/blfs/view/11.0/postlfs/grub-setup.html#uefi-kernel)设置可以支持EFI(UEFI)启动,另外参照这些另外做了内核配置:
无线网络支持:https://www.linuxfromscratch.org/blfs/view/11.0/basicnet/networkmanager.html#NetworkManager-kernel
ATi系列显卡支持:https://www.linuxfromscratch.org/blfs/view/11.0/x/x7driver.html#xorg-ati-driver-kernel
Intel内置显卡系列支持:https://www.linuxfromscratch.org/blfs/view/11.0/x/x7driver.html#xorg-intel-driver-kernel
Nvidia系列显卡支持:https://www.linuxfromscratch.org/blfs/view/11.0/x/x7driver.html#xorg-nouveau-driver-kernel
部分USB移动硬盘(令其可以启动LFS)相关的内容作了如下设定:https://www.linuxquestions.org/questions/linux-from-scratch-13/lfs-7-8-setting-up-grub-to-boot-from-flash-drive-4175572965/
顺带一提,重新设置了主机名称(liddyslinu)。
…以前编译过LFS,看起来其余的大部分以前需要注意的选项已被编译至内核或是作为模块而存在…无须再去处理。总之,编译内核也需要一些时间。(新的内核配置文件备份为/liddy.11.0.config)

编译内核的时候遇到了如下错误:

make[1]: *** [kernel/Makefile:159:kernel/kheaders_data.tar.xz] 错误 127

稍加查找,查到了如下解决办法:

https://bbs.archlinux.org/viewtopic.php?id=261876

那样试着装一下cpio-2.13试试——问题解决,自BLFS ver 11.0中看到cpio的介绍,应该是拷贝压缩包中的内容的程式…看起来Linux内核编译缺不了他…随后又遇到了错误:

make[1]: *** 没有规则可制作目标“debian/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止。

…内核中制作Debian?还是咱使用的宿主系统Kubuntu…不大可能,再查找一下…找到了这个。

https://blog.csdn.net/qq_36393978/article/details/118157426

应该是内核配置的问题,但是为何将这个值写在了内核配置当中…还不知道。继续编译…又发现了这个问题:

BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF

不是需要的模块…那样取消掉之后再试着编译一遍好了——又是经过了…大概8小时,编译内核再次遇到了错误:

/bin/sh:行1: lz4c:未找到命令

这个应该很容易解决…解决方法如下:

https://blog.csdn.net/mls805379973/article/details/78605027

需要安装lz4包才能够解决,「重要」从现在开始…安装LFS/BLFS收录以外的包之时,若是没有特别注明(而且并非cmake或其他编译系统…只是标准的configure与make编译系统),所有程式包都会按着如下命令配置/编译/安装:

./configure –prefix=/usr –disable-static
make
make install

「重要」

lz4c的问题已解决,并且内核顺利编译与安装完毕,以及配置了/etc/modprobe.d/usb.conf,/etc/lfs-release,/etc/lsb-release以及/etc/os-release。

添加了用户名与组:liddy,密码与root密码相同。

正式进入新编译好的Liddy’s Linux之前,顺带着将initramfs所需的程式包安装完毕,并且配置好了bash文件以及initramfs…/etc/profile.d/i18n.sh中也配置了zh_CN.utf8,顺利完毕,现在该是更新GRUB2设置,并且进入新编译好的Liddy’s Linux的时候了——

重新启动计算机,试图进入Liddy’s Linux之后内核报错:

not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

解决方式就是将编译好的initramfs相关的文件放置于/boot间,随后再添加于GRUB启动菜单中即可解决…但是又发现了其他问题——无法挂载/分区,还需要再找原因与解决方法…首先编译好GRUB2试一试。

…结果还是不行,不过GRUB2正式配置完毕,能够正常运行…算是提前安装罢。试着重装一遍eudev-3.2.10…可能缺少了什么步骤——重装完毕之后还是不行,随后想到或许是内核配置的问题——EXT2与EXT4格式没有被编入内核或模块之中,编译进去一试…

更新内核成功,但依旧无法启动…只能再找找其他问题,仔细回想了一下,或许有“Default RAM disk size”有关?65536是默认值,看看Ubuntu默认的内核配置文件中设置的是…同样的65536,再找找其他问题,肯定出在内核间。

将选项“Default RAM disk size”更为32768,依旧无法启动,虽然调试错误的屏幕间有变化…再看看有没有其他问题。

将内核选项中的“USB Attached SCSI”有打模块调成了集成至内核,看看效果如何——看起来还有其他的内核选项需要调整…——最后索性将所有与USB硬盘/优盘设备相关选项全部集成至内核当中!…于是没有问题,正常启动…至于有新增了多少内容至内核当中,因为最终成品中会有/liddy.11.0.config这一文件,可以对照来看…

而且做完这些工作的现在已经是第三日的凌晨3时22分,该休息了,无论咱还是电脑——接下来的任务是备份与重新编译GCC,只是这两件任务,看起来就需要忙一天。

今日编译并安装的软件包列表:

GCC-11.2.0
Pkg-config-0.29.2
Ncurses-6.2
Sed-4.8
Psmisc-23.4
Bison-3.7.6
Grep-3.7
Bash-5.1.8
Libtool-2.4.6
GDBM-1.20
Gperf-3.1
Expat-2.4.1
Inetutils-2.1
Less-590
Perl-5.34.0
XML::Parser-2.46
Intltool-0.51.0
Autoconf-2.71
Automake-1.16.4
Kmod-29
Libelf from Elfutils-0.185
Libffi-3.4.2
OpenSSL-1.1.1l
Python-3.9.6
Ninja-1.10.2
Meson-0.59.1
Coreutils-8.32
Check-0.15.2
Diffutils-3.8
Gawk-5.1.0
Findutils-4.8.0
Groff-1.22.4
Gzip-1.10
IPRoute2-5.13.0
Kbd-2.4.0
Libpipeline-1.5.3
Make-4.3
Patch-2.7.6
Tar-1.34
Texinfo-6.8
Vim-8.2.3337
Eudev-3.2.10
Man-DB-2.9.4
Procps-ng-3.3.17
Util-linux-2.37.2
E2fsprogs-1.46.4
Sysklogd-1.5.1
Sysvinit-2.99
LFS-Bootscripts-20210608
Cpio-2.13
lz4-1.9.3(lz4-1.9.3.tar.gz)(make && make PREFIX=/usr install)
(这个是内核)Linux-5.13.12
Mdadm-4.1
Libaio-0.3.112
LVM2-2.03.13
Which-2.21
Libpng-1.6.37
FreeType-2.11.0
Popt-1.18
efivar-37
efibootmgr-17
GRUB-2.06 for EFI
dosfstools-4.2

Published inLiddy's Linux编译日志

Be First to Comment

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

5 − 1 =