[转载]完全手工打造自定义的LINUX(一)

LFS相关

LFS是Linux From Scratch的简称,LFS 存在的一个重要原因是可以帮助人们学习 linux 系统内部是如何工作的。构建一个 LFS 系统会帮助演示是什么使 linux 运转,各种组件如何在一起互相依靠的工作。最好的事情之一通过这种学习可以获得完全根据自己的需求定制 linux 系统的能力。

LFS 的一个关键的好处是它让用户对于系统有更多的控制,而不是依靠于他人的 linux 实现。在 LFS 的世界里,你自己坐在司机的位置,掌控系统的每一个细节,比如目录布局和启动脚本配置等等。你也能掌控在哪里、为何、以及怎样安装每一个程序。有关LFS 相关的资料可以去这个链接中查找.http://www.linuxfromscratch.org/ 。

本文的环境为VM5.5搭建,其 中分配给虚拟机的内存为256M,硬盘大小为8G,当然,真正完成后系统的大小不到600M,但是在编译时至少需要3G的空间。为了方便使用,其中的软件 包可以去LFS项目中现成的ISO包,地址为 http://kerrek.linuxfromscratch.org/pub/lfs-livecd/ lfslivecd-x86-6.3-r2130.iso,当然,假如想使用更新的软件,请去相应的网站。这里的用的是lfslivecd- x86-6.3-r2130.iso。

由于制作的过程比较长,可能会持续好几天,假如是通过VM来做的话,可以利用它的暂停功能来保护现场,使用时间启动现场继续制作过程。

注重:这里出现的指令都是必须要输入的指令,不同于以前的文章风格。

一:初始化制作环境。

在使用VM时有一个麻烦的地方,它不能从物理机器保存的文件中通过复制粘贴命令的方式来进行安装制作,而LFS有很多的编译指令或其它命令都大同小异,本着方便至上的原因,所以开启它的网络功能,然后通过远程连接工具(Putty,SshClient)来进行指令操作。

使用光盘启动,没什么好说的,到了设置系统时间和地区时如下图所示:

1:完成后会启动到用户模式,输入下列指令用开启网络功能并设置治理员密码。注重:在设置VM虚拟机时在有关网卡的设定中请使用"桥接"模式,否则可能获取不到IP,而且局域网中还要满足可以通过DHCP的方式来获取IP。

[root~]# /etc/rc.d/init.d/sshd start
[root~]# passwd root
2:通过SshClient连入主机,对硬盘执行分区操作 这里可以按照你自己的需要的分区,这里我按照设置一个根分区和一个交换分区为例,交换分区占用512M,其余的全部分给根分区,/dev/hda1为交换分区;/dev/hda2作为目标系统根目录。

cfdisk /dev/hda

保存退出后进行磁盘分区的格式化

mkswap /dev/hda1
mkfs.ext3 /dev/hda2

3:创建相应的文件和路径。 在这里要说明的是两个LiveCD下的重要目录/usr/share/LFS-BOOK-6.3-HTML目录存放的就是LFS手册;/lfs- sources里面存放的就是建造LFS所需要的源码包,不需要到处下软件了。 具体指令的作用可以参考相关文档,这里就不做具体说明了。所创建的符号链接使得将要编译的工具链总是位于 /tools 目录下,这意味着编译器、汇编器和连接器在编译目标目录为/tools时总可以使用。

export LFS=/mnt/lfs
mkdir -pv $LFS
mount /dev/hda2 $LFS
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
chmod -v a+wt $LFS/sources
ln -sv /mnt/lfs/tools/ /

以 root 用户登录的时候,犯一个错误就足以损坏甚至摧毁系统,因此,本章我们推荐使用一个无特权的用户来编译和安装软件包。您可以使用您自己的用户名,不过为了建 立一个干净的工作环境,建议您新建一个名为 lfs 的组,并在其中添加一个名为 lfs 的用户,我们将在安装过程中使用这个用户。

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs /mnt/lfs/tools/
chown -v lfs /mnt/lfs/sources/
su - lfs

作为 lfs 用户登录的时候,初始 shell 通常是一个登陆shell,它会首先读取宿主系统的 /etc/profile 文件,然后继续读取 .bash_profile 文件来完成登录初始化。.bash_profile 文件中的 exec env -i.../bin/bash 命令用完全空的环境来取代当前的环境(除了继续 HOME, TERM, PS1 变量外)。这样能保证我们的编译环境不会被宿主系统中不必要的或者有潜在危险的环境变量所影响,从而确保获得一个干净的工作环境。

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
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH
EOF
source ~/.bash_profile
export
cd /mnt/lfs/sources/

 

 

 

完全手工打造自定义的LINUX(二)

完全手工打造自定义的LINUX(三)

 

» 本文链接地址:https://www.xidige.com/176

打开支付宝扫一扫,即可进行扫码打赏哦

扫码支持
扫码打赏,你说多少就多少

标签:

分享到:

扫一扫 在手机阅读、分享本文

上一篇: 下一篇:
评论区0人评论148人参与

电子邮件地址不会被公开。 必填项已用*标注

*

loading

赞助商广告