分类: LINUX
2012-06-12 10:01:15
准备一个新的分区
介绍
在这一章中,存放LFS系统的分区将被准备好。我们将自己创建一个分区,并在上边创建文件系统,最后把它挂载到宿主系统上。
创建一个分区
像很多其他的操作系统,LFS通常安装在一个专用的分区上。推荐的方式是在一个有效地空分区上编译LFS系统,如果你有足够的未分配空间,那么就创建一个空白分区。
一个最基础的系统需要大约2.8GB的空间。这么多空间已经足够存储所有的源代码tar包并编译这些包。无论怎样,如果你想将LFS构建成一个基础的Linux系统,那么额外的软件将需要被安装,同时也就需要更多的额外空间了。一个10GB的空间为系统尺寸的增长提供了合理的支持。LFS系统自身并不会占用太多的空间。很大的一部分空间需求是为了提供充足的缓存空间。抱在被编译的时候需要大量的硬盘空间,而在软件编译完成进行安装的时候这些空间将会被回收。
由于通常没有足够的可用随机存储区用于编译工作,所以使用一个小硬盘分区作为swap分区将是不错的想法。swap分区将被内核用来存储那些不常使用的数据,同时把更多的可用内存留给那些活跃的进程。LFS系统可以与宿主系统共用一个swap分区,因为我们不太可能创建另外一个swap。
我们可以使用硬盘分区工具cfdisk或fdisk为我们的新硬盘创建分区,格式通常是分区软件名后伴随着硬盘名——例如/dev/hda,一个IDE的硬盘。如果需要的话,创建一个Linux本地分区和一个swap分区。如果你还不知道如何使用硬盘分区软件,请参考cfdisk(8)或fdisk(8)。
注意
对于有经验的用户来说,其他的分区方案也是可以的。新的LFS系统也可以位于一个RAID阵列或者是一个LVM逻辑卷上。无论怎样,这种方式你需要一个新的项目,一个更高级的课题。我们不建议第一次创建LFS的用户使用这些分区方法。
记住新分区的名称(例如hda5)。这本书将使用这个分区作为LFS的分区。还要记住swap分区的名字。这些内容在接下来的/etc/fstab文件的配置过程中将会被用到。
2.2.1 其他的分区问题
请求的建议分区尝尝会被贴在LFS邮件列表中。这是一个非常个人的话题。许多的发行版Linux系统除了将一小部分硬盘空间作为swap分区外,其它的整个空闲分区都将被使用。这对于LFS不是最佳的情况,有以下几个原因。这样做减小了灵活性,它使得在多个发行版之间共享数据或构件LFS系统变得更困难,使得备份需要花更多的时间,会因为低效的文件系统而浪费硬盘空间。
2.2.1.1 根分区
一个10GB的根分区(不要与/root根目录混淆了)对于多数系统来说是很不错的。这样一个分区提供了足够的空间来编译LFS系统,也足够编译多数BLFS,它也足够小,这样我们就可以为实验创建多个分区了(but is small enough so that multiple partitions can be easily created for experimentation)。
2.2.1.2 Swap分区
许多发行版Linux自动的创建一个swap分区。通常swap分区的大小被推荐设置为物理RAM大小的两倍,然而这是完全没有必要的。如果硬盘的空间有限,那么把swap分区设置成2GB,同时要检测swap分区的使用情况。
swap交换工作一直都不是很好。通常你可以感觉系统的swapping交换工作是不是只听从硬盘活动,或观察系统如何对命令做出反应。swapping的第一个反应是当我们运行一个不合理的命令的时候,例如尝试读取一个5GB的文件。如果此时swapping的发生处在一个正常的频率,最好的解决方案是为你的系统购买新的RAM。
2.2.1.3 便利分区
有几个其他的分区是不需要的,但是在设计一个硬盘布局的时候常被认为是需要的。下边列出的信息并不具有广泛性,但是可以作为一个引导。
l /boot 重点推荐。使用这个分区存储内核文件和其它的引导信息。为了在大磁盘上减小引导问题,将这第一个物理分区放到你的第一块硬盘上。100MB的boot分区是很充足的。
l /home 高度推荐。在各种发行版Linux和LFS构建系统之间分享你的家目录和用户定制。这个分区的空间通常会很大,这要依赖于可用的硬盘空间。
l /usr 当我们需要为一个瘦客户端或无盘工作站提供服务的时候通常需要提供一个独立的/usr分区。LFS通常不需要这个分区。5GB的空间已经能处理绝大多数的安装任务了。
l /opt 这个文档对于BLFS来说更有用处,它可以用来安装一些大型的包例如Gnome或KDE。如果要用,5到10GB的空间已经充足了。
l /tmp 一个独立的/tmp文件夹一般很少用,但是如果要配置一个瘦客户端它将很有用。如果需要这个分区,通常设置成超过2GB的空间。
l /usr/src 这个分区对于存储BLFS的源文件并将它们与LFS构建系统分享这些文件非常有用。它也可以作为编译BLFS包的地点。30-50GB的空间是很合理的。
如果你想要所有的分区在系统启动的时候都自动的挂载,你需要在/etc/fstab文件中指定它们。指定分区的详细说明将在8.2节中进行详细的解说,“创建/etc/fstab文件”。
在分区上创建文件系统
既然一个空的分区已经被建立了,文件系统也就可以被创建了。在Linux系统中广泛使用的文件系统是ext2,但是随着高性能硬盘的出现,日志文件系统变得越来越流行。ext3的应用范围超过了ext2,它增加了日志记录能力而且与E2fsprogs工具协作的很好。我们将创建一个ext3文件系统。创建其它格式文件系统的命令可以在以下站点找到。
为了创建一个ext3系统文件,运行下边的命令:
mke2fs -jv /dev/
将
注意
许多发布版系统在它们的文件系统创建工具(E2fsprogs)中使用自定义的特性。这可能会在你第九章中引导进入新的LFS系统的时候产生问题。LFS安装的E2fsprogs并不支持这些特性;你可能会得到一个类似“unsupported filesystem features, upgrade your e2fsprogs”的错误。使用下边的命令检测一下你的宿主系统是不是使用了自定义的特性:
debugfs -R feature /dev/
如果你的输出中现实的特性不止有has_journal、ext_attr、resize_inode、dir_index、filetype、sparse_super、large_file或者是needs_recovery,那么你的系统可能使用了自定义的特性。在这个例子中,为了避免随后出现问题,你需要重新编译E2fsprogs包,并使用这个新的E2fsprogs重新创建你的LFS分区:
cd /tmp
tar -xzvf /path/to/sources/e2fsprogs-1.42.tar.gz
cd e2fsprogs-1.42
mkdir -v build
cd build
../configure
make #note that we intentionally don't 'make install' here!
./misc/mke2fs -jv /dev/
cd /tmp
rm -rfv e2fsprogs-1.42
如果你使用已经存在的swap分区,你就不需要格式化它。如果你创建了新的swap分区,你需要用下边的命令对其进行初始化:
mkswap /dev/
将
挂载新的分区
既然文件系统已经被建立了,分区需要更方便的被访问。为了这个目的,分区需要挂载到一个选好的挂载点上。围了书中的这个目的,假设文件系统挂载到了/mnt/lfs上,但是要挂在什么目录上由你选择。
选择一个挂载点,并使用下边的命令将它指派到LFS环境变量上:
export LFS=/mnt/lfs
下一步,创建一个挂载点,并把LFS文件系统挂载到上边:
mkdir -pv $LFS
mount -v -t ext3 /dev/
将
如果要使用多重的LFS分区(例如一个是/另外一个是/usr),则使用下边的命令挂载它们:
mkdir -pv $LFS
mount -v -t ext3 /dev/
mkdir -v $LFS/usr
mount -v -t ext3 /dev/
将
确保这些分区在挂载的过程中没有附带太多的限制(例如nosuid、nodev或者是noatime选项)。不带任何参数的运行mount指令以查看为LFS分区配置了什么选项。如果nosuid、nodev或noatime被设置了,这个分区需要被重新挂载。
如果你使用了一个swap分区,确保可以使用swapon指令:
/sbin/swapon -v /dev/
将
现在已经建立了我们的工作空间,接下来可以下载我们所需的软件包了。
包和补丁
介绍
这一章中包含了一个包的列表,这些包需要被下载下来以用于构建一个基础的Linux系统。所列出的包版本号对应于已知的能够工作的软件版本,这本书是基于使用这些软件的。我们高度推荐你使用老的软件版本,而不是新版本的软件,因为一些命令在老版本中可以使用,但是在新版软件中可能不能使用。最新版的包通常也有需要工作空间的问题。这个工作区在本书以后的版本中将会被开发和巩固。
下载点并不总是可以访问的。如果这本书发布的时候下载点已经改变了,Google为搜索这些包提供了一个有用的搜索引擎。如果搜索没找到这些包,尝试一下在讨论的下载方法。
下载后的包和补丁需要保存在一个在整个构建过程中都能够方便浏览的地方。通常我们需要一个工作目录来解压开源代码并编译它们。$LFS/sources可以被用来作为存储tar包和补丁的地方,也可以作为工作目录。通过使用这个目录,工作中所需的元素都将保存在LFS分区中,而它们在整个编译过程中将都是有效的。
为了创建一个目录,在开始下载之前先以root用户运行下边的命令:
mkdir -v $LFS/sources
把这个目录设置成可写和sticky,“Sticky”意味着即使有多个用户在这个目录上有写权限,但是只有目录的拥有者才能够删除这个目录中的文件。下边的命令可以用来设置目录的write和sticky属性:
chmod -v a+wt $LFS/sources
下载多有包和补丁的一个较容易的方法是把一个wget-list作为wget命令的输出。例如:
wget -i wget-list -P $LFS/sources
此外,在LFS-7.0的开始有一个独立的文件,md5sums,这个软件可以被用来测试所有的包是不是被正确的下载了。把这个软件放到$LFS/sources文件夹中并运行下边的命令:
pushd $LFS/sources
md5sum -c md5sums
popd
3.2 所有的包
下载或获得下边的包:
l Autoconf (2.68) - 1,350 KB:
Home page:
Download:
MD5 sum: 864d785215aa60d627c91fcb21b05b07
l Automake (1.11.3) - 1,051 KB:
Home page:
Download:
MD5 sum: 3d72b2076eb4397ad5e9a2aace6357fd
l Bash (4.2) - 6,845 KB:
Home page:
Download:
MD5 sum: 3fb927c7c33022f1c327f14a81c0d4b0
l Binutils (2.22) - 19,505 KB:
Home page:
Download:
MD5 sum: ee0f10756c84979622b992a4a61ea3f5
l Bison (2.5) - 1,983 KB:
Home page:
Download:
MD5 sum: 9dba20116b13fc61a0846b0058fbe004
l Bzip2 (1.0.6) - 764 KB:
Home page:
Download: 1.0.6/bzip2-1.0.6.tar.gz
MD5 sum: 00b516f4704d4a7cb50a1d97e6e8e15b
l Check (0.9.8) - 546 KB:
Home page:
Download:
MD5 sum: 5d75e9a6027cde79d2c339ef261e7470
l Coreutils (8.15) - 4,827 KB:
Home page:
Download:
MD5 sum: 094909fafa86110140b32e4948941545
l DejaGNU (1.5) - 563 KB:
Home page:
Download:
MD5 sum: 3df1cbca885e751e22d3ebd1ac64dc3c
l Diffutils (3.2) - 1,976 KB:
Home page:
Download:
MD5 sum: 22e4deef5d8949a727b159d6bc65c1cc
l E2fsprogs (1.42) - 5,576 KB:
Home page:
Download:
MD5 sum: a3c4ffd7352310ab5e9412965d575610
l Expect (5.45) - 614 KB:
Home page:
Download:
MD5 sum: 44e1a4f4c877e9ddc5a542dfa7ecc92b
l File (5.10) - 595 KB:
Home page:
Download: ftp://ftp.astron.com/pub/file/file-5.10.tar.gz
MD5 sum: 4cea34b087b060772511e066e2038196
注意
文档中所列出的文件的下载地址可能已经不能用了。站点的管理员常常会在软件的新版本发布的时候将老版本软件的下载地址移除。一个软件正确版本的可用下载点也可以在。
l Findutils (4.4.2) - 2,100 KB:
Home page:
Download:
MD5 sum: 351cc4adb07d54877fa15f75fb77d39f
l Flex (2.5.35) - 1,227 KB:
Home page:
Download:
MD5 sum: 10714e50cea54dc7a227e3eddcd44d57
l Gawk (4.0.0) - 2,016 KB:
Home page:
Download:
MD5 sum: 7cdc48e99b885a4bbe0e98dcf1706b22
l GCC (4.6.2) - 70,308 KB:
Home page:
Download:
MD5 sum: 028115c4fbfb6cfd75d6369f4a90d87e
l GDBM (1.10) - 640 KB:
Home page:
Download:
MD5 sum: 88770493c2559dc80b561293e39d3570
l Gettext (0.18.1.1) - 14,785 KB:
Home page:
Download:
MD5 sum: 3dd55b952826d2b32f51308f2f91aa89
l Glibc (2.14.1) - 15,284 KB:
Home page:
Download:
MD5 sum: 5869a2620c6917dd392289864c6ce595
l GMP (5.0.4) - 1,650 KB:
Home page:
Download:
MD5 sum: 0881f4ff2617226c673fc534ac39d448
l Grep (2.10) - 1,048 KB:
Home page:
Download:
MD5 sum: 709915434d09f5db655e5ebd7fd6bb7f
l Groff (1.21) - 3,774 KB:
Home page:
Download:
MD5 sum: 8b8cd29385b97616a0f0d96d0951c5bf
l GRUB (1.99) - 4,544 KB:
Home page:
Download:
MD5 sum: ca9f2a2d571b57fc5c53212d1d22e2b5
l Gzip (1.4) - 886 KB:
Home page:
Download:
MD5 sum: e381b8506210c794278f5527cba0e765
l Iana-Etc (2.30) - 201 KB:
Home page:
Download:
MD5 sum: 3ba3afb1d1b261383d247f46cb135ee8
l Inetutils (1.9.1) - 1,941 KB:
Home page:
Download:
MD5 sum: 944f7196a2b3dba2d400e9088576000c
l IPRoute2 (3.2.0) - 365 KB:
Home page:
Download: iproute2-3.2.0.tar.xz
MD5 sum: 6f814291cc3d7f4312cf8c2c052da5f1
l Kbd (1.15.2) - 1,520 KB:
Download:
MD5 sum: 77d0b51454522bc6c170bbdc6e31202a
l Kmod (5) - 855 KB:
Download:
MD5 sum: b271c2ec54aba1c67bda63c8579d8c15
l Less (444) - 301 KB:
Home page:
Download: less-444.tar.gz
MD5 sum: 56f9f76ffe13f70155f47f6b3c87d421
l LFS-Bootscripts (20120229) - 32 KB:
Download:
MD5 sum: 9dd71c43f58143229d9f7b4025974dc9
l Libpipeline (1.2.0) - 670 KB:
Home page:
Download:
MD5 sum: dd3a987a0d2b594716baee2f73d61ae3
l Libtool (2.4.2) - 2,571 KB:
Home page:
Download:
MD5 sum: d2f3b7d4627e69e13514a40e72a24d50
l Linux (3.2.6) - 63,560 KB:
Home page:
Download: pub/linux/kernel/v3.x/linux-3.2.6.tar.xz
MD5 sum: b50e258e601a428d13bdcc9ae35f8340
注意
Linux内核经常被升级,通常是因为发现了安全缺陷。我们需要使用最新的3.2.x版的内核,除非勘误页中有其他的说明。对于那些受速度限制或带宽限制的希望升级Linux内核的用户,一个基线版本的包和补丁可以单独下载。This may save some time or cost for a subsequent patch level upgrade within a minor release。
l M4 (1.4.16) - 1,229 KB:
Home page:
Download:
MD5 sum: 8a7cef47fecab6272eb86a6be6363b2f
l Make (3.82) - 1,213 KB:
Home page:
Download:
MD5 sum: 1a11100f3c63fcf5753818e59d63088f
l Man-DB (2.6.1) - 2,449 KB:
Home page:
Download:
MD5 sum: 79658e8695c7b9b3be1ee340d78a4692
l Man-pages (3.35) - 1,650 KB:
Home page:
Download:
MD5 sum: e41432ee35a49036bbaf8d4598506e9c
l MPC (0.9) - 553 KB:
Home page:
Download: mpc/download/mpc-0.9.tar.gz
MD5 sum: 0d6acab8d214bd7d1fbbc593e83dd00d
l MPFR (3.1.0) - 1,176 KB:
Home page:
Download: mpfr-3.1.0/mpfr-3.1.0.tar.bz2
MD5 sum: 238ae4a15cc3a5049b723daef5d17938
l Ncurses (5.9) - 2,760 KB:
Home page: http://www.gnu.org/software/ncurses/
Download: ftp://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz
MD5 sum: 8cb9c412e5f2d96bc6f459aa8c6282a1
l Patch (2.6.1) - 248 KB:
Home page:
Download:
MD5 sum: 0818d1763ae0c4281bcdc63cdac0b2c0
l Perl (5.14.2) - 12,917 KB:
Home page:
Download:
MD5 sum: 04a4c5d3c1f9f19d77daff8e8cd19a26
l Procps (3.2.8) - 279 KB:
Home page:
Download: procps-3.2.8.tar.gz
MD5 sum: 9532714b6846013ca9898984ba4cd7e0
l Psmisc (22.15) - 382 KB:
Home page:
Download:
MD5 sum: 35e155bae2e499a6dcba35884560db1e
l Readline (6.2) - 2,225 KB:
Home page:
Download:
MD5 sum: 67948acb2ca081f23359d0256e9a271c
l Sed (4.2.1) - 878 KB:
Home page:
Download:
MD5 sum: 7d310fbd76e01a01115075c1fd3f455a
l Shadow (4.1.5) - 2,105 KB:
Home page:
Download: releases/shadow-4.1.5.tar.bz2
MD5 sum: d5f7a588fadb79faeb4b08b1eee82e9a
l Sysklogd (1.5) - 85 KB:
Home page:
Download: download/sysklogd-1.5.tar.gz
MD5 sum: e053094e8103165f98ddafe828f6ae4b
l Sysvinit (2.88dsf) - 108 KB:
Home page:
Download:
MD5 sum: 6eda8a97b86e0a6f59dabbf25202aa6f
l Tar (1.26) - 2,285 KB:
Home page:
Download:
MD5 sum: 2cee42a2ff4f1cd4f9298eeeb2264519
l Tcl (8.5.11) - 4,379 KB:
Home page:
Download:
MD5 sum: b01a9691c83990b3db0ce62d1012ca67
l Texinfo (4.13a) - 2,687 KB:
Home page:
Download:
MD5 sum: 71ba711519209b5fb583fed2b3d86fcb
l Udev (181) - 678 KB:
Home page: pub/linux/utils/kernel/hotplug/udev/udev.html
Download: pub/linux/utils/kernel/hotplug/udev-181.tar.xz
MD5 sum: 0d7af750702620a871b9f9b98d8ad859
l Udev Configuration Tarball - 7 KB:
Download: http://www.linuxfromscratch.org/lfs/downloads/7.1/udev-config-20100128.tar.bz2
MD5 sum: c1142e2c9be90996fcf56310f12a2652
l Util-linux (2.20.1) - 4,506 KB:
Home page: ~kzak/util-linux/
Download: pub/linux/utils/util-linux/v2.20/util-linux-2.20.1.tar.bz2
MD5 sum: 079b37517fd4e002a2e6e992e8b4e361
l Vim (7.3) - 8,675 KB:
Home page:
Download: ftp://ftp.vim.org/pub/vim/unix/vim-7.3.tar.bz2
MD5 sum: 5b9510a17074e2b37d8bb38ae09edbf2
l Xz Utils (5.0.3) - 1,002 KB:
Home page:
Download: /xz-5.0.3.tar.bz2
MD5 sum: 8d900b742b94fa9e708ca4f5a4b29003
l Zlib (1.2.6) - 490 KB:
Home page:
Download: zlib-1.2.6.tar.bz2
MD5 sum: dc2cfa0d2313ca77224b4d932b2911e9
Total size of these packages: about 285 MB
软件包的总大小:大约258MB
所需的补丁
除了软件包之外,还需要几个补丁。这些包改正软件包中的错误。这些通常也通过一些修改使软件更易用。下边的补丁在LFS系统的构建过程中将会被用到:
l Bash Upstream Fixes Patch - 22 KB:
Download:
MD5 sum: 244e3ff74d53792f1db32dea75dc8627
l Bzip2 Documentation Patch - 1.6 KB:
Download:
MD5 sum: 6a5ac7e89b791aae556de0f745916f7f
l Coreutils Internationalization Fixes Patch - 123 KB:
Download:
MD5 sum: 70953451fa1d0e950266b3d0477adb8d
l Coreutils Uname Patch - 1.6 KB:
Download:
MD5 sum: 500481b75892e5c07e19e9953a690e54
l Flex GCC-4.4.x Patch - 1 KB:
Download:
MD5 sum: ad9109820534278c6dd0898178c0788f
l GCC Cross Compile Patch - 1.8 KB:
Download:
MD5 sum: 1b7886a7a4df3a48617e88a481862264
l GCC Startfiles Fix Patch - 1.5 KB:
Download:
MD5 sum: 799ef1971350d2e3c794f2123f247cc6
l Glibc Bug Fixes Patch - 5.5 KB:
Download:
MD5 sum: 13bdfb7db1654d9c3d7934d24479a6c4
l Glibc Bug Sort Relocatable Objects Patch - 8.0 KB:
Download:
MD5 sum: 740e71017059a4290761db0cc9dd63f3
l Glibc GCC Build Fix Patch - 2.5 KB:
Download:
MD5 sum: d1f28cb98acb9417fe52596908bbb9fd
l Glibc GCC CPUID Patch - 0.8 KB:
Download:
MD5 sum: 4f110dc9c8d4754fbda841492ce796b4
l Kbd Backspace/Delete Fix Patch - 12 KB:
Download:
MD5 sum: f75cca16a38da6caa7d52151f7136895
l MPFR Fixes Patch - 17 KB:
Download:
MD5 sum: 6a1a0be6f2326e237ce27a0254e360a5
l Patch Testsuite Fix Patch - 1 KB:
Download:
MD5 sum: c51e1a95bfc5310635d05081472c3534
l Perl Libc Patch - 1 KB:
Download:
MD5 sum: 23682f20b6785e97f99d33be7719c9d6
l Perl Security Patch - 1 KB:
Download: http://www.linuxfromscratch.org/patches/lfs/7.1/perl-5.14.2-security_fix-1.patch
MD5 sum: 7fa3e7e11fecf9d75f65452d700c3dd5
l Procps HZ Errors Patch - 2.3 KB:
Download:
MD5 sum: 2ea4c8e9a2c2a5a291ec63c92d7c6e3b
l Procps Watch Patch - 3.5 KB:
Download:
MD5 sum: cd1a757e532d93662a7ed71da80e6b58
l Readline Upstream Fixes Patch - 1.3 KB:
Download:
MD5 sum: 3c185f7b76001d3d0af614f6f2cd5dfa
l Shadow nscd Patch - 1.1 KB:
Download:
MD5 sum: 6fd6a209c1aa623bad913fcff20b7d8e
补丁的总大小:大约209.5KB
除了上边所需的补丁,还有一些由LFS社区创建的可选的补丁。这些可选的补丁解决了一些小问题或者使得一些默认情况下不能用的功能变得可以用。如果你愿意可以看一下位于的补丁数据库并获得一些适合你系统的额外补丁。