LFS,编译自己的Linux系统 - 准备

概述


现在用的操作系统是Win8.1,用VMware创建一个虚拟机,3G内存(物理内存是6G,分一半),23G硬盘,其中3G用于swap分区,10G用于host
system,10G用于建立LFS系统。

创建虚拟机

使用VMware7.1.2创建一个虚拟机,硬盘23G,内存3G。

硬盘分区

分3个区,sda1,3G,用于swap;sda2,10G,用于ubuntu;sda3,10G,用于LFS。之所以要安装ubuntu,是因为需要有一个系统执行分区、建立文件系统、下载源代码、编译源代码等工作。分区在安装ubuntu时进行。

安装utuntu

安装的ubuntu版本为ubuntukylin-13.10-desktop-amd64。之所以安装这个版本,是因为硬盘里正好有这个镜像,懒得再下载其他镜像了。这里要注意的就是host
system版本不能太低,否则不能满足编译需求。

在安装ubuntu的同时,按照上边的方案进行硬盘分区。

检测必须的软件包

LFS里列出了编译系统所必须的软件包列表,同时给出了一个脚本用于检测各软件包的版本。

  • Bash-3.2 (/bin/sh should be a symbolic or hard link to
    bash)

  • Binutils-2.17 (Versions greater than 2.24 are not
    recommended as they have not been tested)

  • Bison-2.3 (/usr/bin/yacc should be a link to bison or
    small script that executes bison)

  • Bzip2-1.0.4

  • Coreutils-6.9

  • Diffutils-2.8.1

  • Findutils-4.2.31

  • Gawk-4.0.1 (/usr/bin/awk should be a link to
    gawk)

  • GCC-4.1.2 including the C++ compiler, g++
    (Versions greater than 4.8.2 are not recommended as they have not been
    tested)

  • Glibc-2.5.1 (Versions greater than 2.19 are not
    recommended as they have not been tested)

  • Grep-2.5.1a

  • Gzip-1.3.12

  • Linux Kernel-2.6.32

  • M4-1.4.10

  • Make-3.81

  • Patch-2.5.4

  • Perl-5.8.8

  • Sed-4.1.5

  • Tar-1.18

  • Xz-5.0.0
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
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
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

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 version-check.sh


安装缺失的软件包

sudo apt-get install bison
sudo apt-get install gawk
sudo apt-get install build-essential

Changelog


2014-05-25 首次发布

时间: 2024-10-09 17:34:50

LFS,编译自己的Linux系统 - 准备的相关文章

LFS,编译自己的Linux系统 - 前言

近期工作计划:1. 上班时,用Django编写一个网站:2. 下班时,用C#.WPF编写一个单机版应用软件:3. 其他时间,根据LFS编译自己的Linux系统. LFS是一本书,书中列出了从零开始编译一个Linux系统的步骤和资源,我看的是最新的7.5版本,更新日期是2014年3月2日. LFS官方网站:http://www.linuxfromscratch.org/ LFS下载地址:http://www.linuxfromscratch.org/lfs/downloads/stable/ LF

LFS,编译自己的Linux系统 - 完成准备工作

$LFS 确保环境变量$LFS已被定义. 定义:export LFS=/mnt/lfs 检查:echo $LFS 建立目录 $LFS/tools $LFS/tools目录用于存放和编译一些临时使用的工具,这些工具不是最终LFS系统的一部分. sudo mkdir –v $LFS/tools 建立一个软链接,这样在host system和LFS里可以使用同样的路径访问tools目录. sudo ln –sv $LFS/tools / 创建用户 创建一个用户用于编译,防止不小心破坏系统. sudo

LFS,编译自己的Linux系统 - 包和补丁

建立工作目录 我们先建立一个工作目录,用于存放下载的源代码和对源代码进行编译. sudo mkdir –v /mnt/lfs/sources sudo chmod –v a+wt /mnt/lfs/sources 下载软件包 首先下载软件包的列表. http://www.linuxfromscratch.org/lfs/view/stable/wget-list 将这个列表中的文件下载到本地. wget -i wget-list –P /mnt/lfs/sources Changelog 未完成

LFS,编译自己的Linux系统 - 准备分区

分区 之前在安装ubuntu时已经分好了. 建立文件系统 sudo mkfs –v –t ext4 /dev/sda3 挂载文件系统 sudo mkdir /mnt/lfs sudo mount –v –t ext4 /dev/sda3 /mnt/lfs Changelog 2014-05-25 首次发布. LFS,编译自己的Linux系统 - 准备分区,布布扣,bubuko.com

使用kernel编译+busybox定制Linux系统--实现ssh远程登录+web服务的迷你主机

在运维工作中很多时候我们需要裁剪Linux系统,减少系统性能的消耗,提升系统服务的性能,以往通过光盘安装的Linux都是比较臃肿的,但出现这样的需求后,我可以对Linux进行重新编译再busybox工具移植即可实现,接下来我们一步一步实现kernel编译+busybox定制Linux系统--实现ssh远程登录+web服务: 实现过程如下: 一.规划子主机的磁盘存储规划 1.添加一个大小为10G的硬盘 2.查询系统硬件信息参数: # lspci  00:00.0 Host bridge: Inte

LFS,编译自己的Linux系统 - 编译临时系统

Binutils-2.24 - Pass 1 解压缩 tar –jxvf binutils-2.24.tar.bz2 进入代码目录 cd tinutils-2.24 建立编译目录 mkdir –v ../binutils-build 切换到编译目录 cd ../binutils-build 授予configure可执行权限 chmod a+x ../binutils-2.24/configure 执行configure ../binutils-2.24/configure --prefix=/t

Linux就这个范儿 第16章 谁都可以从头再来--从头开始编译一套Linux系统

http://www.cnblogs.com/MYSQLZOUQI/p/5257200.html glibc库是什么?没有glibc库,就没有Linux.我们平时用过的malloc和strcpy等函数都是glibc这位仁兄提供的.除此之外,它还提供了网络编程中要用到的Socket API接口.之前曝光的glibc库漏洞 f

linux系统构建学习笔记

嵌入式系统构架:(硬件+软件)应用软件层: Application GNU C Library(glibc)文件系统: 系统层: API(Systern Call Interface) OS Core + Power Mannager+ File Manager + GUI Mannager TCP/IP HTTP WAP DataBase Browser DDI(Device Drver Interface) 板级支持:BSP:Board Support Package       OEM A

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

一. 准备工作 1. 一. LFS目标架构 LFS的主要目标架构是Intel的32位架构.32位的计算机架构最广泛的支持了Linux系统,同时32架构使开源软件和非开源的软件能够和谐的工作. 为了构建系统,先决条件是,除了后面提到的要求之外,你需要有一个已经存在的Linux系统,例如Ubuntu.Red Hat/Fedora 或者是其它适用于32架构的Linux发行版系统.还需要指出的是一个32位的发行版是可以在一个64位的AMD/Intel计算机上安装使用的. 从LFS所构建出来的默认的64位