LFS-II-准备工作

II 准备工作

第2节 准备宿主系统

换源

/etc/apt/sources.list

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

## Not recommended
# deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

检查编译环境

version-check.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
echo yacc is `/usr/bin/yacc --version | head -n1`
else
echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
echo awk is `/usr/bin/awk --version | head -n1`
else
echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
then echo "g++ compilation OK";
else echo "g++ compilation failed"; fi
rm -f dummy.c dummy

未通过:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
bash, version 4.4.20(1)-release
/bin/sh -> /bin/dash
ERROR: /bin/sh does not point to bash
Binutils: (GNU Binutils for Ubuntu) 2.30
./version-check.sh: line 10: bison: command not found
yacc not found
bzip2, Version 1.0.6, 6-Sept-2010.
Coreutils: 8.28
diff (GNU diffutils) 3.6
find (GNU findutils) 4.7.0-git
./version-check.sh: line 22: gawk: command not found
/usr/bin/awk -> /usr/bin/mawk
./version-check.sh: line 30: gcc: command not found
./version-check.sh: line 31: g++: command not found
(Ubuntu GLIBC 2.27-3ubuntu1.2) 2.27
grep (GNU grep) 3.1
gzip 1.6
Linux version 5.4.0-42-generic (buildd@lgw01-amd64-023) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #46~18.04.1-Ubuntu SMP Fri Jul 10 07:21:24 UTC 2020
./version-check.sh: line 36: m4: command not found
./version-check.sh: line 37: make: command not found
GNU patch 2.7.6
Perl version='5.26.1';
Python 3.6.9
sed (GNU sed) 4.4
tar (GNU tar) 1.29
./version-check.sh: line 43: makeinfo: command not found
xz (XZ Utils) 5.2.2
./version-check.sh: line 45: g++: command not found
g++ compilation failed

修复:

1
2
3
4
5
6
7
8
sudo ln -sf /bin/bash /bin/sh
sudo apt install bison
sudo apt install gawk
sudo apt install gcc
sudo apt install g++
sudo apt install make
sudo apt install texinfo

通过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bash, version 4.4.20(1)-release
/bin/sh -> /bin/bash
Binutils: (GNU Binutils for Ubuntu) 2.30
bison (GNU Bison) 3.0.4
/usr/bin/yacc -> /usr/bin/bison.yacc
bzip2, Version 1.0.6, 6-Sept-2010.
Coreutils: 8.28
diff (GNU diffutils) 3.6
find (GNU findutils) 4.7.0-git
GNU Awk 4.1.4, API: 1.1 (GNU MPFR 4.0.1, GNU MP 6.1.2)
/usr/bin/awk -> /usr/bin/gawk
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
(Ubuntu GLIBC 2.27-3ubuntu1.2) 2.27
grep (GNU grep) 3.1
gzip 1.6
Linux version 5.4.0-42-generic (buildd@lgw01-amd64-023) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #46~18.04.1-Ubuntu SMP Fri Jul 10 07:21:24 UTC 2020
m4 (GNU M4) 1.4.18
GNU Make 4.1
GNU patch 2.7.6
Perl version='5.26.1';
Python 3.6.9
sed (GNU sed) 4.4
tar (GNU tar) 1.29
texi2any (GNU texinfo) 6.5
xz (XZ Utils) 5.2.2
g++ compilation OK

创建新分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
root@ubuntu:/home/hippo# df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20509264 7120976 12323432 37% /
root@ubuntu:/home/hippo# fdisk /dev/sda

Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (41940992-125829119, default 41940992):
Last sector, +sectors or +size{K,M,G,T,P} (41940992-125829119, default 125829119): +4G

Created a new partition 2 of type 'Linux' and of size 4 GiB.

Command (m for help): p
Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
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: dos
Disk identifier: 0xb792acfb

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 41940991 41938944 20G 83 Linux
/dev/sda2 41940992 50329599 8388608 4G 83 Linux

Command (m for help): F
Unpartitioned space /dev/sda: 36 GiB, 38655754240 bytes, 75499520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Start End Sectors Size
50329600 125829119 75499520 36G

Command (m for help): p
Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
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: dos
Disk identifier: 0xb792acfb

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 41940991 41938944 20G 83 Linux
/dev/sda2 41940992 50329599 8388608 4G 83 Linux

Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (50329600-125829119, default 50329600):
Last sector, +sectors or +size{K,M,G,T,P} (50329600-125829119, default 125829119):

Created a new partition 3 of type 'Linux' and of size 36 GiB.

Command (m for help): p
Disk /dev/sda: 60 GiB, 64424509440 bytes, 125829120 sectors
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: dos
Disk identifier: 0xb792acfb

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 41940991 41938944 20G 83 Linux
/dev/sda2 41940992 50329599 8388608 4G 83 Linux
/dev/sda3 50329600 125829119 75499520 36G 83 Linux

Command (m for help): F
Unpartitioned space /dev/sda: 0 B, 0 bytes, 0 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Command (m for help): w
The partition table has been altered.
Syncing disks.


root@ubuntu:/home/hippo# partprobe
root@ubuntu:/home/hippo# df /
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20509264 6001700 13442708 31% /
root@ubuntu:/home/hippo# mkfs -v -t ext4 /dev/sda3
mke2fs 1.44.1 (24-Mar-2018)
fs_types for mke2fs.conf resolution: 'ext4'
warning: 256 blocks unused.

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2363904 inodes, 9437184 blocks
471859 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
288 block groups
32768 blocks per group, 32768 fragments per group
8208 inodes per group
Filesystem UUID: 250b6088-b9c9-4c1f-94a3-5ba2394c44b0
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624

Allocating group tables: done
Writing inode tables: done
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done

root@ubuntu:/home/hippo# export LFS=/mnt/lfs
root@ubuntu:/home/hippo# mkdir -pv $LFS
mkdir: created directory '/mnt/lfs'
root@ubuntu:/home/hippo# mount -v -t ext4 /dev/sda3 $LFS
mount: /dev/sda3 mounted on /mnt/lfs.
root@ubuntu:/home/hippo# mkswap /dev/sda2
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=a77d57df-a150-4fd8-aaab-9f71945697f1
root@ubuntu:/home/hippo# swapon /dev/sda2
root@ubuntu:/home/hippo# mkdir -pv $LFS/sources
mkdir: created directory '/mnt/lfs/sources'
root@ubuntu:/home/hippo# chmod -v a+wt $LFS/sources
mode of '/mnt/lfs/sources' changed from 0755 (rwxr-xr-x) to 1777 (rwxrwxrwt)

第3节 软件包和补丁

下载软件包

wget-list:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/acl-2.3.1.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/attr-2.5.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/autoconf-2.71.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/automake-1.16.4.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/bash-5.1.8.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/bc-5.0.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/binutils-2.37.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/bison-3.7.6.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/bzip2-1.0.8.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/check-0.15.2.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/coreutils-8.32.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/dbus-1.12.20.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/dejagnu-1.6.3.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/diffutils-3.8.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/e2fsprogs-1.46.4.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/elfutils-0.185.tar.bz2
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/eudev-3.2.10.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/expat-2.4.1.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/expect5.45.4.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/file-5.40.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/findutils-4.8.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/flex-2.6.4.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gawk-5.1.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gcc-11.2.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gdbm-1.20.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gettext-0.21.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/glibc-2.34.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gmp-6.2.1.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gperf-3.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/grep-3.7.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/groff-1.22.4.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/grub-2.06.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/gzip-1.10.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/iana-etc-20210611.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/inetutils-2.1.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/intltool-0.51.0.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/iproute2-5.13.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/Jinja2-3.0.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/kbd-2.4.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/kmod-29.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/less-590.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/lfs-bootscripts-20210608.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/libcap-2.53.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/libffi-3.4.2.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/libpipeline-1.5.3.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/libtool-2.4.6.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/linux-5.13.12.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/m4-1.4.19.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/make-4.3.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/man-db-2.9.4.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/man-pages-5.13.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/MarkupSafe-2.0.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/meson-0.59.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/mpc-1.2.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/mpfr-4.1.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/ncurses-6.2.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/ninja-1.10.2.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/openssl-1.1.1l.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/patch-2.7.6.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/perl-5.34.0.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/pkg-config-0.29.2.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/procps-ng-3.3.17.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/psmisc-23.4.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/Python-3.9.6.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/python-3.9.6-docs-html.tar.bz2
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/readline-8.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/sed-4.8.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/shadow-4.9.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/sysklogd-1.5.1.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/systemd-249.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/systemd-man-pages-249.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/sysvinit-2.99.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/tar-1.34.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/tcl8.6.11-src.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/tcl8.6.11-html.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/texinfo-6.8.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/tzdata2021a.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/udev-lfs-20171102.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/util-linux-2.37.2.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/vim-8.2.3337.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/XML-Parser-2.46.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/xz-5.2.5.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/zlib-1.2.11.tar.xz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/zstd-1.5.0.tar.gz
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/binutils-2.37-upstream_fix-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/bzip2-1.0.8-install_docs-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/coreutils-8.32-i18n-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/glibc-2.34-fhs-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/kbd-2.4.0-backspace-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/perl-5.34.0-upstream_fixes-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/sysvinit-2.99-consolidated-1.patch
https://mirrors.ustc.edu.cn/lfs/lfs-packages/11.0/systemd-249-upstream_fixes-1.patch
1
2
root@ubuntu:/home/hippo# 
wget --input-file=/home/hippo/wget-list --continue --directory-prefix=$LFS/sources
1
2
root@ubuntu:/mnt/lfs/sources# 
wget --input-file=wget-list --continue --directory-prefix=$LFS/sources

验证软件包完整性:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
#md5sums

95ce715fe09acca7c12d3306d0f076b2 acl-2.3.1.tar.xz
ac1c5a7a084f0f83b8cace34211f64d8 attr-2.5.1.tar.gz
12cfa1687ffa2606337efe1a64416106 autoconf-2.71.tar.xz
86e8e682bd74e6390a016c4d9c11267c automake-1.16.4.tar.xz
23eee6195b47318b9fd878e590ccb38c bash-5.1.8.tar.gz
8345bb81c576ddfc8c27e0842370603c bc-5.0.0.tar.xz
e78d9ff2976b745a348f4c1f27c77cb1 binutils-2.37.tar.xz
d61aa92e3562cb7292b004ce96173cf7 bison-3.7.6.tar.xz
67e051268d0c475ea773822f7500d0e5 bzip2-1.0.8.tar.gz
50fcafcecde5a380415b12e9c574e0b2 check-0.15.2.tar.gz
022042695b7d5bcf1a93559a9735e668 coreutils-8.32.tar.xz
68c5208c58236eba447d7d6d1326b821 dejagnu-1.6.3.tar.gz
6a6b0fdc72acfe3f2829aab477876fbc diffutils-3.8.tar.xz
128f5b0f0746b28d1e3ca7e263c57094 e2fsprogs-1.46.4.tar.gz
2b6e94c2eebc1f2194173e31bca9396e elfutils-0.185.tar.bz2
60b135a189523f333cea5f71a3345c8d eudev-3.2.10.tar.gz
a4fb91a9441bcaec576d4c4a56fa3aa6 expat-2.4.1.tar.xz
00fce8de158422f5ccd2666512329bd2 expect5.45.4.tar.gz
72540ea1cc8c6e1dee35d6100ec66589 file-5.40.tar.gz
eeefe2e6380931a77dfa6d9350b43186 findutils-4.8.0.tar.xz
2882e3179748cc9f9c23ec593d6adc8d flex-2.6.4.tar.gz
8470c34eeecc41c1aa0c5d89e630df50 gawk-5.1.0.tar.xz
31c86f2ced76acac66992eeedce2fce2 gcc-11.2.0.tar.xz
006c19b8b60828fd6916a16f3496bd3c gdbm-1.20.tar.gz
40996bbaf7d1356d3c22e33a8b255b31 gettext-0.21.tar.xz
31998b53fb39cb946e96abc310af1c89 glibc-2.34.tar.xz
0b82665c4a92fd2ade7440c13fcaa42b gmp-6.2.1.tar.xz
9e251c0a618ad0824b51117d5d9db87e gperf-3.1.tar.gz
7c9cca97fa18670a21e72638c3e1dabf grep-3.7.tar.xz
08fb04335e2f5e73f23ea4c3adbf0c5f groff-1.22.4.tar.gz
cf0fd928b1e5479c8108ee52cb114363 grub-2.06.tar.xz
691b1221694c3394f1c537df4eee39d3 gzip-1.10.tar.xz
f2854be57fe281e3ffc7364984467d2f iana-etc-20210611.tar.gz
4e7676d1980e57c7df665e5c5c3c1047 inetutils-2.1.tar.xz
12e517cac2b57a0121cda351570f1e63 intltool-0.51.0.tar.gz
15fc3786303a173a14e180afe4cd2ecd iproute2-5.13.0.tar.xz
3cac5be0096fcf7b32dcbd3c53831380 kbd-2.4.0.tar.xz
e81e63acd80697d001c8d85c1acb38a0 kmod-29.tar.xz
f029087448357812fba450091a1172ab less-590.tar.gz
6efd60044ad31a603a2c31c68919a988 lfs-bootscripts-20210608.tar.xz
094994d4554c6689cf98ae4f717b8e19 libcap-2.53.tar.xz
294b921e6cf9ab0fbaea4b639f8fdbe8 libffi-3.4.2.tar.gz
dad443d0911cf9f0f1bd90a334bc9004 libpipeline-1.5.3.tar.gz
1bfb9b923f2c1339b4d2ce1807064aa5 libtool-2.4.6.tar.xz
6e1728b2021ca19cc9273f080e6c44c7 linux-5.13.12.tar.xz
0d90823e1426f1da2fd872df0311298d m4-1.4.19.tar.xz
fc7a67ea86ace13195b0bce683fd4469 make-4.3.tar.gz
6e233a555f7b9ae91ce7cd0faa322bce man-db-2.9.4.tar.xz
3ac24e8c6fae26b801cb87ceb63c0a30 man-pages-5.13.tar.xz
9c8135ecde820094be2f42f457fb6535 meson-0.59.1.tar.gz
9f16c976c25bb0f76b50be749cd7a3a8 mpc-1.2.1.tar.gz
bdd3d5efba9c17da8d83a35ec552baef mpfr-4.1.0.tar.xz
e812da327b1c2214ac1aed440ea3ae8d ncurses-6.2.tar.gz
639f75bc2e3b19ab893eaf2c810d4eb4 ninja-1.10.2.tar.gz
ac0d4387f3ba0ad741b0580dd45f6ff3 openssl-1.1.1l.tar.gz
78ad9937e4caadcba1526ef1853730d5 patch-2.7.6.tar.xz
df7ecb0653440b26dc951ad9dbfab517 perl-5.34.0.tar.xz
f6e931e319531b736fadc017f470e68a pkg-config-0.29.2.tar.gz
d60613e88c2f442ebd462b5a75313d56 procps-ng-3.3.17.tar.xz
8114cd4489b95308efe2509c3a406bbf psmisc-23.4.tar.xz
ecc29a7688f86e550d29dba2ee66cf80 Python-3.9.6.tar.xz
0dae29e4c38af1b6b1a86b35c9e48923 python-3.9.6-docs-html.tar.bz2
e9557dd5b1409f5d7b37ef717c64518e readline-8.1.tar.gz
6d906edfdb3202304059233f51f9a71d sed-4.8.tar.xz
126924090caf72f3de7e9261fd4e10ac shadow-4.9.tar.xz
c70599ab0d037fde724f7210c2c8d7f8 sysklogd-1.5.1.tar.gz
6abc0ea61b8dd4a41b4e931a43b1bb90 sysvinit-2.99.tar.xz
9a08d29a9ac4727130b5708347c0f5cf tar-1.34.tar.xz
8a4c004f48984a03a7747e9ba06e4da4 tcl8.6.11-src.tar.gz
e358a9140c3a171e42f18c8a7f6a36ea tcl8.6.11-html.tar.gz
a91b404e30561a5df803e6eb3a53be71 texinfo-6.8.tar.xz
20eae7d1da671c6eac56339c8df85bbd tzdata2021a.tar.gz
27cd82f9a61422e186b9d6759ddf1634 udev-lfs-20171102.tar.xz
d659bf7cd417d93dc609872f6334b019 util-linux-2.37.2.tar.xz
e0325a4988b1b99b9c2e46fa853c1980 vim-8.2.3337.tar.gz
80bb18a8e6240fcf7ec2f7b57601c170 XML-Parser-2.46.tar.gz
aa1621ec7013a19abab52a8aff04fe5b xz-5.2.5.tar.xz
85adef240c5f370b308da8c938951a68 zlib-1.2.11.tar.xz
a6eb7fb1f2c21fa80030a47993853e92 zstd-1.5.0.tar.gz
3518fa864fe8d7ef65be4960f380b03b binutils-2.37-upstream_fix-1.patch
6a5ac7e89b791aae556de0f745916f7f bzip2-1.0.8-install_docs-1.patch
cd8ebed2a67fff2e231026df91af6776 coreutils-8.32-i18n-1.patch
9a5997c3452909b1769918c759eff8a2 glibc-2.34-fhs-1.patch
f75cca16a38da6caa7d52151f7136895 kbd-2.4.0-backspace-1.patch
fb42558b59ed95ee00eb9f1c1c9b8056 perl-5.34.0-upstream_fixes-1.patch
4900322141d493e74020c9cf437b2cdc sysvinit-2.99-consolidated-1.patch

md5sum -c md5sums

root@ubuntu:/mnt/lfs/sources# md5sum -c md5sums
acl-2.3.1.tar.xz: OK
attr-2.5.1.tar.gz: OK
autoconf-2.71.tar.xz: OK
automake-1.16.4.tar.xz: OK
bash-5.1.8.tar.gz: OK
bc-5.0.0.tar.xz: OK
binutils-2.37.tar.xz: OK
bison-3.7.6.tar.xz: OK
bzip2-1.0.8.tar.gz: OK
check-0.15.2.tar.gz: OK
coreutils-8.32.tar.xz: OK
dejagnu-1.6.3.tar.gz: OK
diffutils-3.8.tar.xz: OK
e2fsprogs-1.46.4.tar.gz: OK
elfutils-0.185.tar.bz2: OK
eudev-3.2.10.tar.gz: OK
expat-2.4.1.tar.xz: OK
expect5.45.4.tar.gz: OK
file-5.40.tar.gz: OK
findutils-4.8.0.tar.xz: OK
flex-2.6.4.tar.gz: OK
gawk-5.1.0.tar.xz: OK
gcc-11.2.0.tar.xz: OK
gdbm-1.20.tar.gz: OK
gettext-0.21.tar.xz: OK
glibc-2.34.tar.xz: OK
gmp-6.2.1.tar.xz: OK
gperf-3.1.tar.gz: OK
grep-3.7.tar.xz: OK
groff-1.22.4.tar.gz: OK
grub-2.06.tar.xz: OK
gzip-1.10.tar.xz: OK
iana-etc-20210611.tar.gz: OK
inetutils-2.1.tar.xz: OK
intltool-0.51.0.tar.gz: OK
iproute2-5.13.0.tar.xz: OK
kbd-2.4.0.tar.xz: OK
kmod-29.tar.xz: OK
less-590.tar.gz: OK
lfs-bootscripts-20210608.tar.xz: OK
libcap-2.53.tar.xz: OK
libffi-3.4.2.tar.gz: OK
libpipeline-1.5.3.tar.gz: OK
libtool-2.4.6.tar.xz: OK
linux-5.13.12.tar.xz: OK
m4-1.4.19.tar.xz: OK
make-4.3.tar.gz: OK
man-db-2.9.4.tar.xz: OK
man-pages-5.13.tar.xz: OK
meson-0.59.1.tar.gz: OK
mpc-1.2.1.tar.gz: OK
mpfr-4.1.0.tar.xz: OK
ncurses-6.2.tar.gz: OK
ninja-1.10.2.tar.gz: OK
openssl-1.1.1l.tar.gz: OK
patch-2.7.6.tar.xz: OK
perl-5.34.0.tar.xz: OK
pkg-config-0.29.2.tar.gz: OK
procps-ng-3.3.17.tar.xz: OK
psmisc-23.4.tar.xz: OK
Python-3.9.6.tar.xz: OK
python-3.9.6-docs-html.tar.bz2: OK
readline-8.1.tar.gz: OK
sed-4.8.tar.xz: OK
shadow-4.9.tar.xz: OK
sysklogd-1.5.1.tar.gz: OK
sysvinit-2.99.tar.xz: OK
tar-1.34.tar.xz: OK
tcl8.6.11-src.tar.gz: OK
tcl8.6.11-html.tar.gz: OK
texinfo-6.8.tar.xz: OK
tzdata2021a.tar.gz: OK
udev-lfs-20171102.tar.xz: OK
util-linux-2.37.2.tar.xz: OK
vim-8.2.3337.tar.gz: OK
XML-Parser-2.46.tar.gz: OK
xz-5.2.5.tar.xz: OK
zlib-1.2.11.tar.xz: OK
zstd-1.5.0.tar.gz: OK
binutils-2.37-upstream_fix-1.patch: OK
bzip2-1.0.8-install_docs-1.patch: OK
coreutils-8.32-i18n-1.patch: OK
glibc-2.34-fhs-1.patch: OK
kbd-2.4.0-backspace-1.patch: OK
perl-5.34.0-upstream_fixes-1.patch: OK
sysvinit-2.99-consolidated-1.patch: OK
root@ubuntu:/mnt/lfs/sources# ls
acl-2.3.1.tar.xz lfs-bootscripts-20210608.tar.xz
attr-2.5.1.tar.gz libcap-2.53.tar.xz
autoconf-2.71.tar.xz libffi-3.4.2.tar.gz
automake-1.16.4.tar.xz libpipeline-1.5.3.tar.gz
bash-5.1.8.tar.gz libtool-2.4.6.tar.xz
bc-5.0.0.tar.xz linux-5.13.12.tar.xz
binutils-2.37.tar.xz m4-1.4.19.tar.xz
binutils-2.37-upstream_fix-1.patch make-4.3.tar.gz
bison-3.7.6.tar.xz man-db-2.9.4.tar.xz
bzip2-1.0.8-install_docs-1.patch man-pages-5.13.tar.xz
bzip2-1.0.8.tar.gz MarkupSafe-2.0.1.tar.gz
check-0.15.2.tar.gz md5sums
coreutils-8.32-i18n-1.patch meson-0.59.1.tar.gz
coreutils-8.32.tar.xz mpc-1.2.1.tar.gz
dbus-1.12.20.tar.gz mpfr-4.1.0.tar.xz
dejagnu-1.6.3.tar.gz ncurses-6.2.tar.gz
diffutils-3.8.tar.xz ninja-1.10.2.tar.gz
e2fsprogs-1.46.4.tar.gz openssl-1.1.1l.tar.gz
elfutils-0.185.tar.bz2 patch-2.7.6.tar.xz
eudev-3.2.10.tar.gz perl-5.34.0.tar.xz
expat-2.4.1.tar.xz perl-5.34.0-upstream_fixes-1.patch
expect5.45.4.tar.gz pkg-config-0.29.2.tar.gz
file-5.40.tar.gz procps-ng-3.3.17.tar.xz
findutils-4.8.0.tar.xz psmisc-23.4.tar.xz
flex-2.6.4.tar.gz python-3.9.6-docs-html.tar.bz2
gawk-5.1.0.tar.xz Python-3.9.6.tar.xz
gcc-11.2.0.tar.xz readline-8.1.tar.gz
gdbm-1.20.tar.gz sed-4.8.tar.xz
gettext-0.21.tar.xz shadow-4.9.tar.xz
glibc-2.34-fhs-1.patch sysklogd-1.5.1.tar.gz
glibc-2.34.tar.xz systemd-249-upstream_fixes-1.patch
gmp-6.2.1.tar.xz systemd-man-pages-249.tar.xz
gperf-3.1.tar.gz sysvinit-2.99-consolidated-1.patch
grep-3.7.tar.xz sysvinit-2.99.tar.xz
groff-1.22.4.tar.gz tar-1.34.tar.xz
grub-2.06.tar.xz tcl8.6.11-html.tar.gz
gzip-1.10.tar.xz tcl8.6.11-src.tar.gz
iana-etc-20210611.tar.gz texinfo-6.8.tar.xz
inetutils-2.1.tar.xz tzdata2021a.tar.gz
intltool-0.51.0.tar.gz udev-lfs-20171102.tar.xz
iproute2-5.13.0.tar.xz util-linux-2.37.2.tar.xz
Jinja2-3.0.1.tar.gz vim-8.2.3337.tar.gz
kbd-2.4.0-backspace-1.patch XML-Parser-2.46.tar.gz
kbd-2.4.0.tar.xz xz-5.2.5.tar.xz
kmod-29.tar.xz zlib-1.2.11.tar.xz
less-590.tar.gz zstd-1.5.0.tar.gz

第4节 最后的准备工作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
mkdir -pv $LFS/{etc,var} $LFS/usr/{bin,lib,sbin}
for i in bin lib sbin; do
ln -sv usr/$i $LFS/$i
done
case $(uname -m) in
x86_64) mkdir -pv $LFS/lib64 ;;
esac

mkdir -pv $LFS/tools

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs

passwd lfs

chown -v lfs $LFS/{usr{,/*},lib,var,etc,bin,sbin,tools}
case $(uname -m) in
x86_64) chown -v lfs $LFS/lib64 ;;
esac

chown -v lfs $LFS/sources

su - lfs

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF

source ~/.bash_profile

重要

Important

The build instructions assume that the Host System Requirements, including symbolic links, have been set properly:

• bash is the shell in use.

• sh is a symbolic link to bash.

• /usr/bin/awk is a symbolic link to gawk.

• /usr/bin/yacc is a symbolic link to bison or a small script that executes bison.

重要

编译指南假定你已经正确地设置了 宿主系统要求 和符号链接:

  • shell 使用的是 bash
  • sh 是到 bash 的符号链接。
  • /usr/bin/awk 是到 gawk 的符号链接。
  • /usr/bin/yacc 是到 bison 的符号链接,或者是一个执行 bison 的小脚本。

再次强调构建的过程:

  1. 把所有源文件和补丁放到 chroot 环境可访问的目录,例如 /mnt/lfs/sources/。但是千万不能把源文件放在 /mnt/lfs/tools/ 中。
  2. 进入到源文件目录。
  3. 对于每个软件包:
  4. tar 程序解压要编译的软件包。在第五章中,确保解压软件包时你使用的是 lfs 用户
  5. 进入到解压后创建的目录中。
  6. 根据指南说明编译软件包。
  7. 回退到源文件目录。
  8. 除非特别说明,删除解压出来的目录。

Important

To re-emphasize the build process:

  1. Place all the sources and patches in a directory that will be accessible from the chroot environment such as /mnt/lfs/sources/.

  2. Change to the sources directory.

  3. For each package:

a. Using the tar program, extract the package to be built. In Chapter 5 and Chapter 6, ensure you are the lfs user when extracting the package.

b. Change to the directory created when the package was extracted.

c. Follow the book’s instructions for building the package.

d. Change back to the sources ddirectory unless instructed otherwise

问题:

软件包的所有者不是lfs,而是root。

总结

(1) *.tar 用 tar –xvf 解压
(2) *.gz 用 gzip -d或者gunzip 解压
(3) .tar.gz和.tgz 用 tar –xzf 解压
(4) *.bz2 用 bzip2 -d或者用bunzip2 解压
(5) *.tar.bz2用tar –xjf 解压
(6) *.Z 用 uncompress 解压
(7) *.tar.Z 用tar –xZf 解压
(8) *.rar 用 unrar e解压
(9) *.zip 用 unzip 解压
(10) *.xz 用 xz -d 解压
(11) *.tar.xz 用 tar -zJf 解压 // 实测使用tar -xvf

大家可以注意到后面所有的解包命令均使用tar xvf来完成,而不管文件的压缩方式是bz2还是gz,这是因为较新的tar程序都具有自动识别后缀名并自动调用相应的解压缩工具的能力,所以可以不需要指定压缩方式,但对于早期的tar命令则可能不具备这个功能因此需要你根据包的压缩方式来指定,如bz2使用j,gz使用z,对应上面的binutils则是tar xvjf /lfs-sources/binutils-2.17.tar.bz2

为lfs加入sudo权限:

1
2
3
4
5
6
7
su root //进入root用户

vim /etc/sudoers //打开sudo的配置文件

然后给普通用户kcc添加sudo权限,在“root ALL=(ALL)ALL”这一行下面,加入如下图所示的一行(用户名 ALL=(ALL) ALL),并保存。

然后强制修改 ':wq!'