LFS 10.0 零基础中文安装教程 超详细 (一)

说明:
1、本人LFS系统做了很多次,成功过,失败过。也踩了很多雷,现将本人的经验及教训编写成本教程,也是给自己留个备忘录,以备随时翻阅!
2、本教程的命令大多来自于LFS 10.0 手册。
3、本教程命令经本人实际安装,一步一步编入本教程。确保每一条命令的准确。写本教程共做了6次LFS系统(2次LFS9.0,4次LFS10.0),前几天所做教程(名称:LFS 10.0 超详细搭建过程),没有经过测试就放到了网上,引来一些朋友转载。后来亲自测试,编译gcc时忘记删除目录,导致后来的在编译到内核的时候会出现GCC错误。
4、本教程适合初学者,高手大神请绕行。
5、LFS系统不象其它的系统或软件,安装只需数分钟或数十分钟,多的1、2个小时也基本可以搞定。LFS系统,是用天来计算。所以,安装LFS系统要有耐心。同时,做一次LFS系统,也会让你学到很多Linux方面的知识。
6、LFS系统不像其它Linux发行版,你根本就不知道它在你计算机里安装了什么软件。而LFS系统,我们是从源代码一个一个软件来安装。这就等于是自己做了一个发行版的Linux系统一样。
7、由于本人才疏学浅,教程中错误之处在所难勉。发现错误请留言告之,接到通知后,我会第一时间改正。同时,也让用本教程的朋友少走一些弯路。
8、建议:LFS手册,即是一本LFS安装指导书,同时也是很好的一本Linux下软件安装、系统设置、配置系统文件、了解计算机启动过程、软件运行等方面非常棒的书。有时间的朋友建议读一遍。

费话少说,进入正题!

                                   第一章  准备主机系统

1、宿主系统的思路:网上安装LFS系统,都是先安装一个linux宿主系统。然后用这个系统启动电脑,再进行LFS系统的安装。这样的作法,既浪费时间,也浪费硬盘空间。我的方法是采用VirtualBox虚拟机,用其它linux发行版的live-cd启动电脑,安装LFS必要的软件,使宿主机满足构建LFS系统的要求。这个宿主机及安装的软件只是存在于内存当中,不占用硬盘空间。我选择的是debian9.0.0的live-cd。下载地址:http://cdimage.debian.org/cdimage/archive/9.0.0-live/amd64/iso-hybrid/debian-live-9.0.0-amd64-xfce.iso (用迅雷或其它下载软件下载,否则下载速度会很慢。)

2、电脑配置如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

3、虚拟机版本:

LFS 10.0 零基础中文安装教程  超详细 (一)

4、建立虚拟机:

打开VirtualBox 6.1软件,给虚拟机取个名字,"版本(V)"选择“Other Linux(64-bit)”,内存尽量设置的大些,这样可又加快软件的编译速度。我设置的是4096M,虚拟硬盘:选择“现在创建虚拟硬盘”,点击“创建”,虚拟硬盘文件类型:选择“VDI(VirtualBox 磁盘映像)”点击“下一步”,存储在物理硬盘上:选择“动态分配”点击“下一步”,文件位置和大小:“文件位置”可以自定义,“存储空间”,这里根据自己硬盘的空间自定义。我设置了40G的空间,以便折腾Blfs。点击“创建”:

LFS 10.0 零基础中文安装教程  超详细 (一)

LFS 10.0 零基础中文安装教程  超详细 (一)

这样,虚拟机就创建成功了。

5、虚拟机设置:

右键点击虚拟机,选择“设置”在弹出的对话中选择“系统”,“启动顺序”取消“软盘启动”(将“软盘启动”前面的挑去掉),并将其移动到最后启动,
点击“处理器”,尽可量将处理器数量设置多些。我设置了“4”核心,点击左侧的“存储”,选择下载的debian 9.0.0 live-cd ,点击左侧“网络”,将“网卡1”中的“启用网络连接(E)”的“连接方式(A):”设置成“桥接网卡”。

LFS 10.0 零基础中文安装教程  超详细 (一)

LFS 10.0 零基础中文安装教程  超详细 (一)

LFS 10.0 零基础中文安装教程  超详细 (一)

LFS 10.0 零基础中文安装教程  超详细 (一)

点击下方的“Ok”按钮。完成虚拟机的设置。

6、启动虚拟机:

(1)选择左侧刚建的虚拟机,再点击右侧工具栏上的“启动”按钮,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

出现如图所示:

LFS 10.0 零基础中文安装教程  超详细 (一)

再次选择一下debian 9.0.0的live-cd光盘。

(2)启动后,会来到“Main Menu”的debian启动菜单,直接选择第一项“Debian GNU/Linux Live (kernel 4.9.0-3-amd64)”回车,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

(3)系统启动完成后,进入debian 9.0.0的安装桌面,点击左上角的“Applications”主菜单,选择“Terminal Emulator”终端,如图:
LFS 10.0 零基础中文安装教程  超详细 (一)

(4)终端窗口中输入:
sudu su root
(象以上的命令,是直接在终端或Putty直接输入,然后回车执行。)
切换到root用户。
更改root密码,输入:
passwd
回车后,输入两次一样的密码。这样,root密码设置完成。如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

(5)将终端窗口最小化,点击最下方“工具框”中的浏览器的图标(那个象地球的图标)如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

在浏览器中打开百度,搜索“debian yuan”,找到“网易debian源”点击进入,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

选择网易提供的debian源的地址,点击右键,选择“Copy”,复制下来,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

点击刚才最小化的终端窗口,输入:
nano /etc/apt/sources.list.d/base.list
(用Tab键自动补全功能,方便快捷。)
打开源文件,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

将里面原来的源地址注释掉,把网易的源地址粘贴到这里。直接右键“Paste”粘贴,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

将粘贴源地址前面的空格去掉,如下图:

LFS 10.0 零基础中文安装教程  超详细 (一)

按Ctrl+o回车保存,再按Ctrl+x退出。

以root用户运行:

apt-get update

(6)更新完软件源后,安装net-tools和openssh-server两个软件。
apt-get install net-tools
apt-get install openssh-server

apt-get install openssh-server命令输入完后,系统需要确认,在键盘上输入“y”键回车,电脑才会安装。

openssh-server安装完成后,需要对其进行配置。输入:

nano /etc/ssh/sshd_config

打开sshd_config文件,修改里的PermitRootLogin prohibit-password这条语句,将前面的#号去掉,并且把后面的prohibit-password去掉,换成yes。
如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

将PasswordAuthentication yes前面的#号去掉,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

改完后,保存退出。
启动ssh,输入:

/etc/init.d/ssh start

输入:

ifconfig

如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

这里需要记住网卡名、ip地址:
我的网卡名:enp0s3 (0是数字“零”,不是字母“O”),IP地址:192.168.3.27
两个“exit”退出终端窗口,关闭浏览器,将虚拟机最小化。至此,虚拟机配置全部完成。

7、Putty登录虚拟机:
打开Putty软件,输入IP地址:192.168.3.27,名字自己定义一个,想调整字体和字号的,在“Fonts”里,自己设置,弄好后保存一下,双击Putty终端的名字,打开Putty终端,输入用户名:root 密码:刚才在虚拟机里设置的root密码回车,就可以登录了。

LFS 10.0 零基础中文安装教程  超详细 (一)

8、安装live-cd缺少的软件:

创建version-check.sh脚本文件,来检查宿主机中的软件是否符合LFS系统的要求:


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
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
EOF

运行version-check.sh脚本文件,输入:

bash version-check.sh

如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

可以看出里面有很多缺少很多软件或链接没有创建。下面安装软件及创建链接。输入:

ln -sf bash /bin/sh //修改bash指向/bin/sh
apt-get install bison //安装bison
apt-get install g++ //安装g++
apt-get install texinfo //安装texinfo
apt-get install gawk //安装gawk
再次执行version-check.sh脚本,将输出的软件版本与下图(手册中提供)中的软件版本进行比较。注意:软件的版本不要比手册中提供的软件版本太低,或者太高。如下图:

LFS 10.0 零基础中文安装教程  超详细 (一)

以下是我机器上的截图:

LFS 10.0 零基础中文安装教程  超详细 (一)

上面两幅图对比可以看出,软件基本都满足要求。

9、硬盘分区:

(1)虚拟机只有一块硬盘sda,这里创建两个分区,sda1为交换分区,sda2为主分区。创建新分区,输入:

cfdisk /dev/sda

进入分区软件,如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

此处选择,dos分区,回车,如图 :

LFS 10.0 零基础中文安装教程  超详细 (一)

按键盘上的“n”键,建立交换分区,空间更改为:2048M,设置为主分区,回到主界面,按键盘上的“t”键,分区设置为交换分区(Linux swap / Solaris)。设置好后,如下图:

LFS 10.0 零基础中文安装教程  超详细 (一)

按向下光标,移动到未划分的空间,按键盘上的“n”键,剩余空间全部分配给主分区,直接回车,设置成主分区,回到主界面,按键盘上的“b”键,将主分区设置为启动分区。设置好后如下图:

LFS 10.0 零基础中文安装教程  超详细 (一)

注意:/dev/sda2 分区后面的“*”号,这代表,它是启动分区。
向右移动光标到“write”回车,键盘输入“yes”回车,保存分区。然后,按键盘上的“q”键退出分区软件。

(2)格式化分区:

mkfs -v -t ext4 /dev/sda2
mkswap /dev/sda1

10、设置$ LFS变量,输入:

export LFS=/mnt/lfs

11、挂载新分区,输入:

mkdir -pv $LFS
mount -v -t ext4 /dev/sda2 $LFS
/sbin/swapon -v /dev/sda1

12、创建源代码目录、并赋予权限、进入目录:

mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
cd $LFS/sources/

13、下载源代码:

我选择的是科大的镜像网站,下载地址:http://mirrors.ustc.edu.cn/lfs/lfs-packages/10.0/ 先下载wget-list文件。然后,打开这个文件,将里面文件名前方的网站改成:http://mirrors.ustc.edu.cn/lfs/lfs-packages/10.0/ 如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

然后,按“Ctrl+a”全选,复制。再Putty终端窗口中输入:

nano wget-list

在Putty窗口中新建的wget-list文件里,点击鼠标“中键”,刚才所选的链接就全部被粘贴到了这里。如图:

LFS 10.0 零基础中文安装教程  超详细 (一)

按键盘上的“Ctrl+o”回车保存,然后再换“ctrl+x”退出。Putty窗口中输入:

wget --input-file=wget-list --continue --directory-prefix=$LFS/sources

14、校验下载软件包是否正确,输入:

pushd $LFS/sources
  md5sum -c md5sums
popd

15、创建所需的目录,输入:

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

16、添加LFS用户

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

给lfs用户设置密码:

passwd lfs

授予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

切换到lfs用户:

su - lfs

17、设置环境

创建.bash_profile文件:

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

创建.bashrc文件:

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
export LFS LC_ALL LFS_TGT PATH
EOF

启用刚才创建的用户配置:

source ~/.bash_profile

至此,主机系统已经准备就绪。下一章开始构建临时系统。

猜你喜欢

转载自blog.51cto.com/9828355/2601749