文档章节

LFS笔记 00 准备环境

nirvanawgw
 nirvanawgw
发布于 2013/05/22 21:21
字数 932
阅读 815
收藏 10

最近没什么事,再玩一次LFS吧,在这里将具体的步骤记录下来,分享给大家。


先介绍一下我的环境,Ubuntu 13.04 Desktop amd64

虚拟机:VirtualBox Ubuntu 12.04 Server i386

LFS版本:7.3

文档下载地址:http://www.linuxfromscratch.org/lfs/downloads/7.3/

package下载地址:ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.3.tar


0.安装Ubuntu 12.04 Server i386

Desktop对于LFS的制作来说没有什么用,如何安装不说啦,网上都有。

注意两点:

安装i386,不是amd64,否则会有一些麻烦。

格式化磁盘时不要使用LVM分区,使用LVM也会造成一些麻烦。


1.配置SSH

安装openssh server,注意不是Java的SSH框架哦。使用它可以很方便的登录到终端上,强烈推荐。

sudo apt-get install openssh-server

客户端可以使用Putty,具体网上都有,不写了。


2. 安装必要软件包

sudo apt-get install build-essential gawk bison texinfo

可能还会缺少m4,patch两个包,如果没有的话也装上。


sudo apt-get install m4 patch


3.检查系统

生成脚本version-check.sh

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 [ -e /usr/bin/yacc ];
  then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
  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 [ -e /usr/bin/awk ];
  then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
  else echo "awk not found"; fi

gcc --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
echo "Texinfo: `makeinfo --version | head -n1`"
xz --version | head -n1

echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]
  then echo "gcc compilation OK";
  else echo "gcc compilation failed"; fi
rm -f dummy.c dummy
EOF

执行:


bash version-check.sh


4.分区

创建了两块虚拟硬盘,/dev/sda用来安装宿主系统,/dev/sdb用来编译安装LFS。

给/dev/sdb分区,我使用cfdisk工具:


sudo apt-get install m4 patch


/dev/sdb1 交换分区

/dev/sdb2 目标系统根目录

如图:


5.格式化

格式化主分区/dev/sdb2为ext3:


sudo mkfs.ext3 /dev/sdb2


格式化交换分区/dev/sdb1:


sudo mkswap /dev/sdb1


6.使用root帐号

受不了sudo了,直接用root吧~

sudo passwd root
根据提示输入root密码。

切换到root:

sudo passwd root


7.挂载新分区

设置环境变量:

export LFS=/mnt/lfs
创建文件夹并挂载:
mkdir -pv $LFS
mount -v -t ext3 /dev/sdb2 $LFS

可以检查一下当前的磁盘挂载情况,应该会多出一个/dev/sdb2


df -h


8.下载源代码包

wget ftp://ftp.lfs-matrix.net/pub/lfs/lfs-packages/lfs-packages-7.3.tar

创建文件夹并设置权限:

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

网速快的直接下载之: 网速一般的人也可以用迅雷等工具下载后scp到宿主机器上。

下载完成后,解压,验证md5 hash:

tar -vxf lfs-packages-7.3.tar
mv -v 7.3/* $LFS/sources
pushd $LFS/sources
md5sum -c md5sums
popd


9.继续

创建tools文件夹并做软链接:

mkdir -v $LFS/tools
ln -sv $LFS/tools /
添加lfs用户:
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
设置密码:
passwd lfs
获取权限:
chown -v lfs $LFS/tools
chown -v lfs $LFS/sources
切换到lfs用户:
su - lfs


9. 准备环境

创建.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=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
生效:

source ~/.bash_profile

并行编译(可选):

如果双核CPU可以使用'-j 2',四核使用‘-j 4’,其它类似。

export MAKEFLAGS='-j 2'



环境准备完成!

© 著作权归作者所有

nirvanawgw
粉丝 2
博文 5
码字总数 4605
作品 0
西安
程序员
私信 提问
加载中

评论(2)

nirvanawgw
nirvanawgw 博主

引用来自“老钱II”的评论

打算参考搞一下。
我没时间更新了,去参考原文吧:http://www.linuxfromscratch.org/lfs/index.html
老钱II
老钱II
打算参考搞一下。
51CTO《从零开始构建自己的Linux》实战视频课程上线了!

  自己做一个或做一次Linux操作系统,是最有效地深入学习Linux操作系统原理方法。使用源代码零开始构建一个Linux,即从宏观上了解构成操作系统各个组件及其之间的关系,又在微观上掌握大量...

dbtrain
2017/05/19
0
0
《从零开始构建自己的Linux》实战视频课程上线了!

  自己做一个或做一次Linux操作系统,是最有效地深入学习Linux操作系统原理方法。使用源代码零开始构建一个Linux,即从宏观上了解构成操作系统各个组件及其之间的关系,又在微观上掌握大量...

dbtrain
2017/05/19
0
0
《从零开始构建自己的Linux》实战视频课程上线了!

  自己做一个或做一次Linux操作系统,是最有效地深入学习Linux操作系统原理方法。使用源代码零开始构建一个Linux,即从宏观上了解构成操作系统各个组件及其之间的关系,又在微观上掌握大量...

dbtrain
2018/06/26
0
0
LFS6.2搭建笔记(一)

centos5 lfs6.2 [url]http://www.linuxfromscratch.org/[/url] 下个180M的包就可以开工了。 参考材料:Linux From Scratch(CN).CHM [url]http://lamp.linux.gov.cn/Linux/LFS-6.2/[/url] [ur......

twtcom001
2008/10/07
0
0
LFS遇到的一些问题之准备阶段

本机宿主系统archlinux,lfs SVN-20130711,参考文档 1.在离开或重新进入当前工作环境 (比如 su 成为root或者其他用户) 时不要忘记检查$LFS是否设置好。 echo $LFSexport LFS=/mnt/lfs 2.这个...

好铁
2014/04/15
2.9K
2

没有更多内容

加载失败,请刷新页面

加载更多

总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
22分钟前
2
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
25分钟前
2
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
4
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部