打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
从头打造自己的linux
谭逸逸
>《Ubuntu》
2011.12.02
关注
1. 你可能需要一张LFS live CD,或者预装任何一种带GCC的linux来作为开发安装环境,我用的Live CD版本是6.3 R2145,你可以看到,其实你可以用任何一个LFS的live cd,因为我们大部分东西都是从网络上获得,和LFS live cd没多大关系。你也可以从任何一款带有GCC的linux开始这段旅程。
2. Virtual Box,设置为:内存256,硬盘10G,如果你采用linux作为开发环境,则应该设置2个硬盘,每个10G,并在其中之一上安装带gcc的linux。
3. Virtual Box 网络链接通畅。
综述
简单来看,从头创建自己的linux分为三个步骤:
首先利用既有linux系统在目标硬盘上/tools目录下建立一个临时的编译环境。
接着利用chroot在目标硬盘上tools下的编译工具编译出linux内核和基本命令。
最后编译Grub,让它引导以后的硬盘启动,彻底脱离老旧的linux
让我们开始吧.
设置系统从Live CD(或从linux硬盘) 启动,,在启动过程中会出现选择时区等信息,你可以按照实际情况选择,也可以按照默认选择,简单点就是等待一会系统会自动进行选择。这里我选择时区为 Asia/Shanghai,选择本地语言为Chinese (Simplified, UTF-8),其它的都按默认选择了。
假设现在你已经到了linux的shell提示符下了:
一、 创建硬盘分区
我们需要在硬盘上进行编译工作,所以首先要创建硬盘分区:
Shell代码
cfdisk /dev/hda
//设置分区大小后
mkfs.xfs /dev/hda1
mkswap /dev/hda2
我将/dev/hda1设置为linux分区,/dev/hda2 设置为swap分区,重启以保证分区能正常使用。
二、 将硬盘分区挂载在/mnt/lfs目录下
Shell代码
export LFS=/mnt/lfs
mkdir -pv $LFS
mount /dev/hda1 $LFS
三、 创建工作目录: sources和tools
Shell代码
mkdir -v $LFS/sources
chmod -v a+wt $LFS/sources
mkdir -v $LFS/tools
ln -sv $LFS/tools /
chmod a+wt是将目录或文件的属性设置为1777,这样任何人都可以对其进行读写,同时创建$LFS/tools的链接,设置为/tools,以方便后面的引用。
四.创建工作组和用户lfs,同时授权
Shell代码
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',并设置用户环境:
Shell代码
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
这些基本和网上介绍的差不多,每次从live-cd启动,都要重复上述步骤,谁叫咱是从CD启动呢,为了方便起见,你象我一样把这些命令写成shell script。每次调用一下就好。
创建临时编译环境
因为我不喜欢用旧版本的东西,所以LFS CD现在对我就没用处了。我维护了一个简单的脚本,用它可以下载最新的源代码:
Shell代码
wget http://ftp.gnu.org/gnu/autoconf/autoconf-
2.65
.tar.bz2
wget http://ftp.gnu.org/gnu/automake/automake-
1.11
.
1
.tar.bz2
wget http://ftp.gnu.org/gnu/bash/bash-
4.1
.tar.gz
wget http://ftp.gnu.org/gnu/binutils/binutils-
2.20
.
1
.tar.bz2
wget http://ftp.gnu.org/gnu/bison/bison-
2.4
.
1
.tar.bz2
wget http://www.bzip.org/
1.0
.
5
/bzip2-
1.0
.
5
.tar.gz
wget http://ftp.gnu.org/gnu/coreutils/coreutils-
8.4
.tar.gz
wget http://ftp.gnu.org/gnu/dejagnu/dejagnu-
1.4
.
4
.tar.gz
wget http://ftp.gnu.org/gnu/diffutils/diffutils-
2.9
.tar.gz
wget http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-
1.41
.
10
.tar.gz
wget http://expect.nist.gov/src/expect-
5.43
.
0
.tar.gz
wget ftp://ftp.astron.com/pub/file/file-
5.04
.tar.gz
wget http://ftp.gnu.org/gnu/findutils/findutils-
4.4
.
2
.tar.gz
wget http://prdownloads.sourceforge.net/flex/flex-
2.5
.
35
.tar.bz2
wget http://ftp.gnu.org/gnu/gawk/gawk-
3.1
.
7
.tar.bz2
wget http://ftp.gnu.org/gnu/gcc/gcc-
4.5
.
0
/gcc-
4.5
.
0
.tar.bz2
wget http://ftp.gnu.org/gnu/gdbm/gdbm-
1.8
.
3
.tar.gz
wget http://ftp.gnu.org/gnu/gettext/gettext-
0.17
.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-
2.11
.
1
.tar.bz2
wget http://ftp.gnu.org/gnu/gmp/gmp-
5.0
.
1
.tar.bz2
wget http://ftp.gnu.org/gnu/grep/grep-
2.5
.
4
.tar.bz2
wget http://ftp.gnu.org/gnu/groff/groff-
1.20
.
1
.tar.gz
wget ftp://alpha.gnu.org/gnu/grub/grub-
1.97
.
2
.tar.gz
wget http://ftp.gnu.org/gnu/gzip/gzip-
1.4
.tar.gz
wget http://sethwklein.net/iana-etc-
2.30
.tar.bz2
wget http://ftp.gnu.org/gnu/inetutils/inetutils-
1.7
.tar.gz
wget http://developer.osdl.org/dev/iproute2/download/iproute2-
2.6
.
33
.tar.bz2
wget http://ftp.altlinux.com/pub/people/legion/kbd/kbd-
1.15
.
1
.tar.gz
wget http://www.greenwoodsoftware.com/less/less-
436
.tar.gz
wget http://www.linuxfromscratch.org/lfs/downloads/development/lfs-bootscripts-
20100124
.tar.bz2
wget http://ftp.gnu.org/gnu/libtool/libtool-
2.2
.6b.tar.gz
wget http://www.kernel.org/pub/linux/kernel/v2.
6
/linux-
2.6
.
33
.tar.bz2
wget http://ftp.gnu.org/gnu/m4/m4-
1.4
.
14
.tar.bz2
wget http://ftp.gnu.org/gnu/make/make-
3.81
.tar.bz2
wget http://download.savannah.gnu.org/releases/man-db/man-db-
2.5
.
7
.tar.gz
wget http://www.kernel.org/pub/linux/docs/manpages/Archive/man-pages-
3.24
.tar.bz2
wget http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/module-init-tools-
3.11
.
1
.tar.bz2
wget http://www.mpfr.org/mpfr-
2.4
.
2
/mpfr-
2.4
.
2
.tar.bz2
wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-
5.7
.tar.gz
wget http://ftp.gnu.org/gnu/patch/patch-
2.6
.
1
.tar.bz2
wget http://cpan.org/src/
5.0
/perl-
5.10
.
1
.tar.bz2
wget http://pkgconfig.freedesktop.org/releases/pkg-config-
0.23
.tar.gz
wget http://procps.sourceforge.net/procps-
3.2
.
8
.tar.gz
wget http://prdownloads.sourceforge.net/psmisc/psmisc-
22.10
.tar.gz
wget http://ftp.gnu.org/gnu/readline/readline-
6.1
.tar.gz
wget http://ftp.gnu.org/gnu/sed/sed-
4.2
.
1
.tar.bz2
wget ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-
4.1
.
4.2
.tar.bz2
wget http://www.infodrom.org/projects/sysklogd/download/sysklogd-
1.5
.tar.gz
wget ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/sysvinit-
2.86
.tar.gz
wget http://ftp.gnu.org/gnu/tar/tar-
1.22
.tar.bz2
wget http://prdownloads.sourceforge.net/tcl/tcl8.
5.8
-src.tar.gz
wget http://ftp.gnu.org/gnu/texinfo/texinfo-
4
.13a.tar.gz
wget http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-
151
.tar.bz2
wget http://www.linuxfromscratch.org/lfs/downloads/development/udev-config-
20100128
.tar.bz2
wget http://www.kernel.org/pub/linux/utils/util-linux-ng/v2.
17
/util-linux-ng-
2.17
.
1
.tar.bz2
wget ftp://ftp.vim.org/pub/vim/unix/vim-
7.2
.tar.bz2
wget ftp://ftp.vim.org/pub/vim/extra/vim-
7.2
-lang.tar.gz
wget http://www.zlib.net/zlib-
1.2
.
3
.tar.bz2
另一个脚本则用来下载LFS提供的一些补丁
Shell代码
wget http://www.linuxfromscratch.org/patches/lfs/development/bash-
4.1
-fixes-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/bison-
2.4
.
2
-gcc-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/bzip2-
1.0
.
5
-install_docs-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/coreutils-
8.4
-i18n-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/coreutils-
8.4
-uname-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/expect-
5.43
.
0
-spawn-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/expect-
5.43
.
0
-tcl_8.
5
.5_fix-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/flex-
2.5
.
35
-gcc44-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/gcc-
4.5
.
0
-startfiles_fix-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/gettext-
0.17
-upstream_fixes-
2
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/glibc-
2.11
.
1
-gcc_fix-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/kbd-
1.15
.
2
-backspace-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/make-
3.81
-upstream_fixes-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/patch-
2.6
.
1
-test_fix-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/perl-
5.12
.
0
-libc-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/procps-
3.2
.
8
-watch_unicode-
1
.patch
wget http://www.linuxfromscratch.org/patches/lfs/development/tar-
1.23
-overflow_fix-
1
.patch
感谢LFS工程师的努力工作,他们不断维护着这些补丁。
接下来我们开始编译我们的临时环境,因为只是为最终的目标作一个过渡,我们不打算对编译过程作任何优化,优化的过程留在真正创建我们的linux时候再做。
下面我们逐一编译所需的编译工具。
1. Binutils:包括连接器、汇编器和其他处理目标文件(ojb)的工具。
Shell代码
mkdir -v ../binutils-build
cd ../binutils-build
../binutils-
2.20
.
1
/configure \
--target=$LFS_TGT --prefix=/tools \
--disable-nls --disable-werror
make
case $(uname -m) in
x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac
make install
2.GCC编译器,GCC 4.4依赖2个包:gmp和mpfr,而最新的GCC 4.5还需要一个mpc,依次下好这些浮点运算包。
Shell代码
继续编译gcc-4.3.3,按照LFS站点的方法总是报错:cannot computer suffix of the obejct,搞得我很苦恼,经过一天的troubleshooting,用以下方法可以解决:
Java代码
LDFLAGS=
'-L/tools/lib -R/tools/lib'
或者
LD_RUN_PATH=/tools/lib
LD_LIBRARY_PATH=/tools/lib
export LDFLAGS LD_LIBRARY_PATH LD_RUN_PATH
CC=
"gcc -B/usr/bin/"
../gcc-
4.3
.
3
/configure --prefix=/tools \
--with-local-prefix=/tools --disable-nls \
--disable-shared --enable-languages=c,c++ --with-gmp=/tools --with-mpfr=/tools
make bootstrap
make install
现在可以去喝咖啡了。。。。全部gcc的语言stage 3编译完成大概需要两个半小时,好好享受咖啡的味道吧。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
Linux 命令行下载工具
在OS X Lion 10.8.4 x86
linux下安装gcc详解
CentOS系统服务器环境配置
微生物多样性专题 | 扩增子测序分析实战(三)软件安装
LINUX命令行下以HTTP方式下载文件的方法
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×