你的位置:首页 > 操作系统

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


一. 准备工作

  1. 需要一个Linux宿主系统,例如Ubuntu、Red Hat/Fedora或者是其它适用于32架构的Linux发行版系统

 

二. LFS目标架构

    LFS的主要目标架构是Intel的32位架构。32位的计算机架构最广泛的支持了Linux系统,同时32架构使开源软件和

  非开源的软件能够和谐的工作。还需要指出的是一个32位的发行版是可以在一个64位的AMD/Intel计算机上安装使用的。

    从LFS所构建出来的默认的64位系统被认为是"纯净"的64系统。就是说它只支持64位的应用程序。构建一个"多种链接库"

  的系统需要将很多程序编译两次,一次是为了32位系统编译的,另外一次是为了64位系统而编译的。有许多软件包并不能在

  "纯净"的64位系统上正确的编译,或者它们需要专门的指令才能编译,通常这些软件包中都嵌入了一些具有32位特性的汇编成分,

  以致于如果在"纯净"的64位系统上编译它们的时候将会遭到失败。许多问题可以被解决,但是可能需要一些特殊的指令规则或补丁。

 

三. 宿主系统需求

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

  你需要运行以下指令:

cat > version-check.sh << "EOF"#!/bin/bash# Simple script to list version numbers of critical development toolsexport LC_ALL=Cbash --version | head -n1 | cut -d" " -f2-4echo "/bin/sh -> `readlink -f /bin/sh`"echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-bison --version | head -n1if [ -e /usr/bin/yacc ];then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";else echo "yacc not found"; fibzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2diff --version | head -n1find --version | head -n1gawk --version | head -n1if [ -e /usr/bin/awk ];then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";else echo "awk not found"; figcc --version | head -n1g++ --version | head -n1ldd --version | head -n1 | cut -d" " -f2- # glibc versiongrep --version | head -n1gzip --version | head -n1cat /proc/versionm4 --version | head -n1make --version | head -n1patch --version | head -n1echo Perl `perl -V:version`sed --version | head -n1tar --version | head -n1echo "Texinfo: `makeinfo --version | head -n1`"xz --version | head -n1echo 'main(){}' > dummy.c && g++ -o dummy dummy.cif [ -x dummy ]then echo "g++ compilation OK";else echo "g++ compilation failed"; firm -f dummy.c dummyEOFbash version-check.sh

View Code