Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7

一. 准备工作

  1. 需要一个Linux宿主系统,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架构上可以运行的其它发行版

 

二. LFS目标架构

    LFS主要支持 AMD/Intel 的 x86(32 位)和 x86_64(64 位) 的目标架构。另外,做一些更改可以让LFS 顺利地在 Power PC 和

  ARM CPU 上运行。

    假如按照本文的默认方式构建,那么你将得到一个“纯” 64 位系统————这意味着你仅能够执行64 位的程序。有一些异常老旧的

  包无法在“纯” 64位系统上构建,或者是需要专门的编译指令。通常出现这样的问题是因为这些包包含有一些与32 位系统紧密相关的

  汇编指令。大多数问题都有解决方案,但可能需要特别的方法或者是补丁。

 

三. 宿主系统需求

    确保宿主系统已经包含了所有合适的软件版本,具有了编译程序的能力,这对于一个现代的Linux发行版系统不是一个问题。

  你需要运行以下指令:

cat > version-check.sh << "EOF"
#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
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 yacc 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`
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1
xz --version | head -n1
echo '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
EOF
bash version-check.sh
View Code

  同时,还请进行库文件的一致性检查,这些文件应该要么都在或者是都缺失,而不应该只有一两个。

cat > library-check.sh << "EOF"
#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
echo $lib: $(if find /usr/lib* -name $lib|
grep -q $lib;then :;else echo not;fi) found
done
unset lib
EOF
bash library-check.sh
View Code

 

四. 准备新分区

  1. 创建新分区    

    a. 创建10G的空闲分区,存储所有的源码包及满足编译的需求。

    b. 如果宿主系统创建了swap 分区,则LFS 系统可以与之共用,如果没有,则新建,推荐大小为物理内存的两倍左右。

  2. 在分区上创建文件系统   

    a. 在 LFS 分区上创建 ext4 文件系统,运行以下命令:

mkfs -v -t ext4 /dev/<xxx>

    b. 如果是新建 swap 分区,需要用下面的命令初始化:

mkswap /dev/<yyy>

    其中,<xxx><yyy>都需要替换为实际的设备名称(形如 sda1,sdb2)。

 

你可能感兴趣的:(Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7)