零起点构建自己的Linux ( LFS-6.2-5 + BLFS-6.2.0 )
时间:2007-05-17
来源:互联网
适合人群:会使用键盘和鼠标,能耐心看完本文并且反复练习的人。
准备工作:计算机一台,lfslivecd-6.2-5的CD光盘一张。
最低硬件配置:中央处理器一颗,1GB硬盘,20M内存,CD或DVD光驱一台。
推荐硬件配置:CPU (600MHZ以上) ,4GB或者更大的硬盘空间,128M以上的内存。8倍速以上的CD光驱。
LFS的全称: linux from scratch
用google语言工具翻译一下,意思是: linux系统从零开始
推荐资源:
论坛
http://www.linuxsir.org/bbs
Linux 发行版 LFS 讨论区
LFS网站首页以及网站推荐的lfslivecd下载站点
http://www.linuxfromscratch.org/
http://www.linuxfromscratch.org/livecd/download.html
参考资料
LFS-6.2中文手册 http://www.linuxsir.org/bbs/showthread.php?t=268557
金步国作品列表 http://lamp.linux.gov.cn/jinbuguo_florilegium.html
豹老师的博客 http://youbest.cublog.cn
linuxsir论坛LFS版块讨论版以及精华区
在线翻译
http://www.dict.cn
http://www.google.com (语言工具)
本文在linuxsir论坛的链接 http://www.linuxsir.org/bbs/showthread.php?t=302685
我的博客 huohuliaisili.cublog.cn
博文地址 http://blog.chinaunix.net/u/25309/showart_302261.html
备份/恢复MBR和分区表以及无备份修复MBR和分区表错误,浅谈引导故障和分区方案。
LFS BLFS CLFS CBLFS 相关资料:
http://www.linuxfromscratch.org/
LFS镜像站点:
http://mirror.lupaworld.com
CLFS 镜像信息: http://trac.cross-lfs.org/wiki/mirrors/ftp
LiveCD (正式版) http://www.linuxfromscratch.org/livecd/download.html
LiveCD (测试版) http://ums.usu.ru/~patrakov/test/
BLFS-6.2在线手册
http://www.linuxfromscratch.org/blfs/view/stable/
http://www.linuxfromscratch.org/blfs/view/svn/
CLFS在线手册
http://cross-lfs.org/view/clfs-embedded/
http://cross-lfs.org/view
LFS / CLFS 开发版本:
http://www.linuxfromscratch.org/lfs/view
http://www.linuxfromscratch.org/lfs/view/development/
http://www.linuxfromscratch.org/clfs/view/
CBLFS 在线手册
http://cblfs.cross-lfs.org/index.php/Main_Page
kernel
http://www.kernel.org/pub/linux/kernel/v2.6/
详解 Linux 的 fdisk
--------------------------------------------------------------------------------------
Linux中的fdisk是我目前发现的最专业的分区工具。它不做多的事情,它只对分区表进行操作,不去管其它任何与分区表无关的事情。
如果你对分区不了解,不知道如何分区,如何备份/恢复分区表,不会解决一些分区表引起的故障,你应该先了解这些内容。如果你能够十分熟练的解决常见的分区表错误和引导故障,那么就可以大胆的使用真实环境做LFS了。
实验阶段使用Linux的fdisk工具对硬盘分区表进行操作,这里强烈要求使用vmware虚拟机环境进行。windows用户使用windows版的vmware虚拟机,Linux用户使用Linux版的vmware虚拟机。
对一块新硬盘进行分区。
对分区的认识是第一步,也是最关健的一步。如果你对分区操作很熟的可以跳过此部分。
安装好vmware workstation虚拟机软件之后,Ctrl + N 新建虚拟机,并创建一个IDE虚拟硬盘大小为8GB。创建好虚拟机之后按 Ctrl + D 在设置中选择 CD / DVD ,将 lfslivecd-6.2-5.iso 挂为光盘。
vmware workstation虚拟机的基本操作过程不用我来说了。如果不会的,可以百度或者goolge搜索一下 图解虚拟机 。
这里有一块8GB的新硬盘。我们现在将它分成三个主分区,一个扩展分区,然后在扩展下建两个逻辑分区。
先 fdisk -l ( 如果是SCSI或者SATA硬盘就 fdisk -l /dev/sda ,这里a表示第一个设备 )
# fdisk -l Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Disk /dev/hda doesn't contain a valid partition table
" 15 heads, 63 sectors/track, 17753 cylinders " 这段说的是这块硬盘有 15磁头,63磁道,17753扇区。
" Units = cylinders of 945 * 512 = 483840 bytes " 这里描述的是每个柱面的大小。(磁头数 * 磁道数 = 每柱面的扇区个数,所以这里的945就是用 15 * 63 得到的值; 一个扇区的大小是 512 bytes (字节),这里就得出了每个柱面的大小为 483840 bytes )
补充说明一下,不同的硬盘的 CHS 是不一样的。每柱面大小也不尽相同的。 ( CHS 就是上面说到的磁道、磁头、扇区 )
现在来熟悉一下这个分区工具
使用 Linux fdisk 对 /dev/hda 这块硬盘进行分区操作
fdisk /dev/hda
在接下来出现的提示符后敲入 m 并按 Enter 键;或者直接按回车键 ( Enter ):
# fdisk /dev/hda (省去fdisk工具自述信息) Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help):
a toggle a bootable flag 标识/取消 引导分区
d delete a partition 删除一个已有分区
l list known partition types 列出已知的分区类型
m print this menu 在屏幕上打印出fdisk分区工具的帮助信息
n add a new partition 创建一个分区
p print the partition table 打印分区表
q quit without saving changes 退出不保存已做过的修改
t change a partition's system id 改变一个分区的系统id
u change display/entry units 改变显示单位 (可以以扇区为单位来显示)
v verify the partition table 校验分区表 (建议不要使用这个)
w write table to disk and exit 把分区表写到硬盘并退出(保存并退出)
现在创建第一个主分区:
在对硬盘进行分区时操作时,先按 p 并回车,打印一下分区信息。现在这块硬盘是一块新硬盘,没有任何分区信息。接下来按 n 并回车,屏幕上提示 e 表示创建扩展分区, p 表示创建主分区,现在按 p 并回车。屏幕上出现提示,给这个分区设置编号 ( Partition number ) ,现在输入 1 并回车。屏幕上出现了设置这个分区的首柱面(起始柱面),默认是1 ,直接敲回车键或者先敲入 1 再按回车键。然后,再设置这个分区的尾柱面(终止柱面),这里设为 1000 然后敲回车。在进行了创建分区的操作后,应该按 p 然后回车,再次打印分区表。
如果需要再次打印帮助,可以按 m 并按回车键或者直接按回车键。
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-17753, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-17753, default 17753): 1000 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux Command (m for help):
现在开始创建第二个主分区:
如同前面的方法,创建一个2000个柱面的分区。由于前面已经将 1 ~ 1000 柱面分配给了第一个主分区,所以在创建第二个分区的时候,默认首柱面是从1001开始。按照默认的提示设置首柱面,尾柱面 1000+2000也就是到了3000柱面上。从 1001 柱面到 3000 柱面都分配给第二主分区。操作步骤如下:
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (1001-17753, default 1001): 1001 Last cylinder or +size or +sizeM or +sizeK (1001-17753, default 17753): 3000 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux Command (m for help):
在进行操作之前,先敲入 p 并按回车键,打印分区信息。然后敲入 n 再按回车键,敲入 p 并按回车键创建主分区。屏幕上提示设置首柱面,默认从3001开始,直接按回车键使用默认的。然后屏幕上提示设置尾柱面,这里为这个分区分配3000个柱面,因为前面一个分区的尾柱面是3000,而且现在的这个分区首柱面是3001,那么在这里就是 3001 - 1 + 3000 = 6000 ;在这里设置尾柱面为 6000 .
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (3001-17753, default 3001): Using default value 3001 Last cylinder or +size or +sizeM or +sizeK (3001-17753, default 17753): 6000 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux Command (m for help):
现在创建第四分区,分区类型为扩展分区。
将所有的剩余空间都分配给这个分区。
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) e Selected partition 4 First cylinder (6001-17753, default 6001): Using default value 6001 Last cylinder or +size or +sizeM or +sizeK (6001-17753, default 17753): Using default value 17753 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended Command (m for help):
创建了扩展分区之后,就可以在扩展下创建逻辑分区了:
现在来创建两个逻辑分区:
现在在扩展下先建一个逻辑分区,为它分配4000个柱面。扩展分区的首柱面是6001,尾柱面为整块硬盘的最后一个柱面。
仍然是先敲入 p 并按回车键,打印分区信息。按 n 并回车,现在默认的首柱面是6001 ,直接敲回车键就可以了。设置尾柱面为 10000 ,然后敲回车。最后,仍然是敲 p 并按回车,打印分区信息。
然后创建最后一个分区,并且为这个最后的一个分区分配所有的剩余空间。详细步骤如下:
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended Command (m for help): n First cylinder (6001-17753, default 6001): Using default value 6001 Last cylinder or +size or +sizeM or +sizeK (6001-17753, default 17753): 10000 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended /dev/hda5 6001 10000 1889968+ 83 Linux Command (m for help): n First cylinder (10001-17753, default 10001): Using default value 10001 Last cylinder or +size or +sizeM or +sizeK (10001-17753, default 17753): Using default value 17753 Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 83 Linux /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended /dev/hda5 6001 10000 1889968+ 83 Linux /dev/hda6 10001 17753 3663261 83 Linux Command (m for help):
到现在为止,就为这块硬盘模拟的就划分了三个主分区和一个扩展分区,扩展下分了两个逻辑分区。分区类型都是Linux的分区,分区标识id都是83 。如果现在想保存分区操作,只需要在 Linux 的 fdisk 分区操作提示符后面敲入 w 并按回车。如果不保存并退出分区工具,可以敲入 q 并按回车键;当然也可以按 Ctrl + C 这两个键的组合。但是,我们现在暂时不这么做。
现在,来用一下 Linux 的 fdisk 分区工具的其它命令。
我们现在将第一个分区的分区类型改为swap。
在分区操作中,敲入 t 并按回车键,敲入 1 按回车键选择对第1分区进行修改分区标识。接下来的提示说敲入 L 并回车,列出已知的分区类型和对应的id标识码。在其中找出 swap 对应的 82 ,然后输入 82 并按回车。这样,这个分区就改为swap的了。
Command (m for help): t Partition number (1-6): 1 Hex code (type L to list codes): L (由于字数的限制,此处省略了fdisk支持的分区系统类型及对应的标识id 。) Hex code (type L to list codes): 82 Changed system type of partition 1 to 82 (Linux swap / Solaris) Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 82 Linux swap / Solaris /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended /dev/hda5 6001 10000 1889968+ 83 Linux /dev/hda6 10001 17753 3663261 83 Linux Command (m for help):
Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 82 Linux swap / Solaris /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended /dev/hda5 6001 10000 1889968+ 83 Linux /dev/hda6 10001 17753 3663261 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
现在来做一个小实验
u change display/entry units 改变显示单位 (可以以扇区为单位来显示) |
再来对比看一下,/dev/hda4 和 /dev/hda5 它们的起始扇区相差了63 个( 5670063 - 5670000 ),很明显和 /dev/hda1 的起始扇区一样,也保留了63个扇区。
现在比较一下,/dev/hda5的尾扇区和/dev/hda6的首扇区。/dev/hda5的尾扇区为9449999,照理说,接下来的分区应该是从第9450000个扇区开始,但这里 /dev/hda6 是从 9450063 开始的。这其中也是保留了63个扇区。
# fdisk /dev/hda The number of cylinders for this disk is set to 17753. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders Units = cylinders of 945 * 512 = 483840 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1000 472468+ 82 Linux swap / Solaris /dev/hda2 1001 3000 945000 83 Linux /dev/hda3 3001 6000 1417500 83 Linux /dev/hda4 6001 17753 5553292+ 5 Extended /dev/hda5 6001 10000 1889968+ 83 Linux /dev/hda6 10001 17753 3663261 83 Linux Command (m for help): u Changing display/entry units to sectors Command (m for help): p Disk /dev/hda: 8589 MB, 8589934592 bytes 15 heads, 63 sectors/track, 17753 cylinders, total 16777216 sectors Units = sectors of 1 * 512 = 512 bytes Device Boot Start End Blocks Id System /dev/hda1 63 944999 472468+ 82 Linux swap / Solaris /dev/hda2 945000 2834999 945000 83 Linux /dev/hda3 2835000 5669999 1417500 83 Linux /dev/hda4 5670000 16776584 5553292+ 5 Extended /dev/hda5 5670063 9449999 1889968+ 83 Linux /dev/hda6 9450063 16776584 3663261 83 Linux Command (m for help):
对一个已经分好区的硬盘进行分区表操作
首先,在对一个已有数据的硬盘进行分区操作时,需要先做分区表备份和MBR主引导扇区的备份。
通常分区都是以柱面方式进行分配分区大小的,所以要备份一个分区表,只需要将 fdisk -l 这条命令所返回的信息保存下来就可以了。这里我们使用 fdisk -l > parttion.txt 将分区表信息重定向到一个文本文件。然后通过电子邮件发送保存到邮箱,这里有必要多发几个邮箱,并且查收邮件内容。如果要以扇区为单位打印分区表信息就是 fdisk -ul /dev/hda ,重定向保存为文件就是 fdisk -ul /dev/hda > parttion_hda-u.txt 。
备份MBR: dd if=/dev/hda of=/MBR_hda bs=512 count=1
关于分区和引导的问题可以参考一下这篇文章:备份/恢复MBR和分区表以及无备份修复MBR和分区表错误,浅谈引导故障和分区方案。
做好了备份的工作之后才可以进行修改的操作。
题目:现在有一块160GB的硬盘,分区情况是一个主分区 /dev/sda1 大小为10GB,一个扩展分区(含所有剩余的空间),扩展下有五个逻辑分区,分别是windows系统的DEFGH这几个盘符。现在想把20GB的E盘分成两个区,其中一个分大小为4GB左右的Linux分区用来做LFS和BLFS实现自己的Linux 。
我们要修改的只是位于E盘的这部分。这部分已经有重要数据,需要先将其转移,先把文件复制到硬盘的某个分区上。做完备份文件的工作之后,就可以对这部分进行重新分配了。
备份意识:我们现在因为要对硬盘上的某个分区进行重分配,为保险起见,我们先备份分区表。 fdisk -l /dev/sda > parttion_sda.txt ,分区表备份文件发送到邮箱。如果想以扇区为单位就使用 fdisk -ul /dev/sda > parttion_sda.txt 。多块古硬盘的情况需要注意 fdisk -l 后不加设备名是列出所有硬盘的分区表,两块同样的硬盘要清楚哪个是主那个是次,哪个是a哪个是b。如果怕弄错,就在关机状态下卸下其中的一块硬盘,只对一块硬盘进行操作。在可能将要对硬盘的分区或引导进行操作之前,都应该先备份分区表和MBR ,要养成备份的好习惯。
分区管理的知识:分区信息只是记录硬盘上的某个部分的起始位置、分区类型、分区标识id(分区的系统类型),以及最多可能的四个主分区中哪个分区被设为启动分区。最先创建的第一个分区,物理位置位于硬盘最前面的部分,可能让它在分区表中记录的是第2分区。我们可以实现这样的的操作,但为了方便管理,为了看起来一目了然,我们不去那么做。物理位置位于第一的,我们就让它在分区表中记录的是第一分区;物理位置是第6个的,我们就让它在分区表中是第6分区。
好了。现在开始对这块160GB的分区上的20GB大小的原先为windows系统的E盘进行操作。
这里仍然还是使用虚拟机来进行练习。如果你有十足的把握,你也可以不看分区这部分的操作。
再新建一台虚拟机,创建一个SCSI的硬盘并且将虚拟机硬盘大小设为160GB 。同样的,设置 lfslivecd-6.2-5.iso 作为虚拟机的光盘。
操作过程
由于现在是实验环境,我们先创建一个符合题目要求的硬盘分区表。
在一块160GB的硬盘上进行创建分区的操作。
由于字数限制的原因,此处漏掉了一些。是这样的,论坛这次维护后,每帖字数只能发到以前的三分之一可能还不到。所以这部分发附件,第一帖和第二帖的内容,看附件吧。编码 zh_CN.UTF-8 。如果显示不正常,可以去掉后缀.txt,尝试用网页浏览器打开文件。
02-详解linux的fdisk工具.txt (45.3 KB, 56 次查看) |
作者: huohuliaisili 发布时间: 2007-05-17
fdisk -l
这块硬盘设备名称为 /dev/sda 。容量171.7GB(以1000计算),171798691840 bytes
255 磁头 heads, 63 磁道 sectors/track, 20886 扇区 cylinders
# fdisk -l Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 2501 5000 20081218+ 7 HPFS/NTFS /dev/sda7 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda8 7501 10000 20081218+ b W95 FAT32 /dev/sda9 10001 20886 87441763+ 7 HPFS/NTFS
把上面列出的分区信息发送到邮箱,必要时用备份进行恢复。上面的可以用输出重定向保存到分区表备份文件partition_tab.txt 。
fdisk -l > partition_tab.txt
一种方法:使用分区表工具将 /dev/sda6 这个分区删除,这时,原先的/dev/sda7变成了/dev/sda6 , 原先的 /dev/sda8 变成了 /dev/sda7 ,原先的 /dev/sda9 变成了 /dev/sda8 ...
如何解决这种混乱?
方法是:在修改过原先的 /dev/sda6 之后,将紧靠其后的一个分区删除,接着重建,首柱面和尾柱面按照默认。原理是,默认的首柱面和默认的尾柱面和原先是相同的。然后改它的分区系统标识id为原先的。这样一个一个的改。
先记住要修改的 /dev/sda6 这个分区的首柱面和尾柱面。(这里 start 首柱面是 2501 ,End 尾柱面是 5000 )。好现在先将 原先的E盘 /dev/sda6 这个分区删掉。
操作过程如下:
# fdisk /dev/sda The number of cylinders for this disk is set to 20886. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 2501 5000 20081218+ 7 HPFS/NTFS /dev/sda7 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda8 7501 10000 20081218+ b W95 FAT32 /dev/sda9 10001 20886 87441763+ 7 HPFS/NTFS Command (m for help): d Partition number (1-9): 6 Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda7 7501 10000 20081218+ b W95 FAT32 /dev/sda8 10001 20886 87441763+ 7 HPFS/NTFS
接下来,我们将把 2501 ~ 5000 柱面这块硬盘空间进行重分配。这2500个柱面,准备分配4GB作为LFS / BLFS 也就是我们将要做的自己的Linux系统;分配物理内存2倍大小的空间作为swap (非必须,但建议有一个);分配一个适量的空间作为Linux用来存放数据分区,也就算做是备份区(非必须,但建议要有一个)。
新建一个500个柱面的分区(由于这块大硬盘的每柱面容量为8M左右,500柱面正好4GB)。默认的首柱面是2501,那么尾柱面就是3000 。
创建一个1GB的swap,首柱面为 3001(默认) ,尾柱面为 3125 。 共计 125 个柱面 乘上 8M/柱面,就是1GB 。建好分区之后,用 t 命令来修改分区的系统标识id为swap对应的82 。
将剩余空间分划为一个分区,这个分区用来作Linux的备份区。首柱面 3126 (默认),尾柱面 5000(默认)。
过程如下:
Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (2501-20886, default 2501): Using default value 2501 Last cylinder or +size or +sizeM or +sizeK (2501-5000, default 5000): 3000 Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda7 7501 10000 20081218+ b W95 FAT32 /dev/sda8 10001 20886 87441763+ 7 HPFS/NTFS /dev/sda9 2501 3000 4016218+ 83 Linux Partition table entries are not in disk order Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (3001-20886, default 3001): Using default value 3001 Last cylinder or +size or +sizeM or +sizeK (3001-5000, default 5000): 3125 Command (m for help): t Partition number (1-11): 10 Hex code (type L to list codes): L 0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot 1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris 2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx 6 FAT16 42 SFS 86 NTFS volume set da Non-FS data 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / . 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility 9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT 10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/ 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT 1c Hidden W95 FAT3 75 PC/IX Hex code (type L to list codes): 82 Changed system type of partition 10 to 82 (Linux swap / Solaris) Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda7 7501 10000 20081218+ b W95 FAT32 /dev/sda8 10001 20886 87441763+ 7 HPFS/NTFS /dev/sda9 2501 3000 4016218+ 83 Linux /dev/sda10 3001 3125 1004031 83 Linux swap / Solaris Partition table entries are not in disk order Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (3126-20886, default 3126): Using default value 3126 Last cylinder or +size or +sizeM or +sizeK (3126-5000, default 5000): Using default value 5000 Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 5001 7500 20081218+ 7 HPFS/NTFS /dev/sda7 7501 10000 20081218+ b W95 FAT32 /dev/sda8 10001 20886 87441763+ 7 HPFS/NTFS /dev/sda9 2501 3000 4016218+ 83 Linux /dev/sda10 3001 3125 1004031 83 Linux swap / Solaris /dev/sda11 3126 5000 15060906 83 Linux Partition table entries are not in disk order Command (m for help):
注意:现在有一个问题,看上面 /dev/sda11 的尾柱面是 5000 ,而 /dev/sda6的首柱面是5001 。 一直到 /dev/sda8 的首柱面都位于 /dev/sda11的尾柱面之后。也就是说它们的物理位置在后面,但分区编号在前面。为改变这一状况,有一个简易的方法。就是先删紧靠 5000柱面之后的一个分区,然后立即按默认(与原先相同的)首柱面和尾柱面进行分配,在重建分区表的时候注意把分区的系统标识也改也原先的(因为 Linux的fdisk中默认的新建的分区系统标识为id为83。
Command (m for help): d Partition number (1-11): 6 Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l First cylinder (5001-20886, default 5001): Using default value 5001 Last cylinder or +size or +sizeM or +sizeK (5001-7500, default 7500): Using default value 7500 Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 7501 10000 20081218+ b W95 FAT32 /dev/sda7 10001 20886 87441763+ 7 HPFS/NTFS /dev/sda8 2501 3000 4016218+ 83 Linux /dev/sda9 3001 3125 1004031 82 Linux swap / Solaris /dev/sda10 3126 5000 15060906 83 Linux /dev/sda11 5001 7500 20081218+ 83 Linux Partition table entries are not in disk order Command (m for help): t Partition number (1-11): 11 Hex code (type L to list codes): 7 Changed system type of partition 11 to 7 (HPFS/NTFS) Command (m for help): p Disk /dev/sda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 1250 10040593+ 7 HPFS/NTFS /dev/sda2 1251 20886 157726170 5 Extended /dev/sda5 1251 2500 10040593+ 7 HPFS/NTFS /dev/sda6 7501 10000 20081218+ c W95 FAT32 (LBA) /dev/sda7 10001 20886 87441763+ 7 HPFS/NTFS /dev/sda8 2501 3000 4016218+ 83 Linux /dev/sda9 3001 3125 1004031 82 Linux swap / Solaris /dev/sda10 3126 5000 15060906 83 Linux /dev/sda11 5001 7500 20081218+ 7 HPFS/NTFS Partition table entries are not in disk order Command (m for help):
如上面的操作,已经将首柱面为5001,尾柱面为7500的这个分区进行了按原首尾柱面和原系统标识id的重建。
然后使用同样的方法,对接下来的分区进行类似的操作(数值大于7500柱面的分区)。这样的操作一直做到硬盘上首柱面和尾柱面数值最大的分区,也就是物理位置为硬盘最后面的分区。
全改过之后,从邮箱里调出备份的分区表,和现在的修改的分区表进行对照。对照它们的分区编号,起始柱面位置,分区的系统标识id,启动分区标识。如果有不如意的地方,可以进行修改。常用的fdisk命令就是前面讲到的那几个,不会就 m 看帮助。直到满意后,才输入w并按回车键,保存退出。
强化训练:
先备份一个已有分区的硬盘分区表备份发送到多个邮箱或者网络硬盘,然后再将这个已有分区的硬盘的分区表尽数删去,再按照从邮箱调出分区表备份,按照备份上的进行恢复分区表。
特殊训练:
这里给大家出个题目:一块160GB的硬盘,有主分区也有扩展分区。其中硬盘的前32GB是主分区,其余空间为扩展分区。扩展分区下是逻辑分区,每个逻辑分区中都有重要的资料。现在,想把硬盘的前32GB,也就是物理位置位于扩展分区前的空间分成三份。其中第一份用来安装windows,第二份用来安装Linux,第三份用来安装solaris 。硬盘的前32GB的数据已经被转移,现在请给出分区方案。
使用Linux的fdisk工具创建硬盘分区表。内容如下:
分区表一:
# fdisk -l Disk /dev/hda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 4000 32129968+ 7 HPFS/NTFS /dev/hda2 4001 20886 135636795 5 Extended /dev/hda5 4001 4500 4016218+ 7 HPFS/NTFS /dev/hda6 4501 6000 12048718+ b W95 FAT32 /dev/hda7 6001 8500 20081218+ 7 HPFS/NTFS /dev/hda8 8501 9750 10040593+ 83 Linux /dev/hda9 9751 11000 10040593+ 83 Linux /dev/hda10 11001 11125 1004031 82 Linux swap / Solaris /dev/hda11 11126 20886 78405201 83 Linux
把上面创建的分区表改成分区表二的相同的内容
分区表二:
# fdisk /dev/hda -l Disk /dev/hda: 171.7 GB, 171798691840 bytes 255 heads, 63 sectors/track, 20886 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 1 1250 10040593+ 7 HPFS/NTFS /dev/hda2 1251 2500 10040625 83 Linux /dev/hda3 * 2501 4000 12048750 bf Solaris /dev/hda4 4001 20886 135636795 5 Extended /dev/hda5 4001 4500 4016218+ 7 HPFS/NTFS /dev/hda6 4501 6000 12048718+ b W95 FAT32 /dev/hda7 6001 8500 20081218+ 7 HPFS/NTFS /dev/hda8 8501 9750 10040593+ 83 Linux /dev/hda9 9751 11000 10040593+ 83 Linux /dev/hda10 11001 11125 1004031 82 Linux swap / Solaris /dev/hda11 11126 20886 78405201 83 Linux
通过过了上面的分区的的训练之后,才可以进行接下来的 LFS / BLFS 。
这里不用其它分区工具,包括不使用一些图形化的分区工具的原因是为了更多的去了解分区的实际操作过程。
我不用一些可以任意修改分区大小的分区工具。理由很简单,因为不知道什么时候一不小心就停电了。这样做的风险太大,效率不高,对操作者的动手能力及经验的提升太小。
对物理硬盘进行操作:
当上面的这些操作都很熟练之后,就可以对物理硬盘的分区表进行操作。(这里,强烈要求使用默认不挂载硬盘分区的LiveCD进行此操作。用 lfslivecd 就很好)
先将硬盘分区进行备份,然后使用fdisk将物理硬盘分区表记录删除。然后从备份恢复。
备份 fdisk -l 的信息,或者 fdisk -ul 。多块硬盘的分清主从以及 hda 或 sda 。备份/恢复分区表还可以用sfdisk工具:
sfdisk备份/恢复 分区表 用实际的设备名称替换掉 /dev/hdx # sfdisk -d /dev/hdx > /mnt/backup/partab-hdx.sfdisk (备份) # sfdisk /dev/hdx < /mnt/backup/partab-hdx.sfdisk (恢复)
只要分区表中的信息与硬盘上实际的分区是吻合的,而且文件系统未受到破坏,操作系统就可以识别硬盘中的数据。
关于分区和引导的问题可以看这里: 备份/恢复MBR和分区表以及无备份修复MBR和分区表错误,浅谈引导故障和分区方案。
http://www.linuxsir.org/bbs/showthread.php?t=303559
补充说明:
在Linux系统中,使用fdisk工具对已挂载的分区进行修改,需要重启之后才能生效。这是Linux中fdisk的特点。
当然我们这里是使用的lfslivecd ,从这张LiveCD启动后默认是不挂载硬盘分区的。所以上面的这些操作不受此限。
现在我们来了解一下这个 lfslivecd-6.2-5 的 LiveCD .
LiveCD是什么?
说直白点就是从光盘启动的Linux .把这样的光盘放入光驱中,然后改BIOS设置从光盘启动.或者按主板热键改默认启动项,华硕主板的是F8键,微星主板的是F11键.
现在选择从光盘启动(使用vmware虚拟机的朋友,也可以改vmware虚拟机的BIOS设置从光盘启动) .
现在屏幕上有提示说按 Enter 键启动,或者按 F1 键显示可选项.现在我们按 F1 键,查看一下可选项.
这里说了,如果要设置字符环境下的分辨率,可以加 vga=xxx 这样的选项.比如在 boot 提示符后输入 linux vga=791 .这里我们先不去设置,如果有使用默认显示不正常的情况,重启后再修改不迟.
第三说如果要使用64位的内核做CLFS,可以在这里输入 linux64 .
至于CLFS ,可以看下这里. ( CLFS不是本文要讲的内容 )
http://cross-lfs.org/
http://cross-lfs.org/view/
然后的几段英文我不懂.如果你想知道,可以使用一下 http://www.google.com 右侧有个语言工具,用这个翻译一下.
好了,现在我们输入 linux 后按 Enter 键,或者直接按Enter键,使用默认启动系统.
系统启动后,会出现让我们选择区域时间的对话.这里我们选择 亚洲-上海 ,重庆的朋友看下有没有Asia/Chongqi .
然后,选择使用本地时间. Localtime ..
接下来屏幕上会出现一些说明文字。我的英文很差,如果你能看懂就看一下。这里介绍了两个重要目录:/lfs-sources 目录下有我们构建LFS系统所需要的所有的源码包,不需要到处去找软件了。 /usr/share/LFS-BOOK-6.2-HTML 目录下是6.2-5这个版本的手册,手册一些网页形式的。首页的文件名就是index.html 。手册是英文版的,如果你有6.2手册的中文版,可以对照着看。但是,以光盘上的英文手册为准。
现在敲Enter键,出现字符控制台。可以看到前面出现了一个 # ,现在我们使用的就是root用户。Linux有七个控制台,在字符环境下可以按Ctrl + F2 (从F1到F7)切换控制台。其中F7这个控制台是专为Xwindow准备的。现在运行 startx 命令可以启动 xwindow 图形化界面。图形下按 Ctrl 加 Alt 加 ( F1 到 F6 )切换到另一个控制台。如果现在图形界面下按Ctrl+Alt+F1键到刚才运行startx这条命令的控制台下,可以看到屏幕上显示的正是F7这个控制台的图形窗口界面后台运行的一些信息。如果这时按Ctrl键和C的组合键,会将刚才执行的startx这条命令这个进程中止掉,自然也就停止了图形化界面的运行。关闭图形后,如果想再次启动图形界面,只需要再次执行 startx 就可以了。
如果,你有足够的内存,如果你的物理内存在512以上,你完全可以在图形化界面下工作。但,如果内存很小,就不必启图形了。
现在,先 cat /etc/issue 可以看到一些版本的信息,这些内容我们刚才已经见过了。
现在,如果你需要使用网络,可以运行 net-setup 进行网络设置。
如果,需要使用另一台机器登录到现在的这个开发环境中的机器,可以使用ssh 。要开启ssh服务,只需要执行 /etc/rc.d/init.d/sshd start 。 然后 passwd root ,给root用户设置密码。之后就可以在另一台机器上通过ssh协议来远程控制这台机器了。
000.gif (6.8 KB, 84 次查看) | |
002.gif (9.6 KB, 69 次查看) | |
003.gif (9.8 KB, 53 次查看) | |
004.gif (7.6 KB, 54 次查看) | |
017.gif (7.8 KB, 47 次查看) |
作者: huohuliaisili 发布时间: 2007-05-17
(再次强调一下:本文仅作参考,应当以手册为准。另外,文中的软件都不是最新,如果喜欢使用较新软件,请看SVN版手册。当然,也可以尝试CLFS 。)
对主系统的要求(细节看LFS-6.2-5手册)
我们使用的是lfslivecd-6.2-5,光盘上的系统是满足开发环境需要的
cat > version-check.sh << "EOF" #!/bin/bash # Simple script to list version numbers of critical development tools bash --version | head -n1 | cut -d" " -f2-4 echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-4 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 gcc --version | head -n1 /lib/libc.so.6 | head -n1 | cut -d" " -f1-7 grep --version | head -n1 gzip --version | head -n1 cat /proc/version | head -n1 | cut -d" " -f1-3,5-7 make --version | head -n1 patch --version | head -n1 sed --version | head -n1 tar --version | head -n1 EOF bash version-check.sh
下面的这部分是需要按照实际情况进行修改的地方
##### 00-root/00-root 由root用户来决定所有的准备工作。这部分要求手工输入,防止出错。 #####
# 如果物理内存很少,可以先启用swap.这里,我们使用一个硬盘分区作为swap 。
#用实际的分区替换下面的 /dev/<xxx>。比如 /dev/hda7 。
#如果物理内存在512以上,并且只在字符环境下操作,在构建LFS系统的过程中就可以不需要启用swap。 #
mkswap /dev/<xxx> swapon /dev/<xxx>
mkfs.ext3 /dev/<xxx>
##### 准备工作 #####
#定义LFS环境变量
export LFS=/mnt/lfs
mkdir -pv $LFS mount -v -t ext3 /dev/<xxx> $LFS
#mkdir -pv $LFS/usr #mount -v -t ext3 /dev/<yyy> $LFS/usr
mkdir -v $LFS/sources chmod -v a+wt $LFS/sources
echo $LFS
export LFS=/mnt/lfs
mkdir -v $LFS/tools ln -sv $LFS/tools /
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
su - lfs
##### 01-lfs-path/00-lfs.sh ##### # 设置工作环境 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
##### 构建临时的编译环境 ##### ## # 5.3. Binutils-2.16.1 - 第一遍 cd $LFS/sources tar xvf /lfs-sources/binutils-2.16.1.tar.bz2 cd binutils-2.16.1 mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.16.1/configure --prefix=/tools --disable-nls make make install make -C ld clean make -C ld LIB_PATH=/tools/lib cp -v ld/ld-new /tools/bin cd $LFS/sources # 5.4. GCC-4.0.3 - 第一遍 cd $LFS/sources tar xvf /lfs-sources/gcc-4.0.3.tar.bz2 cd gcc-4.0.3 mkdir -v ../gcc-build cd ../gcc-build ../gcc-4.0.3/configure --prefix=/tools \ --with-local-prefix=/tools --disable-nls --enable-shared \ --enable-languages=c make bootstrap make install ln -vs gcc /tools/bin/cc cd $LFS/sources # 5.5. Linux-Libc-Headers-2.6.12.0 cd $LFS/sources tar xvf /lfs-sources/linux-libc-headers-2.6.12.0.tar.bz2 cd linux-libc-headers-2.6.12.0 cp -Rv include/asm-i386 /tools/include/asm cp -Rv include/linux /tools/include cd $LFS/sources # 5.6. Glibc-2.3.6 cd $LFS/sources tar xvf /lfs-sources/glibc-2.3.6.tar.bz2 cd glibc-2.3.6 mkdir -v ../glibc-build cd ../glibc-build ../glibc-2.3.6/configure --prefix=/tools \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.0 --with-binutils=/tools/bin \ --without-gd --with-headers=/tools/include \ --without-selinux make mkdir -v /tools/etc touch /tools/etc/ld.so.conf make install cd $LFS/sources # 5.7. 调整工具链 mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs && gcc -dumpspecs > $SPECFILE && sed 's@^/lib/ld-linux.so.2@/tools&@g' $SPECFILE > tempspecfile && mv -vf tempspecfile $SPECFILE && unset SPECFILE GCC_INCLUDEDIR=`dirname $(gcc -print-libgcc-file-name)`/include && find ${GCC_INCLUDEDIR}/* -maxdepth 0 -xtype d -exec rm -rvf '{}' \; && rm -vf `grep -l "DO NOT EDIT THIS FILE" ${GCC_INCLUDEDIR}/*` && unset GCC_INCLUDEDIR echo 'main(){}' > dummy.c cc dummy.c readelf -l a.out | grep ': /tools' rm -v dummy.c a.out # # 5.8. Tcl-8.4.13 cd $LFS/sources tar xvf /lfs-sources/tcl8.4.13-src.tar.gz cd tcl8.4.13 cd unix ./configure --prefix=/tools make make install make install-private-headers ln -sv tclsh8.4 /tools/bin/tclsh cd $LFS/sources # 5.9. Expect-5.43.0 cd $LFS/sources tar xvf /lfs-sources/expect-5.43.0.tar.gz cd expect-5.43 patch -Np1 -i /lfs-sources/expect-5.43.0-spawn-1.patch ./configure --prefix=/tools --with-tcl=/tools/lib \ --with-tclinclude=/tools/include --with-x=no make make SCRIPTS="" install cd $LFS/sources # 5.10. DejaGNU-1.4.4 cd $LFS/sources tar xvf /lfs-sources/dejagnu-1.4.4.tar.gz cd dejagnu-1.4.4 ./configure --prefix=/tools make install cd $LFS/sources # 5.11. GCC-4.0.3 - 第二遍 cd $LFS/sources rm -rf $LFS/sources/* tar xvf /lfs-sources/gcc-4.0.3.tar.bz2 cd gcc-4.0.3 expect -c "spawn ls" cp -v gcc/Makefile.in{,.orig} && sed 's@\./fixinc\.sh@-c true@' gcc/Makefile.in.orig > gcc/Makefile.in cp -v gcc/Makefile.in{,.tmp} && sed 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in.tmp \ > gcc/Makefile.in patch -Np1 -i /lfs-sources/gcc-4.0.3-specs-1.patch mkdir -v ../gcc-build cd ../gcc-build ../gcc-4.0.3/configure --prefix=/tools \ --with-local-prefix=/tools --enable-clocale=gnu \ --enable-shared --enable-threads=posix \ --enable-__cxa_atexit --enable-languages=c,c++ \ --disable-libstdcxx-pch make make install echo 'main(){}' > dummy.c cc dummy.c readelf -l a.out | grep ': /tools' rm -v dummy.c a.out cd $LFS/sources #5.12. Binutils-2.16.1 - 第二遍 cd $LFS/sources rm -rf $LFS/sources/* tar xvf /lfs-sources/binutils-2.16.1.tar.bz2 cd binutils-2.16.1 mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.16.1/configure --prefix=/tools \ --disable-nls --with-lib-path=/tools/lib make make install make -C ld clean make -C ld LIB_PATH=/usr/lib:/lib cp -v ld/ld-new /tools/bin cd $LFS/sources # 5.13. Ncurses-5.5 cd $LFS/sources tar xvf /lfs-sources/ncurses-5.5.tar.gz cd ncurses-5.5 ./configure --prefix=/tools --with-shared \ --without-debug --without-ada --enable-overwrite make make install cd $LFS/sources # 5.14. Bash-3.1 cd $LFS/sources tar xvf /lfs-sources/bash-3.1.tar.gz cd bash-3.1 patch -Np1 -i /lfs-sources/bash-3.1-fixes-8.patch ./configure --prefix=/tools --without-bash-malloc make make install ln -vs bash /tools/bin/sh cd $LFS/sources # 5.15. Bzip2-1.0.3 cd $LFS/sources tar xvf /lfs-sources/bzip2-1.0.3.tar.gz cd bzip2-1.0.3 make make PREFIX=/tools install cd $LFS/sources # 5.16. Coreutils-5.96 cd $LFS/sources tar xvf /lfs-sources/coreutils-5.96.tar.bz2 cd coreutils-5.96 ./configure --prefix=/tools make make install cd $LFS/sources # 5.17. Diffutils-2.8.1 cd $LFS/sources tar xvf /lfs-sources/diffutils-2.8.1.tar.gz cd diffutils-2.8.1 ./configure --prefix=/tools make make install cd $LFS/sources # 5.18. Findutils-4.2.27 cd $LFS/sources tar xvf /lfs-sources/findutils-4.2.27.tar.gz cd findutils-4.2.27 ./configure --prefix=/tools make make install cd $LFS/sources # 5.19. Gawk-3.1.5 cd $LFS/sources tar xvf /lfs-sources/gawk-3.1.5.tar.bz2 cd gawk-3.1.5 ./configure --prefix=/tools cat >>config.h <<"EOF" #define HAVE_LANGINFO_CODESET 1 #define HAVE_LC_MESSAGES 1 EOF make make install cd $LFS/sources # 5.20. Gettext-0.14.5 cd $LFS/sources tar xvf /lfs-sources/gettext-0.14.5.tar.gz cd gettext-0.14.5 cd gettext-tools ./configure --prefix=/tools --disable-shared make -C lib make -C src msgfmt cp -v src/msgfmt /tools/bin cd $LFS/sources # 5.21. Grep-2.5.1a cd $LFS/sources tar xvf /lfs-sources/grep-2.5.1a.tar.bz2 cd grep-2.5.1a ./configure --prefix=/tools \ --disable-perl-regexp make make install cd $LFS/sources # 5.22. Gzip-1.3.5 cd $LFS/sources tar xvf /lfs-sources/gzip-1.3.5.tar.gz cd gzip-1.3.5 ./configure --prefix=/tools make make install cd $LFS/sources # 5.23. M4-1.4.4 cd $LFS/sources tar xvf /lfs-sources/m4-1.4.4.tar.gz cd m4-1.4.4 ./configure --prefix=/tools make make install cd $LFS/sources # 5.24. Make-3.80 cd $LFS/sources tar xvf /lfs-sources/make-3.80.tar.bz2 cd make-3.80 ./configure --prefix=/tools make make install cd $LFS/sources # 5.25. Patch-2.5.4 cd $LFS/sources tar xvf /lfs-sources/patch-2.5.4.tar.gz cd patch-2.5.4 ./configure --prefix=/tools make make install cd $LFS/sources # 5.26. Perl-5.8.8 cd $LFS/sources tar xvf /lfs-sources/perl-5.8.8.tar.bz2 cd perl-5.8.8 patch -Np1 -i /lfs-sources/perl-5.8.8-libc-2.patch ./configure.gnu --prefix=/tools -Dstatic_ext='Data/Dumper Fcntl IO POSIX' make perl utilities cp -v perl pod/pod2man /tools/bin mkdir -pv /tools/lib/perl5/5.8.8 cp -Rv lib/* /tools/lib/perl5/5.8.8 cd $LFS/sources # 5.27. Sed-4.1.5 cd $LFS/sources tar xvf /lfs-sources/sed-4.1.5.tar.gz cd sed-4.1.5 ./configure --prefix=/tools make make install cd $LFS/sources # 5.28. Tar-1.15.1 cd $LFS/sources tar xvf /lfs-sources/tar-1.15.1.tar.bz2 cd tar-1.15.1 patch -Np1 -i /lfs-sources/tar-1.15.1-gcc4_fix_tests-1.patch ./configure --prefix=/tools make make install cd $LFS/sources # 5.29. Texinfo-4.8 cd $LFS/sources tar xvf /lfs-sources/texinfo-4.8.tar.bz2 cd texinfo-4.8 ./configure --prefix=/tools make make install cd $LFS/sources # 5.30. Util-linux-2.12r cd $LFS/sources tar xvf /lfs-sources/util-linux-2.12r.tar.bz2 cd util-linux-2.12r sed -i 's@/usr/include@/tools/include@g' configure ./configure make -C lib make -C mount mount umount make -C text-utils more cp mount/{,u}mount text-utils/more /tools/bin cd $LFS/sources rm -rf $LFS/sources/*
这部分被省略掉了,详情看手册。
##### 03-chown-and-mount/00-mount_lfs-sources ##### ##### mkdir /mnt/lfs/lfs-sources mount --bind /lfs-sources /mnt/lfs/lfs-sources
###### 03-chown-and-mount/01-chroot ##### chown -R root:root $LFS/tools mkdir -pv $LFS/{dev,proc,sys} mknod -m 600 $LFS/dev/console c 5 1 mknod -m 666 $LFS/dev/null c 1 3 mount --bind /dev $LFS/dev mount -vt devpts devpts $LFS/dev/pts mount -vt tmpfs shm $LFS/dev/shm mount -vt proc proc $LFS/proc mount -vt sysfs sysfs $LFS/sys chroot "$LFS" /tools/bin/env -i \ HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ /tools/bin/bash --login +h
###### 03-chown-and-mount/02_mkdir ##### mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -pv /usr/{,local/}{bin,include,lib,sbin,src} mkdir -pv /usr/{,local/}share/{doc,info,locale,man} mkdir -v /usr/{,local/}share/{misc,terminfo,zoneinfo} mkdir -pv /usr/{,local/}share/man/man{1..8} for dir in /usr /usr/local; do ln -sv share/{man,doc,info} $dir done mkdir -v /var/{lock,log,mail,run,spool} mkdir -pv /var/{opt,cache,lib/{misc,locate},local} ln -sv /tools/bin/{bash,cat,grep,pwd,stty} /bin ln -sv /tools/bin/perl /usr/bin ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib ln -sv bash /bin/sh touch /etc/mtab cat > /etc/passwd << "EOF" root:x:0:0:root:/root:/bin/bash EOF cat > /etc/group << "EOF" root:x:0: bin:x:1: sys:x:2: kmem:x:3: tty:x:4: tape:x:5: daemon:x:6: floppy:x:7: disk:x:8: lp:x:9: dialout:x:10: audio:x:11: video:x:12: utmp:x:13: usb:x:14: cdrom:x:15: EOF exec /tools/bin/bash --login +h
###### 03-chown-and-mount/03_login+h ##### touch /var/run/utmp /var/log/{btmp,lastlog,wtmp} chgrp -v utmp /var/run/utmp /var/log/lastlog chmod -v 664 /var/run/utmp /var/log/lastlog
###### 04-chroot-sh/ ##### # 6.7. Linux-Libc-Headers-2.6.12.0 cd /sources tar xvf /lfs-sources/linux-libc-headers-2.6.12.0.tar.bz2 cd linux-libc-headers-2.6.12.0 patch -Np1 -i /lfs-sources/linux-libc-headers-2.6.12.0-inotify-3.patch install -dv /usr/include/asm cp -Rv include/asm-i386/* /usr/include/asm cp -Rv include/linux /usr/include chown -Rv root:root /usr/include/{asm,linux} find /usr/include/{asm,linux} -type d -exec chmod -v 755 {} \; find /usr/include/{asm,linux} -type f -exec chmod -v 644 {} \; cd /sources # 6.8. Man-pages-2.34 cd /sources tar xvf /lfs-sources/man-pages-2.34.tar.bz2 cd man-pages-2.34 make install cd /sources # 6.9. Glibc-2.3.6 cd /sources tar xvf /lfs-sources/glibc-2.3.6.tar.bz2 cd glibc-2.3.6 tar -xf /lfs-sources/glibc-libidn-2.3.6.tar.bz2 patch -Np1 -i /lfs-sources/glibc-2.3.6-linux_types-1.patch patch -Np1 -i /lfs-sources/glibc-2.3.6-inotify-1.patch sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED sed -i \ 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \ scripts/test-installation.pl mkdir -v ../glibc-build cd ../glibc-build ../glibc-2.3.6/configure --prefix=/usr \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc make make -k check 2>&1 | tee glibc-check-log grep Error glibc-check-log touch /etc/ld.so.conf make install cp -v ../glibc-2.3.6/sysdeps/unix/sysv/linux/inotify.h \ /usr/include/sys make localedata/install-locales cat > /etc/nsswitch.conf << "EOF" # Begin /etc/nsswitch.conf passwd: files group: files shadow: files hosts: files dns networks: files protocols: files services: files ethers: files rpc: files # End /etc/nsswitch.conf EOF tzselect cp -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai \ /etc/localtime cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf /usr/local/lib /opt/lib # End /etc/ld.so.conf EOF cd /sources # 6.10. 再次调整工具链 mv -v /tools/bin/{ld,ld-old} mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old} mv -v /tools/bin/{ld-new,ld} ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld gcc -dumpspecs | \ perl -p -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g;' \ -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' > \ `dirname $(gcc --print-libgcc-file-name)`/specs echo 'main(){}' > dummy.c cc dummy.c -Wl,--verbose &> dummy.log readelf -l a.out | grep ': /lib' grep -o '/usr/lib.*/crt[1in].* .*' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib/libc.so.6 " dummy.log grep found dummy.log rm -v dummy.c a.out dummy.log # 6.11. Binutils-2.16.1 cd /sources tar xvf /lfs-sources/binutils-2.16.1.tar.bz2 cd binutils-2.16.1 expect -c "spawn ls" mkdir -v ../binutils-build cd ../binutils-build ../binutils-2.16.1/configure --prefix=/usr \ --enable-shared make tooldir=/usr make check make tooldir=/usr install cp -v ../binutils-2.16.1/include/libiberty.h /usr/include cd /sources # 6.12. GCC-4.0.3 cd /sources tar xvf /lfs-sources/gcc-4.0.3.tar.bz2 cd gcc-4.0.3 sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in sed -i 's/^XCFLAGS =$/& -fomit-frame-pointer/' gcc/Makefile.in sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in sed -i 's/@have_mktemp_command@/yes/' gcc/gccbug.in mkdir -v ../gcc-build cd ../gcc-build ../gcc-4.0.3/configure --prefix=/usr \ --libexecdir=/usr/lib --enable-shared \ --enable-threads=posix --enable-__cxa_atexit \ --enable-clocale=gnu --enable-languages=c,c++ make ../gcc-4.0.3/contrib/test_summary make install ln -sv ../usr/bin/cpp /lib ln -sv gcc /usr/bin/cc echo 'main(){}' > dummy.c cc dummy.c -Wl,--verbose &> dummy.log readelf -l a.out | grep ': /lib' grep -o '/usr/lib.*/crt[1in].* .*' dummy.log grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' grep "/lib/libc.so.6 " dummy.log grep found dummy.log rm -v dummy.c a.out dummy.log cd /sources # 6.13. Berkeley DB-4.4.20 cd /sources tar xvf /lfs-sources/db-4.4.20.tar.gz cd db-4.4.20 patch -Np1 -i /lfs-sources/db-4.4.20-fixes-1.patch cd build_unix && ../dist/configure --prefix=/usr --enable-compat185 --enable-cxx make make docdir=/usr/share/doc/db-4.4.20 install chown -v root:root /usr/bin/db_* \ /usr/lib/libdb* /usr/include/db* && chown -Rv root:root /usr/share/doc/db-4.4.20 cd /sources # 6.14. Coreutils-5.96 cd /sources tar xvf /lfs-sources/coreutils-5.96.tar.bz2 cd coreutils-5.96 patch -Np1 -i /lfs-sources/coreutils-5.96-uname-1.patch patch -Np1 -i /lfs-sources/coreutils-5.96-suppress_uptime_kill_su-1.patch patch -Np1 -i /lfs-sources/coreutils-5.96-i18n-1.patch chmod +x tests/sort/sort-mb-tests sed -i 's/_LEN 6/_LEN 20/' src/who.c ./configure --prefix=/usr make echo "dummy1:x:1000:" >> /etc/group echo "dummy2:x:1001:dummy" >> /etc/group echo "dummy:x:1000:1000::/root:/bin/bash" >> /etc/passwd make NON_ROOT_USERNAME=dummy check-root src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check" sed -i '/dummy/d' /etc/passwd /etc/group make install mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,rm} /bin mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin mv -v /usr/bin/chroot /usr/sbin mv -v /usr/bin/{head,sleep,nice} /bin cd /sources # 6.15. Iana-Etc-2.10 cd /sources tar xvf /lfs-sources/iana-etc-2.10.tar.bz2 cd iana-etc-2.10 make make install cd /sources # 6.16. M4-1.4.4 cd /sources tar xvf /lfs-sources/m4-1.4.4.tar.gz cd m4-1.4.4 ./configure --prefix=/usr make make install cd /sources # 6.17. Bison-2.2 cd /sources tar xvf /lfs-sources/bison-2.2.tar.bz2 cd bison-2.2 ./configure --prefix=/usr echo '#define YYENABLE_NLS 1' >> config.h make make install cd /sources # 6.18. Ncurses-5.5 cd /sources tar xvf /lfs-sources/ncurses-5.5.tar.gz cd ncurses-5.5 patch -Np1 -i /lfs-sources/ncurses-5.5-fixes-1.patch ./configure --prefix=/usr --with-shared --without-debug --enable-widec make make install chmod -v 755 /usr/lib/*.5.5 chmod -v 644 /usr/lib/libncurses++w.a mv -v /usr/lib/libncursesw.so.5* /lib ln -sfv ../../lib/libncursesw.so.5 /usr/lib/libncursesw.so for lib in curses ncurses form panel menu ; do \ rm -vf /usr/lib/lib${lib}.so ; \ echo "INPUT(-l${lib}w)" >/usr/lib/lib${lib}.so ; \ ln -sfv lib${lib}w.a /usr/lib/lib${lib}.a ; \ done && ln -sfv libncurses++w.a /usr/lib/libncurses++.a echo "INPUT(-lncursesw)" >/usr/lib/libcursesw.so && ln -sfv libncurses.so /usr/lib/libcurses.so && ln -sfv libncursesw.a /usr/lib/libcursesw.a && ln -sfv libncurses.a /usr/lib/libcurses.a cd /sources # 6.19. Procps-3.2.6 cd /sources tar xvf /lfs-sources/procps-3.2.6.tar.gz cd procps-3.2.6 make make install cd /sources # 6.20. Sed-4.1.5 cd /sources tar xvf /lfs-sources/sed-4.1.5.tar.gz cd sed-4.1.5 ./configure --prefix=/usr --bindir=/bin --enable-html make make install cd /sources # 6.21. Libtool-1.5.22 cd /sources tar xvf /lfs-sources/libtool-1.5.22.tar.gz cd libtool-1.5.22 ./configure --prefix=/usr make make install cd /sources # 6.22. Perl-5.8.8 cd /sources tar xvf /lfs-sources/perl-5.8.8.tar.bz2 cd perl-5.8.8 echo "127.0.0.1 localhost $(hostname)" > /etc/hosts ./configure.gnu --prefix=/usr \ -Dman1dir=/usr/share/man/man1 \ -Dman3dir=/usr/share/man/man3 \ -Dpager="/usr/bin/less -isR" make make install cd /sources # 6.23. Readline-5.1 cd /sources tar xvf /lfs-sources/readline-5.1.tar.gz cd readline-5.1 patch -Np1 -i /lfs-sources/readline-5.1-fixes-3.patch sed -i '/MV.*old/d' Makefile.in sed -i '/{OLDSUFF}/c:' support/shlib-install ./configure --prefix=/usr --libdir=/lib make SHLIB_LIBS=-lncurses make install chmod -v 755 /lib/lib{readline,history}.so* mv -v /lib/lib{readline,history}.a /usr/lib rm -v /lib/lib{readline,history}.so ln -sfv ../../lib/libreadline.so.5 /usr/lib/libreadline.so ln -sfv ../../lib/libhistory.so.5 /usr/lib/libhistory.so cd /sources # 6.24. Zlib-1.2.3 cd /sources tar xvf /lfs-sources/zlib-1.2.3.tar.gz cd zlib-1.2.3 ./configure --prefix=/usr --shared --libdir=/lib make make install rm -v /lib/libz.so ln -sfv ../../lib/libz.so.1.2.3 /usr/lib/libz.so make clean ./configure --prefix=/usr make make install chmod -v 644 /usr/lib/libz.a cd /sources # 6.25. Autoconf-2.59 cd /sources tar xvf /lfs-sources/autoconf-2.59.tar.bz2 cd autoconf-2.59 ./configure --prefix=/usr make make install cd /sources # 6.26. Automake-1.9.6 cd /sources tar xvf /lfs-sources/automake-1.9.6.tar.bz2 cd automake-1.9.6 ./configure --prefix=/usr make make install cd /sources # 6.27. Bash-3.1 cd /sources tar xvf /lfs-sources/bash-3.1.tar.gz cd bash-3.1 tar -xvf /lfs-sources/bash-doc-3.1.tar.gz && sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/bash-3.1|" \ Makefile.in patch -Np1 -i /lfs-sources/bash-3.1-fixes-8.patch ./configure --prefix=/usr --bindir=/bin \ --without-bash-malloc --with-installed-readline make make install cd /sources # 运行新编译的 bash 程序来替换正在执行的这个/tools/bin/bash exec /bin/bash --login +h
# 6.28. Bzip2-1.0.3 cd /sources tar xvf /lfs-sources/bzip2-1.0.3.tar.gz cd bzip2-1.0.3 patch -Np1 -i /lfs-sources/bzip2-1.0.3-install_docs-1.patch patch -Np1 -i /lfs-sources/bzip2-1.0.3-bzgrep_security-1.patch sed -i 's@tempfile -d /tmp -p bz@mktemp -p /tmp@' bzdiff make -f Makefile-libbz2_so make clean make make install cp -v bzip2-shared /bin/bzip2 cp -av libbz2.so* /lib ln -sv ../../lib/libbz2.so.1.0 /usr/lib/libbz2.so rm -v /usr/bin/{bunzip2,bzcat,bzip2} ln -sv bzip2 /bin/bunzip2 ln -sv bzip2 /bin/bzcat cd /sources # 6.29. Diffutils-2.8.1 cd /sources tar xvf /lfs-sources/diffutils-2.8.1.tar.gz cd diffutils-2.8.1 patch -Np1 -i /lfs-sources/diffutils-2.8.1-i18n-1.patch touch man/diff.1 ./configure --prefix=/usr make make install cd /sources # 6.30. E2fsprogs-1.39 cd /sources tar xvf /lfs-sources/e2fsprogs-1.39.tar.gz cd e2fsprogs-1.39 mkdir -v build cd build ../configure --prefix=/usr --with-root-prefix="" \ --enable-elf-shlibs --disable-evms make make install make install-libs cd /sources # 6.31. File-4.17 cd /sources tar xvf /lfs-sources/file-4.17.tar.gz cd file-4.17 ./configure --prefix=/usr make make install cd /sources # 6.32. Findutils-4.2.27 cd /sources tar xvf /lfs-sources/findutils-4.2.27.tar.gz cd findutils-4.2.27 ./configure --prefix=/usr --libexecdir=/usr/lib/findutils \ --localstatedir=/var/lib/locate make make install mv -v /usr/bin/find /bin sed -i -e 's/find:=${BINDIR}/find:=\/bin/' /usr/bin/updatedb cd /sources # 6.33. Flex-2.5.33 cd /sources tar xvf /lfs-sources/flex-2.5.33.tar.bz2 cd flex-2.5.33 ./configure --prefix=/usr make make install ln -sv libfl.a /usr/lib/libl.a cat > /usr/bin/lex << "EOF" #!/bin/sh # Begin /usr/bin/lex exec /usr/bin/flex -l "$@" # End /usr/bin/lex EOF chmod -v 755 /usr/bin/lex cd /sources # 6.34. GRUB-0.97 cd /sources tar xvf /lfs-sources/grub-0.97.tar.gz cd grub-0.97 patch -Np1 -i /lfs-sources/grub-0.97-disk_geometry-1.patch ./configure --prefix=/usr make make install mkdir -v /boot/grub ##cp -v /usr/lib/grub/i386-pc/stage{1,2} /boot/grub ##### 上面的是手册上的方法,这里改成下面的。 ##### cp -v /usr/lib/grub/i386-pc/* /boot/grub cd /sources # 6.35. Gawk-3.1.5 cd /sources tar xvf /lfs-sources/gawk-3.1.5.tar.bz2 cd gawk-3.1.5 patch -Np1 -i /lfs-sources/gawk-3.1.5-segfault_fix-1.patch ./configure --prefix=/usr --libexecdir=/usr/lib cat >>config.h <<"EOF" #define HAVE_LANGINFO_CODESET 1 #define HAVE_LC_MESSAGES 1 EOF make make install cd /sources # 6.36. Gettext-0.14.5 cd /sources tar xvf /lfs-sources/gettext-0.14.5.tar.gz cd gettext-0.14.5 ./configure --prefix=/usr make make install cd /sources # 6.37. Grep-2.5.1a cd /sources tar xvf /lfs-sources/grep-2.5.1a.tar.bz2 cd grep-2.5.1a patch -Np1 -i /lfs-sources/grep-2.5.1a-redhat_fixes-2.patch chmod +x tests/fmbtest.sh ./configure --prefix=/usr --bindir=/bin make make install cd /sources # 6.38. Groff-1.18.1.1 cd /sources tar xvf /lfs-sources/groff-1.18.1.1.tar.gz cd groff-1.18.1.1 patch -Np1 -i /lfs-sources/groff-1.18.1.1-debian_fixes-1.patch sed -i -e 's/2010/002D/' -e 's/2212/002D/' \ -e 's/2018/0060/' -e 's/2019/0027/' font/devutf8/R.proto PAGE=A4 ./configure --prefix=/usr --enable-multibyte make make install ln -sv eqn /usr/bin/geqn ln -sv tbl /usr/bin/gtbl cd /sources # 6.39. Gzip-1.3.5 cd /sources tar xvf /lfs-sources/gzip-1.3.5.tar.gz cd gzip-1.3.5 patch -Np1 -i /lfs-sources/gzip-1.3.5-security_fixes-1.patch ./configure --prefix=/usr sed -i 's@"BINDIR"@/bin@g' gzexe.in make make install mv -v /usr/bin/gzip /bin rm -v /usr/bin/{gunzip,zcat} ln -sv gzip /bin/gunzip ln -sv gzip /bin/zcat ln -sv gzip /bin/compress ln -sv gunzip /bin/uncompress cd /sources # 6.40. Inetutils-1.4.2 cd /sources tar xvf /lfs-sources/inetutils-1.4.2.tar.gz cd inetutils-1.4.2 patch -Np1 -i /lfs-sources/inetutils-1.4.2-gcc4_fixes-3.patch patch -Np1 -i /lfs-sources/inetutils-1.4.2-no_server_man_pages-1.patch ./configure --prefix=/usr --libexecdir=/usr/sbin \ --sysconfdir=/etc --localstatedir=/var \ --disable-logger --disable-syslogd \ --disable-whois --disable-servers make make install mv -v /usr/bin/ping /bin cd /sources # 6.41. IPRoute2-2.6.16-060323 cd /sources tar xvf /lfs-sources/iproute2-2.6.16-060323.tar.gz cd iproute2-2.6.16-060323 make SBINDIR=/sbin make SBINDIR=/sbin install mv -v /sbin/arpd /usr/sbin cd /sources # 6.42. Kbd-1.12 cd /sources tar xvf /lfs-sources/kbd-1.12.tar.bz2 cd kbd-1.12 patch -Np1 -i /lfs-sources/kbd-1.12-backspace-1.patch patch -Np1 -i /lfs-sources/kbd-1.12-gcc4_fixes-1.patch ./configure --datadir=/lib/kbd make make install mv -v /usr/bin/{kbd_mode,openvt,setfont} /bin cd /sources # 6.43. Less-394 cd /sources tar xvf /lfs-sources/less-394.tar.gz cd less-394 ./configure --prefix=/usr --sysconfdir=/etc make make install cd /sources # 6.44. Make-3.80 cd /sources tar xvf /lfs-sources/make-3.80.tar.bz2 cd make-3.80 ./configure --prefix=/usr make make install cd /sources # 6.45. Man-DB-2.4.3 cd /sources tar xvf /lfs-sources/man-db-2.4.3.tar.gz cd man-db-2.4.3 mv man/de{_DE.88591,} && mv man/es{_ES.88591,} && mv man/it{_IT.88591,} && mv man/ja{_JP.eucJP,} && sed -i 's,\*_\*,??,' man/Makefile.in sed -i '/\t\/usr\/man/d' src/man_db.conf.in cat >>include/manconfig.h.in <<"EOF" #define WEB_BROWSER "exec /usr/bin/lynx" #define COL "/usr/bin/col" #define VGRIND "/usr/bin/vgrind" #define GRAP "/usr/bin/grap" EOF ./configure --prefix=/usr --enable-mb-groff --disable-setuid make make install cat >>convert-mans <<"EOF" #!/bin/sh -e FROM="$1" TO="$2" shift ; shift while [ $# -gt 0 ] do FILE="$1" shift iconv -f "$FROM" -t "$TO" "$FILE" >.tmp.iconv mv .tmp.iconv "$FILE" done EOF install -m755 convert-mans /usr/bin # 6.46. Mktemp-1.5 cd /sources tar xvf /lfs-sources/mktemp-1.5.tar.gz cd mktemp-1.5 patch -Np1 -i /lfs-sources/mktemp-1.5-add_tempfile-3.patch ./configure --prefix=/usr --with-libc make make install make install-tempfile cd /sources # 6.47. Module-Init-Tools-3.2.2 cd /sources tar xvf /lfs-sources/module-init-tools-3.2.2.tar.bz2 cd module-init-tools-3.2.2 patch -Np1 -i /lfs-sources/module-init-tools-3.2.2-modprobe-1.patch ./configure && make check && make distclean ./configure --prefix=/ --enable-zlib make make INSTALL=install install cd /sources # 6.48. Patch-2.5.4 cd /sources tar xvf /lfs-sources/patch-2.5.4.tar.gz cd patch-2.5.4 ./configure --prefix=/usr make make install cd /sources # 6.49. Psmisc-22.2 cd /sources tar xvf /lfs-sources/psmisc-22.2.tar.gz cd psmisc-22.2 ./configure --prefix=/usr --exec-prefix="" make make install mv -v /bin/pstree* /usr/bin ln -sv killall /bin/pidof cd /sources # 6.50. Shadow-4.0.15 cd /sources tar xvf /lfs-sources/shadow-4.0.15.tar.bz2 cd shadow-4.0.15 ./configure --libdir=/lib --enable-shared --without-selinux sed -i 's/groups$(EXEEXT) //' src/Makefile find man -name Makefile -exec sed -i '/groups/d' {} \; sed -i -e 's/ ko//' -e 's/ zh_CN zh_TW//' man/Makefile for i in de es fi fr id it pt_BR; do convert-mans UTF-8 ISO-8859-1 man/${i}/*.? done for i in cs hu pl; do convert-mans UTF-8 ISO-8859-2 man/${i}/*.? done convert-mans UTF-8 EUC-JP man/ja/*.? convert-mans UTF-8 KOI8-R man/ru/*.? convert-mans UTF-8 ISO-8859-9 man/tr/*.? make make install cp -v etc/{limits,login.access} /etc sed -e's@#MD5_CRYPT_ENAB.no@MD5_CRYPT_ENAB yes@' \ -e 's@/var/spool/mail@/var/mail@' \ etc/login.defs > /etc/login.defs # sed -i 's@DICTPATH.*@DICTPATH\t/lib/cracklib/pw_dict@' \ # /etc/login.defs mv -v /usr/bin/passwd /bin mv -v /lib/libshadow.*a /usr/lib rm -v /lib/libshadow.so ln -sfv ../../lib/libshadow.so.0 /usr/lib/libshadow.so mkdir -v /etc/default pwconv grpconv passwd root cd /sources # 6.51. Sysklogd-1.4.1 cd /sources tar xvf /lfs-sources/sysklogd-1.4.1.tar.gz cd sysklogd-1.4.1 patch -Np1 -i /lfs-sources/sysklogd-1.4.1-fixes-1.patch patch -Np1 -i /lfs-sources/sysklogd-1.4.1-8bit-1.patch make make install cat > /etc/syslog.conf << "EOF" # Begin /etc/syslog.conf auth,authpriv.* -/var/log/auth.log *.*;auth,authpriv.none -/var/log/sys.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log mail.* -/var/log/mail.log user.* -/var/log/user.log *.emerg * # End /etc/syslog.conf EOF cd /sources # 6.52. Sysvinit-2.86 cd /sources tar xvf /lfs-sources/sysvinit-2.86.tar.gz cd sysvinit-2.86 sed -i 's@Sending processes@& started by init@g' \ src/init.c make -C src make -C src install cat > /etc/inittab << "EOF" # Begin /etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/init.d/rc sysinit l0:0:wait:/etc/rc.d/init.d/rc 0 l1:S1:wait:/etc/rc.d/init.d/rc 1 l2:2:wait:/etc/rc.d/init.d/rc 2 l3:3:wait:/etc/rc.d/init.d/rc 3 l4:4:wait:/etc/rc.d/init.d/rc 4 l5:5:wait:/etc/rc.d/init.d/rc 5 l6:6:wait:/etc/rc.d/init.d/rc 6 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now su:S016:once:/sbin/sulogin 1:2345:respawn:/sbin/agetty tty1 9600 2:2345:respawn:/sbin/agetty tty2 9600 3:2345:respawn:/sbin/agetty tty3 9600 4:2345:respawn:/sbin/agetty tty4 9600 5:2345:respawn:/sbin/agetty tty5 9600 6:2345:respawn:/sbin/agetty tty6 9600 # End /etc/inittab EOF cd /sources # 6.53. Tar-1.15.1 cd /sources tar xvf /lfs-sources/tar-1.15.1.tar.bz2 cd tar-1.15.1 patch -Np1 -i /lfs-sources/tar-1.15.1-gcc4_fix_tests-1.patch patch -Np1 -i /lfs-sources/tar-1.15.1-sparse_fix-1.patch patch -Np1 -i /lfs-sources/tar-1.15.1-security_fixes-1.patch ./configure --prefix=/usr --bindir=/bin --libexecdir=/usr/sbin make make install cd /sources # 6.54. Texinfo-4.8 cd /sources tar xvf /lfs-sources/texinfo-4.8.tar.bz2 cd texinfo-4.8 patch -Np1 -i /lfs-sources/texinfo-4.8-multibyte-1.patch patch -Np1 -i /lfs-sources/texinfo-4.8-tempfile_fix-2.patch ./configure --prefix=/usr make make install make TEXMF=/usr/share/texmf install-tex cd /usr/share/info rm dir for f in * do install-info $f dir 2>/dev/null done cd /sources # 6.55. Udev-096 cd /sources tar xvf /lfs-sources/udev-096.tar.bz2 cd udev-096 tar xf /lfs-sources/udev-config-6.2.tar.bz2 install -dv /lib/{firmware,udev/devices/{pts,shm}} mknod -m0666 /lib/udev/devices/null c 1 3 ln -sv /proc/self/fd /lib/udev/devices/fd ln -sv /proc/self/fd/0 /lib/udev/devices/stdin ln -sv /proc/self/fd/1 /lib/udev/devices/stdout ln -sv /proc/self/fd/2 /lib/udev/devices/stderr ln -sv /proc/kcore /lib/udev/devices/core make EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id \ extras/firmware extras/floppy extras/path_id \ extras/scsi_id extras/usb_id extras/volume_id" make DESTDIR=/ \ EXTRAS="extras/ata_id extras/cdrom_id extras/edd_id \ extras/firmware extras/floppy extras/path_id \ extras/scsi_id extras/usb_id extras/volume_id" install cp -v udev-config-6.2/[0-9]* /etc/udev/rules.d/ install -m644 -D -v docs/writing_udev_rules/index.html \ /usr/share/doc/udev-096/index.html cd /sources # 6.56. Util-linux-2.12r cd /sources tar xvf /lfs-sources/util-linux-2.12r.tar.bz2 cd util-linux-2.12r sed -i 's@etc/adjtime@var/lib/hwclock/adjtime@g' \ hwclock/hwclock.c mkdir -p /var/lib/hwclock patch -Np1 -i /lfs-sources/util-linux-2.12r-cramfs-1.patch ./configure make HAVE_KILL=yes HAVE_SLN=yes make HAVE_KILL=yes HAVE_SLN=yes install cd /sources # 6.57. Vim-7.0 cd /sources tar xvf /lfs-sources/vim-7.0.tar.bz2 cd vim70 patch -Np1 -i /lfs-sources/vim-7.0-fixes-7.patch patch -Np1 -i /lfs-sources/vim-7.0-mandir-1.patch patch -Np1 -i /lfs-sources/vim-7.0-spellfile-1.patch echo '#define SYS_VIMRC_FILE "/etc/vimrc"' >> src/feature.h ./configure --prefix=/usr --enable-multibyte make make install rm -f /usr/share/vim/vim70/tutor/tutor.{gr,pl,ru,sk} rm -f /usr/share/vim/vim70/tutor/tutor.??.* ln -sv vim /usr/bin/vi for L in "" fr it pl ru; do ln -sv vim.1 /usr/share/man/$L/man1/vi.1 done ln -sv ../vim/vim70/doc /usr/share/doc/vim-7.0 cat > /etc/vimrc << "EOF" " Begin /etc/vimrc set nocompatible set backspace=2 syntax on if (&term == "iterm") || (&term == "putty") set background=dark endif " End /etc/vimrc EOF vim -c ':options' # To use these spell files, some configuration in /etc/vimrc is needed, e.g.: # set spelllang=en,ru # set spell cd /sources rm -rf /sources/* ##### 第七章 配置系统启动脚本 ##### cd /sources tar xvf /lfs-sources/lfs-bootscripts-6.2.tar.bz2 cd lfs-bootscripts-6.2 make install cd /sources rm -rf /sources/*
# 手册的 第七章 配置启动脚本 到 第八章 8.2. 创建 /etc/fstab 文件 这部分可以放在一起来做。这里可能会遗漏了一些,欲知详情的还是看下手册。所以这里是需要根据具体情况进行修改的。 ########## 7.5. Configuring the setclock Script ########## cat > /etc/sysconfig/clock << "EOF" # Begin /etc/sysconfig/clock UTC=0 # End /etc/sysconfig/clock EOF ########## 7.8. Creating the /etc/inputrc File ########## # /etc/inputrc File cat > /etc/inputrc << "EOF" # Begin /etc/inputrc # Modified by Chris Lynn <[email protected]> # Allow the command prompt to wrap to the next line set horizontal-scroll-mode Off # Enable 8bit input set meta-flag On set input-meta On # Turns off 8th bit stripping set convert-meta Off # Keep the 8th bit for display set output-meta On # none, visible or audible set bell-style none # All of the following map the escape sequence of the # value contained inside the 1st argument to the # readline specific functions "\eOd": backward-word "\eOc": forward-word # for linux console "\e[1~": beginning-of-line "\e[4~": end-of-line "\e[5~": beginning-of-history "\e[6~": end-of-history "\e[3~": delete-char "\e[2~": quoted-insert # for xterm "\eOH": beginning-of-line "\eOF": end-of-line # for Konsole "\e[H": beginning-of-line "\e[F": end-of-line # End /etc/inputrc EOF ########## 7.9. The Bash Shell Startup Files ########## locale -a LC_ALL=en_GB.iso88591 locale charmap LC_ALL=en_GB.ISO-8859-1 locale language LC_ALL=en_GB.ISO-8859-1 locale charmap LC_ALL=en_GB.ISO-8859-1 locale int_curr_symbol LC_ALL=en_GB.ISO-8859-1 locale int_prefix cat > /etc/profile << "EOF" # Begin /etc/profile #export LANG=POSIX export LANG=en_GB.ISO-8859-1 export INPUTRC=/etc/inputrc # End /etc/profile EOF echo "HOSTNAME=LFS6.25" > /etc/sysconfig/network ########## 7.11. Customizing the /etc/hosts File ########## cat > /etc/hosts << "EOF" # Begin /etc/hosts (network card version) 127.0.0.1 localhost 192.168.1.2 localhost LFS6.25 #192.168.1.2 HOSTNAME.example.org [alias1] [alias2 ...] # End /etc/hosts (network card version) EOF ########## 7.12. Creating custom symlinks to devices ########## # 运行下面的命令得出 /dev/hdd 或者 /dev/hdc 这两个IDE接口的光驱设备的序号。详见手册。 # cd /sys/block/hdd # udevtest /block/hdd # cd /sys/block/hdc # udevtest /block/hdc cat >/etc/udev/rules.d/82-cdrom.rules << EOF # Custom CD-ROM symlinks SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", ENV{ID_PATH}=="pci-0000:00:0f.1-ide-1:0", SYMLINK+="cdrom" SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", ENV{ID_PATH}=="pci-0000:00:0f.1-ide-1:1", SYMLINK+="dvdrw" EOF ########## 7.13. Configuring the network Script ########## ## 运行下面的这条命令得出网卡的MAC地址,然后通过创建的 /etc/udev/rules.d/26-network.rules 这个文件将MAC地址和网络接口名称对应。 # grep -H . /sys/class/net/*/address cat > /etc/udev/rules.d/26-network.rules << EOF ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:11:09:d0:00:6f", NAME="eth0" ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:00:00:00:00:00", NAME="lo" EOF ########## 7.13.2 Creating Network Interface Configuration Files ########## ##### 配置 eth0 ,如果有多块网卡可以用类似的方法再建一个类似的文件 ##### cd /etc/sysconfig/network-devices && mkdir -v ifconfig.eth0 && cat > ifconfig.eth0/ipv4 << "EOF" ONBOOT=yes SERVICE=ipv4-static IP=192.168.1.30 GATEWAY=192.168.1.1 PREFIX=24 BROADCAST=192.168.1.255 EOF ########## 7.13.3. Creating the /etc/resolv.conf File ########## ########## 通过下面这个修改文件来指定DNS ########## cat > /etc/resolv.conf << "EOF" # Begin /etc/resolv.conf domain localhost nameserver 218.104.78.3 nameserver 218.104.78.2 # End /etc/resolv.conf EOF ########## 8. Making the LFS System Bootable ########## ########## 创建 /etc/fstab 文件,此文件如果出错,系统将无法正常启动 ########## cat > /etc/fstab << "EOF" # Begin /etc/fstab # file system mount-point type options dump fsck # order /dev/sda2 / xfs defaults 1 1 #/dev/hda3 swap swap pri=1 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts gid=4,mode=620 0 0 shm /dev/shm tmpfs defaults 0 0 # End /etc/fstab EOF |
###### 编译内核 ##### # 8.3. Linux-2.6.16.38 cd /sources tar xvf /lfs-sources/linux-2.6.16.38.tar.bz2 cd linux-2.6.16.38 patch -Np1 -i /lfs-sources/linux-2.6.16.27-utf8_input-1.patch make mrproper make menuconfig make make modules_install cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.16.38 cp -v System.map /boot/System.map-2.6.16.38 cp -v .config /boot/config-2.6.16.38 install -d /usr/share/doc/linux-2.6.16.38 && cp -r Documentation/* /usr/share/doc/linux-2.6.16.38 cd /sources
cp /boot/config-2.6.16.38 /boot/.config_old |
####### 8.4. Making the LFS System Bootable ####### ## GRUB 引导装载程序 ## ########## floppy (没有软驱,此处可忽略)########## # dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1 # dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1 grub # 下面这两段按具体的配置来写。不论什么硬盘,grub这里只认hd0为第一硬盘,(hd0,0)就是表示第一硬盘第一分区。多块硬盘的需要注意一下。 #root (hd0,2) # 这里的 setup (hd0) 表示把引导代码写到hd0这整块硬盘的最前面的一个扇区MBR的前446字节。当然也可以写到系统分区的第一扇区。只要你要办法让它启动就可以了。 #setup (hd0) #quit cat > /boot/grub/menu.lst << "EOF" # Begin /boot/grub/menu.lst # By default boot the first menu entry. default 0 # Allow 30 seconds before booting the default. timeout 30 # Use prettier colors. color green/black light-green/black # The first entry is for LFS. title LFS 6.2 root (hd0,1) kernel /boot/lfskernel-2.6.16.38 root=/dev/sda2 EOF mkdir -v /etc/grub && ln -sv /boot/grub/menu.lst /etc/grub echo 6.2-5 > /etc/lfs-release |
退出chroot环境
#手工的敲命令退出chroot环境 exit #使用这条命令来确定已经退出了chroot环境。回到了主系统中。 cat /etc/issue |
缷载临时挂载的文件系统。
#缷载从主系统挂载到LFS系统中的 /lfs-sources 并删除$LFS/lfs-source 空目录。
umount $LFS/lfs-sources rmdir $LFS/lfs-sources
umount -v $LFS/dev/pts umount -v $LFS/dev/shm umount -v $LFS/dev umount -v $LFS/proc umount -v $LFS/sys umount -v $LFS
重启机器,尝试启动LFS系统。如果不能正常启动,从上面提到的几个地方。比如配置文件,或者编译内核。
LFS手册上有说/tools目录是在构建LFS系统的过程中构建的临时的编译环境,在LFS完成之后这个工具目录可以删除。但是很多人都还保留它。如果你还想用它来编译系统,也可以留着。用做LFS同样的方法, mount -vo bind /tools ${LFS}/tools 挂载到目标系统就可以了。
作者: huohuliaisili 发布时间: 2007-05-17
http://www.linuxfromscratch.org/blfs
http://www.linuxfromscratch.org/blfs/download.html
青铜镜大哥的帖子 (懒人的BLFS)朝着KDE前进…… http://www.linuxsir.org/bbs/showthread.php?t=298338
按照手册完成了LFS之后,我们已经有了一个基本的系统。这个系统是命令行的,字符的。如果需要使用下载软件,这里需要安装。如果需要配服务器,也需要安装相关的服务器软件。总之,要进一步的完善其功能,就需要继续安装软件继续进行配置。这里,我们就需要继续BLFS的内容了。
就我的理解,BLFS就是为了继续完善扩充以及定制Linux系统。所以BLFS不等于图形化界面。
我的英语很差,差到极点。只能够认识26个英文字母大小写。曾经我认为BLFS难就难在了英文上了。
青铜镜大哥的两篇关于实现Linux桌面系统的帖子,给了我不小的兴趣。照着青铜镜大哥的方法我很快的先后用上了XFce和KDE。之后也出现过很多问题,然后自己一次次的摸索,一次次的看BLFS手册。
BLFS手册不再像LFS手册那样,不再是头到尾做一次就可以了的。BLFS有更多的选择性,它更像一个综合市场。你可以决定买什么,不买什么。LFS的做法可能有很多种,但是目前我只会按照手册上做的这一种。所以我还没有能够体会到LFS是如何完全定制Linux的。学习本身就是一个反复的过程,可能不久之后,我会再继续发掘LFS,再找出新的方法 。
BLFS中感觉最多的就是依赖性问题。安装一个软件包,必须先安装什么包或者好几个包。而且这些依赖的包可能又要依赖另外的软件包。这样的手册看起来就十分的头疼。但,同时,这本手册也很无敌。目前我在做BLFS的时候遇到的问题几乎还没有发现不能在手册中找到答案的。这样头疼的英文手册渐渐的我也能看懂一些,不会的地方我就查在线词典或者全文翻译的网站。编译过程中的提示信息或者提示错误信息十分重要。要学会分析如何解决这些问题。
中文图形桌面KDE篇
在BLFS-6.2.0手册中查找KDE
从 " 28. KDE Core Packages " 这里开始看手册.
首先,讲到的是关于KDE的安装目录的问题..手册上讲了两种选择,一种方法是将KDE安装到 /usr 目录下, 这样在以后如果想安装其它版本的KDE的时候会比较麻烦..另一种方法是把KDE安装到 /opt/kde-xxx 目录下. 这里我们使用的是KDE3.5.6 . 所以我们将所有的 KDE软件都安装到 /opt/kde-3.5.6 这个目录下..如果以后有什么变动,只需要将此目录删除,然后修改相关的配置文件就可以了..大家应该都知道KDE4已经出来的,所以在这里我们将KDE软件安装在/opt/kde-3.5.6这个目录下 . 这里讲一下/opt 目录,其实/opt 这个目录也没有太多要说. 出于一种习惯我们都喜欢把一些非正式的,或者说把一些不太确定是否一直不再有变动的软件安装到这里..当然,变是永恒的,不变是暂时的.. Linux系统中专门为我们安装一些大型软件或者临时软件而准备了这个/opt目录..其实也就是为了方便我们更好的管理软件..当然,通常我们的软件都会以一个目录的方式存放在/opt/ 下. .这样,看到这个目录就知道它是存放了什么软件,看上去就一目了然.
在安装所有KDE软件的时候,我们可以把这些KDE软件包的安装目录规定为 /opt/kde-3.5.6
手册上给我们的方法是用下面的这个命令定义这些KDE软件包的安装目录.
export KDE_PREFIX=/opt/kde-3.5.6
用export 定义安装目录,有个坏处..它只在当前控制台下生效.在其它控制台的时候就需要重新定义..而且,当退出(用户登出)之后,就需要重新定义..我曾经就有一次忘了定义KDE的安装目录,白费了两小时的编译,又花了近三个小时的时间查错.之后又重编译安装KDE的软件包..所以我们换个方法。
接着,将安装KDE软件包的依赖性问题解决好,下载需要使用到的软件,这样就可以开始安装KDE了.
首先是研究手册:
#KDE Core Packages
#KDE的几个核心的软件包
#aRts-1.5.6
#必須依赖Qt-3.3.7和GLib-2.10.3 。所以需要先要安装这两个。
#Kdelibs-3.5.6
#对上面的aRts有依赖。所以要先安装aRts-1.5.6
#Kdebase-3.5.6
#对上面的kdelibs-3.5.6有依赖。所以先安装kdelibs-3.5.6
--------------------------------------------------------------------------
#由于KDE-3.5.6的核心软件包对Qt-3.3.7和Glib-2.10.3有依赖。所以现在先解决这两个依赖的软件包
Qt-3.3.7
#依赖" X Window System "
Glib-2.10.3
#依赖 pkg-config-0.20
#这里pkg-config-0.20没有必须的依赖性需要。
-------------------------------------------------------------------------
#现在先解决Qt-3.3.7对X Windows System的依赖。
#关于X window System手册上给了两个选择。一种是Xorg-6.9.0 ,另一种是XFree86-4.6.0 。我们选择Xorg-6.9.0
# 确定选择了Xorg-6.9.0之后,我们再来看这个软件包有什么依赖关系需要解决。
# 必须的依赖 libpng-1.2.12 和 Fontconfig-2.3.2
#libpng-1.2.12没有必须的依赖性问题 。
#Fontconfig-2.3.2
# 依赖FreeType-2.1.10和expat-2.0.0
#FreeType-2.1.10没有必須的依赖性问题
#expat-2.0.0没有必须的依赖性问题
增加一个可选的软件包
Linux-PAM-0.99.4.0
从上面的分析可以看出,现在我们曾先要解决的是安装 X window System 。我们选择了Xorg6.9.0 。
这里,我们需要下载安装过程中需要的软件。详情请看BLFS-6.2.0手册。
我们下载的软件因为以后可能还会用到,所以把它放在一个非系统分区上比较好。也就是我们的存储区。然后我们可以在LFS系统的/etc/fstab文件中指定系统启动时就挂载这个存储区。然后在LFS系统根目录下创建一个指向下载软件的链接。举个例子:比如我们的的存储区是/dev/hda5这个分区(最好是Linux支持读写的),我们在这个分区的根目录下建一个名称为BLFS的目录。然后设置挂载这个分区,并创建一个链接。过程如下:
mkdir /media/hda5 && mount /dev/hda5 /media/hda5
mkdir /media/hda5/BLFS
# 将BLFS原码包目录链接到根目录下
ln -sv /media/hda5/BLFS /
(如果你下载到linux系统分区,可以只需要在根目录下建一个/BLFS目录)
解压缩软件包,仍然延用LFS阶段时的 /sources 目录。所以希望你还没有删除这个目录,如果已经删除最好还是先建一个。
2007-05-21下午四点半左右正式获得青铜镜大哥的帮助和允许,现在将青铜镜大哥的帖子引用一段,并作一些修改。
以下内容照抄一段青铜镜大哥的帖子 (懒人的BLFS)朝着KDE前进…… http://www.linuxsir.org/bbs/showthread.php?t=298338
01-Xwindow ----------------------------------- 01-libpng *********************************** cd /sources tar xvf /BLFS/libpng-1.2.12.tar.bz2 cd libpng-1.2.12 ./configure --prefix=/usr && make make install && install -v -m755 -d /usr/share/doc/libpng-1.2.12 && install -v -m644 README libpng.txt /usr/share/doc/libpng-1.2.12 cd /sources rm -rf libpng-1.2.12 *********************************** 02-expat *********************************** cd /sources tar xvf /BLFS/expat-2.0.0.tar.gz cd expat-2.0.0 ./configure --prefix=/usr && make make install && install -v -m755 -d /usr/share/doc/expat-2.0.0 && install -v -m644 doc/*.{html,png,css} /usr/share/doc/expat-2.0.0 cd /sources rm -rf expat-2.0.0 *********************************** 03-freetype *********************************** cd /sources tar xvf /BLFS/freetype-2.1.10.tar.bz2 cd freetype-2.1.10 tar xf /BLFS/freetype-doc-2.1.10.tar.bz2 \ --strip-components=2 -C docs sed -i -r 's:.*(#.*BYTE.*) .*:\1:' \ include/freetype/config/ftoption.h && ./configure --prefix=/usr && make make install && install -v -m755 -d /usr/share/doc/freetype-2.1.10 && cp -v -R docs/* /usr/share/doc/freetype-2.1.10 cd /sources rm -rf freetype-2.1.10 *********************************** 04-fontconfig *********************************** cd /sources tar xvf /BLFS/fontconfig-2.3.2.tar.gz cd fontconfig-2.3.2 ./configure --prefix=/usr --sysconfdir=/etc \ --disable-docs --without-add-fonts \ --with-docdir=/usr/share/doc/fontconfig-2.3.2 && make install && install -v -m644 doc/*.3 /usr/share/man/man3 && install -v -m644 doc/*.5 /usr/share/man/man5 && install -v -m755 \ -d /usr/share/doc/fontconfig-2.3.2/fontconfig-devel && install -v -m644 doc/*.{html,pdf,txt} \ /usr/share/doc/fontconfig-2.3.2 && install -v -m644 doc/fontconfig-devel/* \ /usr/share/doc/fontconfig-2.3.2/fontconfig-devel cd /sources rm -rf fontconfig-2.3.2 *********************************** 05-linux-pam *********************************** cd /sources tar xvf /BLFS/Linux-PAM-0.99.4.0.tar.bz2 cd Linux-PAM-0.99.4.0 tar -xf /BLFS/Linux-PAM-0.99.4.0-docs.tar.bz2 -C doc ./configure --libdir=/usr/lib \ --sbindir=/lib/security \ --enable-securedir=/lib/security \ --enable-docdir=/usr/share/doc/Linux-PAM-0.99.4.0 \ --enable-read-both-confs && make make install && chmod -v 4755 /lib/security/unix_chkpwd && mv -v /lib/security/pam_tally /sbin && mv -v /usr/lib/libpam*.so.0* /lib && ln -v -sf ../../lib/libpam.so.0.81.3 /usr/lib/libpam.so && ln -v -sf ../../lib/libpamc.so.0.81.0 /usr/lib/libpamc.so && ln -v -sf ../../lib/libpam_misc.so.0.81.2 /usr/lib/libpam_misc.so for DOCTYPE in html pdf ps txts do cp -v -R doc/$DOCTYPE /usr/share/doc/Linux-PAM-0.99.4.0 done cd /sources rm -rf Linux-PAM-0.99.4.0 *********************************** 06-Xorg-6.9.0_1 *********************************** cd /sources tar xvf /BLFS/X11R6.9.0-src.tar.bz2 cd xc patch -Np1 -i /BLFS/xorg-6.9.0-luit_race-1.patch && patch -Np1 -i /BLFS/xorg-6.9.0-security-4.patch sed -i 's@/usr/X11R6@</usr>@' programs/luit/parser.h sed -i '/^SUBDIRS =/s/ etc$//' programs/Xserver/Xprint/Imakefile pushd config/util && make -f Makefile.ini lndir popd mkdir ../xcbuild && cd ../xcbuild && ../xc/config/util/lndir ../xc cat > config/cf/host.def << "EOF" /* Begin Xorg host.def file */ /* System Related Information. If you read and configure only one * section then it should be this one. The Intel architecture defaults * are set for a i686 and higher. Axp is for the Alpha architecture * and Ppc is for the Power PC. AMD64 is for the Opteron processor. * Note that there have been reports that the Ppc optimization line * causes segmentation faults during build. If that happens, try * building without the DefaultGcc2PpcOpt line. ***********/ /* #define DefaultGcc2i386Opt -O2 -fno-strength-reduce \ -fno-strict-aliasing -march=i686 */ /* #define DefaultGcc2AMD64Opt -O2 -fno-strength-reduce \ -fno-strict-aliasing */ /* #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 */ /* #define DefaultGcc2PpcOpt -O2 -mcpu=750 */ #define HasFreetype2 YES #define HasFontconfig YES #define HasExpat YES #define HasLibpng YES #define HasZlib YES /* Uncomment the following define if you'd like * xdm to use Linux-PAM #define HasPam YES */ /* * Which drivers to build. When building a static server, each of * these will be included in it. When building the loadable server * each of these modules will be built. * #define XF86CardDrivers mga glint nv tga s3virge sis rendition \ neomagic i740 tdfx savage \ cirrus vmware tseng trident chips apm \ GlideDriver fbdev i128 \ ati DevelDrivers ark \ cyrix siliconmotion vesa vga \ XF86OSCardDrivers XF86ExtraCardDrivers */ /* * Select the XInput devices you want by uncommenting this. * #define XInputDrivers mouse keyboard acecad calcomp citron \ digitaledge dmc dynapro elographics \ microtouch mutouch penmount spaceorb \ summa wacom void magictouch aiptek */ /* Most installs will only need this */ #define XInputDrivers mouse keyboard /* Xterm is no longer built by default */ #define BuildXterm YES /* Disable building Xprint server and clients until we get them figured * out but build Xprint libraries to allow precompiled binaries such as * Acrobat Reader to run. */ #define XprtServer NO #define BuildXprintClients NO /* Uncomment the following define if you would prefer to install X into * /usr or change it to any other location that you prefer. * The GL related defines disable compatibility symlinks (the links * are not needed when X is installed in /usr). #define ProjectRoot /usr #define LinkGLToUsrInclude NO #define LinkGLToUsrLib NO */ /* End Xorg host.def file */ EOF sed -i -e "s@^#include <linux/config.h>@/* & */@" \ `grep -lr linux/config.h *` && ( make World 2>&1 | tee xorg-compile.log && exit $PIPESTATUS ) make install && make install.man ln -v -s ../X11R6/bin /usr/bin/X11 && ln -v -s ../X11R6/lib/X11 /usr/lib/X11 && ln -v -s ../X11R6/include/X11 /usr/include/X11 install -v -d -m755 /usr/share/fonts && ln -svn /usr/X11R6/lib/X11/fonts/TTF /usr/share/fonts/X11-TTF cat >> /etc/ld.so.conf << "EOF" /usr/X11R6/lib EOF ldconfig && cat >> /etc/profile << "EOF" export PATH=$PATH:/usr/X11R6/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/X11R6/lib/pkgconfig EOF /sbin/ldconfig && cd ~ && /usr/X11R6/bin/Xorg -configure *********************************** 07-test-text *********************************** /usr/X11R6/bin/X -config ~/xorg.conf.new # Ctrl+Alt+backspace # # 按 Ctrl+Alt+backspace 退出X *********************************** 08-Xorg-6.9.0_2 *********************************** install -v -m755 -D ~/xorg.conf.new /etc/X11/xorg.conf cat > ~/.xinitrc << "EOF" && # Begin .xinitrc file xterm -g 80x40+0+0 & xclock -g 100x100-0+0 & twm EOF cat >> /etc/sysconfig/createfiles << "EOF" /tmp/.ICE-unix dir 1777 root root EOF exit *********************************** 09-test-test *********************************** startx xcalc & ***********************************
02-qt ---------------------------------- 10-libjpeg *********************************** cd /sources tar xvf /BLFS/jpegsrc.v6b.tar.gz cd jpeg-6b ./configure --prefix=/usr --enable-static --enable-shared && make make install cd /sources rm -rf jpeg-6b exit *********************************** 11-little_cms *********************************** cd /sources tar xvf /BLFS/lcms-1.15.tar.gz cd lcms-1.15 ./configure --prefix=/usr && make make install && install -v -m755 -d /usr/share/doc/lcms-1.15 && install -v -m644 README.1ST doc/* /usr/share/doc/lcms-1.15 cd /sources rm -rf lcms-1.15 cd /sources exit *********************************** 12-libmng *********************************** cd /sources tar xvf /BLFS/libmng-1.0.9.tar.gz cd libmng-1.0.9 cp makefiles/makefile.linux Makefile && make make prefix=/usr install && install -v -m644 doc/man/*.3 /usr/share/man/man3 && install -v -m644 doc/man/*.5 /usr/share/man/man5 && install -v -m755 -d /usr/share/doc/libmng-1.0.9 && install -v -m644 doc/*.{png,txt} /usr/share/doc/libmng-1.0.9 cd /sources rm -rf libmng-1.0.9 *********************************** 13-blfs-bootscripts *********************************** tar xvf /BLFS/blfs-bootscripts-20060910.tar.bz2 *********************************** 14-nas *********************************** cd /sources tar xvf /BLFS/nas-1.7.src.tar.gz cd nas-1.7 patch -Np1 -i /BLFS/nas-1.7-gcc4-1.patch && xmkmf && make World make install install.man && install -v -m755 -d /usr/share/doc/nas-1.7/pdf && install -v -m644 doc/pdf/* /usr/share/doc/nas-1.7/pdf && install -v -m644 doc/{README,actions,*.{ps,txt}} \ /usr/share/doc/nas-1.7 install -v -m644 /etc/nas/nasd.conf.eg /etc/nas/nasd.conf cd /sources rm -rf nas-1.7 *********************************** 15-nas *********************************** cd /sources cd blfs-bootscripts-20060910 make install-nas cd /sources *********************************** 17-qt *********************************** cat > ~/.login << "EOF" export QTDIR=/opt/qt export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/lib/libqt-mt.so:$LD_LIBRARY_PATH EOF cat > ~/.profile << "EOF" export QTDIR=/opt/qt export PATH=$QTDIR/bin:$PATH export MANPATH=$QTDIR/man:$MANPATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH EOF cp /BLFS/qt-x11-free-3.3.7.tar.bz2 /opt cd /opt tar xvf qt-x11-free-3.3.7.tar.bz2 mv qt-x11-free-3.3.7 qt cd qt export QTDIR=/opt/qt-3.3.7 && export LD_LIBRARY_PATH=/opt/qt-3.3.7/lib:$LD_LIBRARY_PATH && export PATH=/opt/qt-3.3.7/bin:$PATH && cd /opt ***********************************
03-qt-test (qt-测试) ---------------------------------- 18-qt *********************************** # 如果这一部分是编成脚本来做,需要将脚本拷贝到/opt/qt 目录中再运行。 cd /opt/qt ./configure -prefix /opt/qt-3.3.7 \ -sysconfdir /etc/qt \ -qt-gif \ -system-zlib \ -system-libpng \ -system-libjpeg \ -system-libmng \ -plugin-imgfmt-png \ -plugin-imgfmt-jpeg \ -plugin-imgfmt-mng \ -no-exceptions \ -thread \ -tablet && make sub-tools && make install && ln -v -sfn qt-3.3.7 /opt/qt && ln -v -s libqt-mt.so /opt/qt/lib/libqt.so && cp -v -r doc/man /opt/qt/doc && cp -v -r examples /opt/qt/doc export QTDIR=/opt/qt cat >> /etc/ld.so.conf << "EOF" && # Begin qt addition to /etc/ld.so.conf /opt/qt/lib # End qt addition EOF ldconfig && cat >> /etc/man_db.conf << "EOF" # Begin qt addition to man_db.conf MANDATORY_MANPATH /opt/qt/doc/man # End qt addition to man_db.conf EOF cat >> /etc/profile << "EOF" export PARH=$PATH:/opt/qt-3.3.7/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt-3.3.7/lib/pkgconfig EOF cd .. *********************************** 19-test-test *********************************** qmake designer & assistant & ***********************************
04-support_library (支持库) --------------------------------- 20-pkg-config *********************************** cd /sources tar xvf /BLFS/pkg-config-0.20.tar.gz cd pkg-config-0.20 ./configure --prefix=/usr && make make install cd /sources rm -rf pkg-config-0.20 *********************************** 21-glib *********************************** cd /sources tar xvf /BLFS/glib-2.10.3.tar.bz2 cd glib-2.10.3 ./configure --prefix=/usr && make make install cd /sources rm -rf glib-2.10.3 *********************************** 22-atk *********************************** cd /sources tar xvf /BLFS/atk-1.11.4.tar.bz2 cd atk-1.11.4 ./configure --prefix=/usr && make make install cd /sources rm -rf atk-1.11.4 *********************************** 23-libtiff *********************************** cd /sources tar xvf /BLFS/tiff-3.8.2.tar.gz cd tiff-3.8.2 ./configure --prefix=/usr && make make install cd /sources rm -rf tiff-3.8.2 *********************************** 24-cairo *********************************** cd /sources tar xvf /BLFS/cairo-1.2.4.tar.gz cd cairo-1.2.4 ./configure --prefix=/usr && make make install cd /sources rm -rf cairo-1.2.4 *********************************** 25-pango *********************************** cd /sources tar xvf /BLFS/pango-1.12.3.tar.bz2 cd pango-1.12.3 ./configure --prefix=/usr --sysconfdir=/etc && make make install cd /sources rm -rf pango-1.12.3 *********************************** 26-gtk+ *********************************** cd /sources tar xvf /BLFS/gtk+-2.8.20.tar.bz2 cd gtk+-2.8.20 ./configure --prefix=/usr --sysconfdir=/etc && make make install && install -v -m755 -d /usr/share/doc/gtk+-2.8.20/{faq,tutorial} && cp -v -R docs/faq/html/* /usr/share/doc/gtk+-2.8.20/faq && cp -v -R docs/tutorial/html/* /usr/share/doc/gtk+-2.8.20/tutorial cd /sources rm -rf gtk+-2.8.20 ***********************************
05-recommend (推荐安装的包) --------------------------------- 40-libogg *********************************** cd /sources tar xvf /BLFS/libogg-1.1.3.tar.gz cd libogg-1.1.3 ./configure --prefix=/usr && make make install cd /sources rm -rf liboog-1.1.3 *********************************** 41-libvorbis *********************************** cd /sources tar xvf /BLFS/libvorbis-1.1.2.tar.gz cd libvorbis-1.1.2 ./configure --prefix=/usr && make sed -i.bak -e 's/-mno-ieee-fp//' lib/Makefile make install && install -v -m644 doc/Vorbis* /usr/share/doc/libvorbis-1.1.2 cd /sources rm -rf libvorbis-1.1.2 *********************************** 42-audiofile *********************************** cd /sources tar xvf /BLFS/audiofile-0.2.6.tar.gz cd audiofile-0.2.6 ./configure --prefix=/usr && make make install cd /sources rm -rf audiofile-0.2.6 *********************************** 43-esound *********************************** cd /sources tar xvf /BLFS/esound-0.2.36.tar.bz2 cd esound-0.2.36 sed -i 's@doc/esound@&-0.2.36@' configure && ./configure --prefix=/usr --sysconfdir=/etc && make make install cp -v -R docs/html /usr/share/doc/esound-0.2.36 cd /sources rm -rf esound-0.2.36 *********************************** 44-lame *********************************** cd /sources tar xvf /BLFS/lame-3.96.1.tar.gz cd lame-3.96.1 ./configure --prefix=/usr --enable-mp3rtp && make make install cd /sources rm -rf lame-3.96.1 *********************************** 45-ffmpeg *********************************** cd /sources tar xvf /BLFS/ffmpeg-0.4.9-pre1.tar.gz cd ffmpeg-0.4.9-pre1 patch -Np1 -i /BLFS/ffmpeg-0.4.9-pre1-gcc4-1.patch && patch -Np1 -i /BLFS/ffmpeg-0.4.9-pre1-amr_fixes-1.patch && sed -i "s/static uint64/const uint64/" \ libavcodec/liba52/resample_mmx.c && ./configure --prefix=/usr --enable-shared \ --enable-pthreads --disable-ffplay && make make -C doc ff{mpeg,play,server}.1 make install install -v -m755 -d /usr/share/doc/ffmpeg-0.4.9-pre1 && install -v -m644 doc/* /usr/share/doc/ffmpeg-0.4.9-pre1 cd /sources rm -rf ffmpeg-0.4.9-pre1 *********************************** 46-doxyen *********************************** cd /sources tar xvf /BLFS/doxygen-1.4.6.src.tar.gz cd doxygen-1.4.6 rm src/unistd.h && ./configure --prefix /usr --docdir /usr/share/doc && make make install cd /sources rm -rf doxygen-1.4.6 *********************************** 47-libmad *********************************** cd /sources tar xvf /BLFS/libmad-0.15.1b.tar.gz cd libmad-0.15.1b ./configure --prefix=/usr && make make install cat > /usr/lib/pkgconfig/mad.pc << "EOF" prefix=/usr exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: mad Description: MPEG audio decoder Requires: Version: 0.15.1b Libs: -L${libdir} -lmad Cflags: -I${includedir} EOF cd /sources rm -rf libmad-0.15.1b ***********************************
06-asla ---------------------------------- 51-alsa-lib *********************************** cd /sources tar xvf /BLFS/alsa-lib-1.0.13.tar.bz2 cd alsa-lib-1.0.13 ./configure --enable-static && make make install && install -v -m644 -D doc/asoundrc.txt \ /usr/share/doc/alsa-lib-1.0.13/asoundrc.txt make doc install -v -d -m755 /usr/share/doc/alsa-1.0.13/html && install -v -m644 doc/doxygen/html/* /usr/share/doc/alsa-1.0.13/html cd /sources rm -rf alsa-lib-1.0.13 *********************************** 52-alsa-plugins *********************************** cd /sources tar xvf /BLFS/alsa-plugins-1.0.13.tar.bz2 cd alsa-plugins-1.0.13 ./configure && make make install && install -v -m755 -d /usr/share/doc/alsa-plugins-1.0.13 && install -v -m644 doc/{README*,*.txt} \ /usr/share/doc/alsa-plugins-1.0.13 cd /sources rm -rf alsa-plugins-1.0.13 *********************************** 53-alsa-utils *********************************** cd /sources tar xvf /BLFS/alsa-utils-1.0.13.tar.bz2 cd alsa-utils-1.0.13 ./configure && make make install cd ../blfs-bootscripts-20060910 make install-alsa cd ../alsa-utils-1.0.13 touch /etc/asound.state && alsactl store cat > /etc/udev/rules.d/40-alsa.rules << "EOF" # /etc/udev/rules.d/40-alsa.rules # When a sound device is detected, restore the volume settings KERNEL=="controlC[0-9]*", ACTION=="add", RUN+="/usr/sbin/alsactl restore %n" EOF chmod -v 644 /etc/udev/rules.d/40-alsa.rules cd /sources rm -rf alsa-utils-1.0.13 ***********************************
07-KDE ---------------------------------- 60-conf-txt *********************************** cat >> /etc/profile << "EOF" # 直接将KDE安装目录加入全局变量。需要变动时再行修改。 export KDE_PREFIX=/opt/kde-3.5.6 export PATH=$PATH:/opt/kde-3.5.6/bin export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/kde-3.5.6/lib/pkgconfig EOF cat >> /etc/ld.so.conf << "EOF" # Begin kde addition to /etc/ld.so.conf /opt/kde-3.5.6/lib # End kde addition EOF cat >> /etc/man_db.conf << "EOF" # Begin kde addition to man_db.conf MANDATORY_MANPATH /opt/kde-3.5.6/man # End kde addition to man_db.conf EOF ln -v -sf kde-3.5.6 /opt/kde #重登录一次。 init 1 && init 3 *********************************** 61-aRts *********************************** cd /sources tar xvf /BLFS/arts-1.5.6.tar.bz2 cd arts-1.5.6 ./configure --prefix=$KDE_PREFIX --disable-debug \ --disable-dependency-tracking && make make install cd /sources rm -rf arts-1.5.6 *********************************** 62-PCRE *********************************** cd /sources tar xvf /BLFS/pcre-6.7.tar.bz2 cd pcre-6.7 ./configure --prefix=/usr --enable-utf8 && make make install && install -v -m755 -d /usr/share/doc/pcre-6.7/html && install -v -m644 doc/html/* /usr/share/doc/pcre-6.7/html && install -v -m644 doc/{Tech.Notes,*.txt} /usr/share/doc/pcre-6.7 mv -v /usr/lib/libpcre.so.* /lib/ && ln -v -sf ../../lib/libpcre.so.0 /usr/lib/libpcre.so cd /sources rm -rf pcre-6.7 *********************************** 63-kdelibs-3.5.6 *********************************** cd /sources tar xvf /BLFS/kdelibs-3.5.6.tar.bz2 cd kdelibs-3.5.6 ./configure --prefix=$KDE_PREFIX \ --sysconfdir=/etc/kde \ --disable-debug \ --disable-dependency-tracking && make make install cd /sources rm -rf kdelibs-3.5.6 *********************************** 65-Kdebase-3.5.6 *********************************** cd /sources tar xvf /BLFS/kdebase-3.5.6.tar.bz2 cd kdebase-3.5.6 ./configure --prefix=$KDE_PREFIX --sysconfdir=/etc/kde \ --disable-debug --disable-dependency-tracking && make make install cd /sources rm -rf kdebase-3.5.6 *********************************** 66-config_cor-kde-gackages *********************************** echo "exec startkde" > ~/.xinitrc echo "exec dbus-launch --exit-with-session startkde" >> ~/.xinitrc update-desktop-database update-desktop-database startx ***********************************
cp -Rav /root /root_bak
*********************************** 67-Kdeadmin-3.5.6 *********************************** cd /sources tar xvf /BLFS/kdeadmin-3.5.6.tar.bz2 cd kdeadmin-3.5.6 ./configure --prefix=$KDE_PREFIX --disable-debug \ --disable-dependency-tracking && make make install cd /sources rm -rf kdeadmin-3.5.6 *********************************** 68-Kdenetwork-3.5.6 *********************************** cd /sources tar xvf /BLFS/kdenetwork-3.5.6.tar.bz2 cd kdenetwork-3.5.6 ./configure --prefix=$KDE_PREFIX --disable-debug \ --disable-dependency-tracking && make make install cd /sources rm -rf kdenetwork-3.5.6 cd blfs-bootscripts-20060910 make install-lisa *********************************** 69-Kdemultimedia-3.5.6 *********************************** cd /sources #tar xvf /BLFS/30375-akode-2.0.2.tar.bz2 #cd *akode* #./configure --prefix=$KDE_PREFIX \ # --disable-debug --disable-dependency-tracking && #make #make install #cd .. tar xvf /BLFS/kdemultimedia-3.5.6.tar.bz2 cd kdemultimedia-3.5.6 ./configure --prefix=$KDE_PREFIX --sysconfdir=/etc/kde \ --disable-debug --disable-dependency-tracking && make make install cd /sources rm -rf kdemultimedia-3.5.6 ***********************************
70-kde-i18n-zh_CN(使用繁体中文的朋友下载相应的软件包) *********************************** cd /sources tar xvf /BLFS/kde-i18n-zh_CN-3.5.6.tar.bz2 cd kde-i18n-zh_CN-3.5.6 ./configure --prefix=$KDE_PREFIX && make make install cd /sources ***********************************
0705-KdeMultimedia ************************************ cd /sources tar xvf /CBLFS/kdemultimedia-3.5.7.tar.bz2 cd kdemultimedia-3.5.7 #patch -Np1 -i /CBLFS/kdemultimedia-3.5.7-libtunepimp_0.5.x-1.patch ./configure --prefix=$KDE_PREFIX --sysconfdir=/etc/kde \ --disable-debug --disable-dependency-tracking && make make install cd /sources rm -rf kdemultimedia-3.5.7
在线输入法:
原文地址 http://blog.donews.com/windrose/arch...08/580555.aspx
Linux中屏幕偏移的问题:
0、首先备份/etc/X11/xorg.conf文件 1、在终端运行xvidtune 2、鼠标点击Left或Right按钮 3、点击Test按钮 4、如果test感觉屏幕显示好了,点击Show按钮,这是在终端会记录下一行,内容如下: "1024x768" 94.50 1024 1096 1192 1376 768 769 772 808 +hsync +vsync 把上面这一行记录下来(复制、笔记)。如果效果还是不好,返回第2步。 5、在/etc/X11/xorg.conf的Section "Monitor"中添加下面一行(当然改成你的第4步记录下来的内容): Modeline "1024x768" 94.50 1024 1096 1192 1376 768 769 772 808 +hsync +vsync 这句话建议放到对应的EndSection之前一句。如果已经有这句话,在原来的那一句前面添加#符号注释掉。最好先备份一行xorg.conf,以后如果安装新的NV驱动,就需要,因为NV驱动内部已经修正该偏移问题。 6、保存xorg.conf;重新启动Xwindow就可以了。 |
方法一
(推荐)
文泉驿
http://wqy.sourceforge.net/cgi-bin/index.cgi
开源服务
[文泉驿字体下载] http://sourceforge.net/project/downl...se_mirror=nchc
找到 wqy-bitmapfont-pkgsrc 这样的字样 ,带 src 字样的就是了。这是 .tar.gz 的包 ..
cd /sources
tar xvf /BLFS/wqy-bitmapfont-bdf-all-cvs20070506.tar.gz
cd wqy-bitmapfont-all
# 查看安装说明
more INSTALL
# 用opera网页浏览器打开解包的文泉驿字体目录下的 INSTALL.zh.gb2312 (注意设置浏览器的编译为 gb2312 )和 INSTALL 。里面安装说明。我的英文太差,所以我只能一半英文,一半中文的照着看。必要时用一下在线翻译。
方法二
引用 SlackwareV11的字体美化攻略 http://www.linuxsir.org/bbs/showthread.php?t=274779
这里,在找不到中文字体的情况下,我拷贝了几个windows系统中的字体。
到/etc/fonts/fonts.conf中找:
<dir>/usr/X11R6/lib/X11/fonts</dir>
在它之后加入:
<dir>/usr/X11R6/lib/X11/fonts/misc</dir>
拷贝Windows XP下的simsun.ttc到/usr/share/fonts到/usr/share/fonts/ttf目录:
mkdir -p /usr/share/fonts/ttf cp /mnt/c/WINDOWS/Fonts/simsun.ttc /usr/share/fonts/ttf/ -v
fc-cache -v
命令行下临时改locale,设置LANG值为zh_CN.UTF-8 。
export LANG=zh_CN.UTF-8
startx
K菜单--> 控制中心 --> 改语言环境为中国
再次退出图形界面,然后startx启动KDE 。此时应该可以正常显示中文的文件名。
locale设置
调节音量:
K菜单--> K多媒体 --> KMix混响器
安装输入法:
fcitx 小企鹅输入法。
因为我们做的这个系统全是用源码包手工编译的,所以我们尽量的在安装软件的过程中使用源码包或者预编译的软件包。比如.bin 或 .bin.tar.bz2 或 .tar.bz2 和 .tar.gz 之类的包。
如果是预编译包,解包后到目录下运行fcitx.install就可以了。
如果是源码包,需要手工编译。
cd /sources tar xvf /CBLFS/fcitx-3.4.2.tar.bz2 cd fcotx-3.4.2 ./configure --prefix=/usr make make install mkdir -pv /etc/X11/xinit/xinput.d cat > /etc/X11/xinit/xinput.d/zh_CN << "EOF" XIM=fcitx XIM_PROGRAM=fcitx GTK_IM_MODULE=fcitx gnome-im-settings-daemon >/dev/null EOF
安装Mplayer
# cd /CBLFS # wget -c http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc1.tar.bz2 # wget -c http://www.mplayerhq.hu/MPlayer/releases/codecs/essential-20061022.tar.bz2 # wget -c http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20061022.tar.bz2 # lynx http://www.mplayerhq.hu/MPlayer/releases/codecs/ # wget -c http://www.mplayerhq.hu/MPlayer/skins/Blue-1.7.tar.bz2 # lynx http://www1.mplayerhq.hu/MPlayer/skins/ # http://www1.mplayerhq.hu/MPlayer/releases/fonts/font-arial-iso-8859-1.tar.bz2 cd /sources tar xvf /CBLFS/MPlayer-1.0rc1.tar.bz2 cd MPlayer-1.0rc1 # Install Additinal Codecs: install -v -d -m755 /usr/lib/mplayer/codecs && #tar -xvf /CBLFS/essential-20061022.tar.bz2 -C /usr/lib/mplayer/codecs --strip-components=1 && tar -jxvpf /CBLFS/all-20061022.tar.bz2 -C /usr/lib/mplayer/codecs --strip-components=1 chown -v -R root:root /usr/lib/mplayer/codecs # Install GUI: install -v -d -m755 /usr/share/mplayer/Skin && tar -xvf /CBLFS/Blue-1.7.tar.bz2 -C /usr/share/mplayer/Skin && chown -v -R root:root /usr/share/mplayer/Skin/Blue && chmod -v 755 /usr/share/mplayer/Skin/Blue{,/icons} && ln -sfv Blue /usr/share/mplayer/Skin/default # Configure and compile the package: ./configure --prefix=/usr --confdir=/etc/mplayer --enable-gui --with-codecsdir=/usr/lib/mplayer/codecs \ --with-win32libdir=/usr/lib/mplayer/codecs --with-reallibdir=/usr/lib/mplayer/codecs \ --with-xanimlibdir=/usr/lib/mplayer/codecs --language=zh_CN make # Install the package: make install # http://www.mplayerhq.hu/design7/dload.html install -v -m755 -d /usr/share/doc/mplayer-1.0pre7try2 && cp -v -R DOCS/* /usr/share/doc/mplayer-1.0pre7try2 ln -v -s libdha.so.1.0 /usr/lib/libdha.so install -m644 etc/codecs.conf /etc/mplayer install -m644 etc/*.conf /etc/mplayer echo "dev.rtc.max-user-freq=1024" >> /etc/sysctl.conf # Install the fonts: tar -xvf /CBLFS/font-arial-iso-8859-1.tar.bz2 -C /usr/share/mplayer/font && chown -v -R root:root /usr/share/mplayer/font && cd /usr/share/mplayer/font && #ln -v -sf font-arial-iso-8859-1/font-arial-FONT_SIZE-iso-8859-1/* . ln -v -sf font-arial-iso-8859-1/font-arial-14-iso-8859-1/* . cd /sources
cp -Rav /root /default_home
tar -jcvf /default_home.tar.bz2 /root
创建普通用户 , 使用默认用户主目录作为普通用户主目录。
useradd linux
id linux
uid=1001(linux) gid=1001(linux) groups=1001(linux)
cp -Rav /default_home /home/linux
chown -R linux:linux /home/linux/
<以普通用户登录>
选择安装的软件
EVA
firefox
gimp
Openoffice


Default.jpg (93.9 KB, 55 次查看) | |
Desktop.jpg (149.7 KB, 493 次查看) |
作者: huohuliaisili 发布时间: 2007-05-17
作者: JianLee 发布时间: 2007-05-17
作者: huohuliaisili 发布时间: 2007-05-17
作者: youbest 发布时间: 2007-05-17
顶之!
作者: neilengineer 发布时间: 2007-05-18
以前好像都没有吧
作者: freesu 发布时间: 2007-05-18
我要把这个帖子打印出来,一步步做。
疑问:看了安装grub的步骤,好像没有添加其他的操作系统到启动菜单中,grub是不是会自动进行这个操作呀?
另外,你的博客为什么要搞那么宽呢,左右拉来拉去好费力呀!
作者: guo333806 发布时间: 2007-05-19
作者: guo333806
又出现了一位狂人 致敬!!
我要把这个帖子打印出来,一步步做。 疑问:看了安装grub的步骤,好像没有添加其他的操作系统到启动菜单中,grub是不是会自动进行这个操作呀? 另外,你的博客为什么要搞那么宽呢,左右拉来拉去好费力呀! |
而且,论坛上所显示的有很多地方不正常。比如把一些字符变成了表情。
当然,完全没有必要打印出来。浪费钱嘛。
直接在电脑上执行下,多省心?就是想修改也很方便,为什么要打印呢?
帖子中还有很多地方没有讲明白的方。所以这需要我再反复的检查几次。
如果有需要,我会上传 .tar.bz2 的压缩包。其中会有详细说明。写这篇帖子也就完全是手册上的内容,只是简单的梳理一下。只是想为初学者引个路,从此LFS不再高不可攀。
关于GRUB的问题,已经写过了,可能你没看到。一会,我再加一下中文注释。
由我使用的是Linux中的firefox浏览器,还有opera浏览器,我看到的我的博客中显示是正常的。看来我得改一改。
作者: huohuliaisili 发布时间: 2007-05-19
你是用lfs6.2.5Livecd做的,我的电脑上也是这个版本,这样我只要傻瓜式的敲入就可以了,连文件版本号都不需要改。
用livecd编译,我上不了网,因为我们学校要搞个什么认证才行,反正很麻烦。所以就打印啦,算了一下,36页,也才六七块钱。
这样应该能成功了
作者: guo333806 发布时间: 2007-05-19
作者: guo333806
你要是把压缩包上传上来的话那就更好了,免得我又要在word里面编辑。
你是用lfs6.2.5Livecd做的,我的电脑上也是这个版本,这样我只要傻瓜式的敲入就可以了,连文件版本号都不需要改。 用livecd编译,我上不了网,因为我们学校要搞个什么认证才行,反正很麻烦。所以就打印啦,算了一下,36页,也才六七块钱。 这样应该能成功了 |
等一会,我还会再测试一下。部分地方会加图解说明。
附件大小12.9KB解压后43KB的文本文件,打印它做啥?
如果你有U盘,可以拷贝下来。拿到电脑上用。
现在好多手机也有U盘、mp3什么的,带数据线就可以用。好像打印也是需要先拷贝文件的,一般学校机房或者网吧不提供打印服务的。
如果做完LFS后出现了引导故障,可以到本帖来找答案。
要使用LFS和BLFS的方法定做一个符合自己需要的Linux系统,不能不承认这是一个浩大的工程。或许三、五天,或许几个月。有的时候一个小问题也可能会郁闷上好几天。
我只希望有这个想法但却还迟迟没有动手的朋友们,看了这些之后能够少一些麻烦多一些信心。
作者: huohuliaisili 发布时间: 2007-05-19
作者: guo333806 发布时间: 2007-05-19
期待后面几篇啊~
作者: hersk 发布时间: 2007-05-19
另外,我发现在install_LFS/00-root-sh/01-root.sh脚本中,sda2的文件系统为ext3,但是在/install_LFS/05-End/94-conf脚本中sda2的文件系统变成了xfs,这里是不是也应该写成ext3呀?
作者: guo333806 发布时间: 2007-05-19
作者: guo333806
我看了你的脚本,在目录install_LFS/02-lfs-sh/中,依序号来看,28过了应该是29,为什么没有29就直接有了30呢,是不是这里少了一个呀?(只是怀疑而已).
另外,我发现在install_LFS/00-root-sh/01-root.sh脚本中,sda2的文件系统为ext3,但是在/install_LFS/05-End/94-conf脚本中sda2的文件系统变成了xfs,这里是不是也应该写成ext3呀? |
那几个配置文件是肯定需要手工修改的。
作者: huohuliaisili 发布时间: 2007-05-20
现在我正在执行第四个目录下的脚本,但目前我一次都没清理系统,清理系统可不可以在安装完成以后再来清理?如果不清理,会不会出现什么问题?
作者: guo333806 发布时间: 2007-05-20
cd $LFS/sources
作者: huohuliaisili 发布时间: 2007-05-20
作者: SCys 发布时间: 2007-05-20
手误,手误。
由于没有转到工作目录,照理说接下来徒劳。但是没有关系,脚本中已经做已经有cd $LFS/sources 了。 chroot 之后的就是 cd /sources ..
但发现有个别脚本中没有加转到编译软件包的目录。所以脚本我修改下。
脚本是没有问题的,只需要自己修改几个配置文件就可以了,一般情况配置文件会影响编译过程,但修改一下比较好(最好是对照册修改)。我一直就这样做的。
作者: huohuliaisili 发布时间: 2007-05-20
作者: huohuliaisili
I'm sorry
cd $LFS/sources |
作者: guo333806 发布时间: 2007-05-20
作者: guo333806
坏了,我输入的是cd /lfs-sources,第二个目录下的脚本已经执行完了,现在正在执行第四个目录下的脚本,目前还没有出现大的错误.难道换成cd /lfs-sources也能顺利完成?
|
但是,我想了一下,既然只有gcc 第一遍没有 cd $LFS/sources . 也就是说,只有这一个脚本将在 /home/lfs 解包,编译。没有关系。
还不至于因为这个问题而出错。
作者: huohuliaisili 发布时间: 2007-05-20
作者: SCys 发布时间: 2007-05-20
在执行目录05-END中的脚本时,由于我是第一次编译内核,所以不太会搞,结果步骤意外终止了,我看了下95-Linux-2.6.16.38这个脚本中的命令,手工输入命令运行后,我想内核应该是安装成功了。
但在手工执行sh 96-make-boottable这个脚本时,出现了“grub>”这样的提示符,我一下子愣了,不知该如何是好,按Ctrl+C强行终止了,后来看了一下,发现/boot/grub/menu.lst和/etc/menu.lst都有内容,我就没管那么多,执行reboot命令,出现什么“运行级别未定义,不能软重启”之类的错误提示,所以我就按了主机上的重启扭。结果重启以后没有出现grub。
我应该怎么办?
问题1 在重新运行96-make-boottable脚本之前应该做那些设置?
问题2 96-make-boottable脚本需不需要修改? 由于我把LFS安装在sda4分区上,所以在运行这个脚本之前我已经把脚本中的sda2换成了sda4,把root(hd0,1)换成了root(hd0,3),这样修改到底对不对? (脚本最前面的那个"grub"是不是多余的?)
作者: guo333806 发布时间: 2007-05-20
详细的安装步骤可是查阅LFS的指南。或是man grub
下面举例下吧,比如我打算安装在/dev/sda的主启动扇区下。
可以用:
grub-install /dev/sda
或是:
>grub
grub> root (hd0,0) 《==这个是我们boot分区所在。
grub>setup (hd0) <<===启动主扇区
grub>quit
>reboot
作者: SCys 发布时间: 2007-05-20
这是我的错。我以为这个grub的时候,都能看明白。前天的帖子中没有加中文注解,但在昨天已经加上了,我想楼主可能会到这篇帖子中能够找到答案的。
作者: huohuliaisili 发布时间: 2007-05-20
然后再做GRUB引导的安装。
LiveCD启动。
下面的 /dev/xxx 表示 LFS 的根分区。
mkdir /mnt/lfs && mount /dev/xxx /mnt/lfs
mount -t proc proc /mnt/lfs/proc
mount -o bind /dev /mnt/lfs/dev
chroot /mnt/lfs
grub
# 进入GRUB安装命令模式。
# 下面的 (hdn,m) 表示你的根分区。n和m用数字替换掉,GRUB用数字0表示第一个设备。 (hd0,2)表示第一硬盘第三分区。GRUB中可以使用Tab键补全。
root (hdn,m)
# 将grub引导装载程序安装到第一硬盘的MBR。
setup (hd0)
# 退出grub
quit
作者: huohuliaisili 发布时间: 2007-05-20
我是把LFS安装在sda4分区上,在menu.lst文件中"root=sda4",在安装grub时运行命令是root (hd0,3) ;setup(hd0)命令,问题出在哪呀?(看了一下你的发帖时间,发现你两点还没睡,佩服!!!)
作者: guo333806 发布时间: 2007-05-20
作者: huohuliaisili 发布时间: 2007-05-20
# Begin /boot/grub/menu.lst
# By default boot the first menu entry.
default 0
# Allow 30 seconds before booting the default.
timeout 30
# Use prettier colors.
color green/black light-green/black
# The first entry is for LFS.
title LFS 6.2
root (hd0,3)
kernel /boot/lfskernel-2.6.16.38 root=/dev/sda4
以下内容为94-conf脚本,
########## 7.5. Configuring the setclock Script ##########
cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=0
# End /etc/sysconfig/clock
EOF
########## 7.8. Creating the /etc/inputrc File ##########
# /etc/inputrc File
cat > /etc/inputrc << "EOF"
# Begin /etc/inputrc
# Modified by Chris Lynn <[email protected]>
# Allow the command prompt to wrap to the next line
set horizontal-scroll-mode Off
# Enable 8bit input
set meta-flag On
set input-meta On
# Turns off 8th bit stripping
set convert-meta Off
# Keep the 8th bit for display
set output-meta On
# none, visible or audible
set bell-style none
# All of the following map the escape sequence of the
# value contained inside the 1st argument to the
# readline specific functions
"\eOd": backward-word
"\eOc": forward-word
# for linux console
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[3~": delete-char
"\e[2~": quoted-insert
# for xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for Konsole
"\e[H": beginning-of-line
"\e[F": end-of-line
# End /etc/inputrc
EOF
########## 7.9. The Bash Shell Startup Files ##########
locale -a
LC_ALL=en_GB.iso88591 locale charmap
LC_ALL=en_GB.ISO-8859-1 locale language
LC_ALL=en_GB.ISO-8859-1 locale charmap
LC_ALL=en_GB.ISO-8859-1 locale int_curr_symbol
LC_ALL=en_GB.ISO-8859-1 locale int_prefix
cat > /etc/profile << "EOF"
# Begin /etc/profile
#export LANG=POSIX
export LANG=en_GB.ISO-8859-1
export INPUTRC=/etc/inputrc
# End /etc/profile
EOF
echo "HOSTNAME=LFS6.25" > /etc/sysconfig/network
########## 7.11. Customizing the /etc/hosts File ##########
cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost
192.168.1.2 localhost LFS6.25
#192.168.1.2 HOSTNAME.example.org [alias1] [alias2 ...]
# End /etc/hosts (network card version)
EOF
########## 7.12. Creating custom symlinks to devices ##########
# cd /sys/block/hdd
# udevtest /block/hdd
# cd /sys/block/hdc
# udevtest /block/hdc
cat >/etc/udev/rules.d/82-cdrom.rules << EOF
# Custom CD-ROM symlinks
SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", ENV{ID_PATH}=="pci-0000:00:0f.1-ide-1:0", SYMLINK+="cdrom"
SUBSYSTEM=="block", ENV{ID_TYPE}=="cd", ENV{ID_PATH}=="pci-0000:00:0f.1-ide-1:1", SYMLINK+="cdrom1 dvd"
EOF
########## 7.13. Configuring the network Script ##########
# grep -H . /sys/class/net/*/address
cat > /etc/udev/rules.d/26-network.rules << EOF
ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:11:09:d0:00:6f", NAME="eth0"
ACTION=="add", SUBSYSTEM=="net", SYSFS{address}=="00:00:00:00:00:00", NAME="lo"
EOF
########## 7.13.2 Creating Network Interface Configuration Files ##########
cd /etc/sysconfig/network-devices &&
mkdir -v ifconfig.eth0 &&
cat > ifconfig.eth0/ipv4 << "EOF"
ONBOOT=yes
SERVICE=ipv4-static
IP=10.62.13.25
GATEWAY=10.62.13.254
PREFIX=24
BROADCAST=10.62.13.255
EOF
########## 7.13.3. Creating the /etc/resolv.conf File ##########
cat > /etc/resolv.conf << "EOF"
# Begin /etc/resolv.conf
domain localhost
nameserver 202.114.200.254
#nameserver 218.104.78.2
# End /etc/resolv.conf
EOF
########### 8. Making the LFS System Bootable ##########
cat > /etc/fstab << "EOF"
# Begin /etc/fstab
# file system mount-point type options dump fsck
# order
/dev/sda4 / ext3 defaults 1 1
#/dev/hda3 swap swap pri=1 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
devpts /dev/pts devpts gid=4,mode=620 0 0
shm /dev/shm tmpfs defaults 0 0
# End /etc/fstab
EOF
涉及到系统启动的脚本有哪几个,会不会是前面出了问题?
作者: guo333806 发布时间: 2007-05-20
关于编译内核,看这里:
金国步作品列表 http://lamp.linux.gov.cn/jinbuguo_florilegium.html
# Linux 2.6.19.x 内核编译配置选项简介 http://lamp.linux.gov.cn/Linux/kernel_options.html
还是挂LiveCD进去。
export LFS=/mnt/lfs
mkdir -v $LFS
mount /dev/xxx $LFS
## 挂载虚拟文件系统 ##
mount --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
chroot $LFS
然后重编译内核,加入对文件系统的支持。编译内核后,记得备份一次 .config 文件。 .config 文件是一个隐藏文件,在你完成编译内核后会在内核原码包的目录下产生。把它拷贝到其它地方,或者重命名。
作者: huohuliaisili 发布时间: 2007-05-20
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=m
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_REISERFS_FS_XATTR is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_XFS_FS=m
# CONFIG_XFS_QUOTA is not set
# CONFIG_XFS_SECURITY is not set
# CONFIG_XFS_POSIX_ACL is not set
这样看来,编译内核时已经加入了对ext3文件系统的才持呀,
作者: guo333806 发布时间: 2007-05-20
kernel (hd 按 Tab 键
kernel (hdn, n用一个数字替换掉,如果只有一块硬盘,这里为0 。
kernel (hdn,m)/ 找出你的Linux系统根分区,按Tab键1次或者2次。看看此分区根目录下有什么?有没有 boot 目录?
kernel (hdn,m)/boot/ 还是按Tab键,看有没有一些文件,找出你认为是kernel的那个文件。
kernel (hdn,m)/boot/lfskernel-2.6.16.38 root=/dev/sda4
如果上面的能够找出,把GRUB中显示的分区 (hdn,m) 记下来,看它与实际是否相符?
如果想再尝试是否能启动,在这个地方就可以敲回车了。
然后
boot
引导系统。
如果仍然无法启动系统,把屏幕上的提示抄下来。
作者: huohuliaisili 发布时间: 2007-05-20
using IPI shortcut mode
VFS: cannot open root device "sda4" or unknown-block(0,0)
please append a correct "root=" boot option.
kernel panic -not syncing :VFS : unable to mount root fs on unknow-block(0,0)
感觉像是编译内核时没有加进对硬盘的支持.
作者: guo333806 发布时间: 2007-05-20
作者: guo333806
还是出错,出错信息为:
using IPI shortcut mode VFS: cannot open root device "sda4" or unknown-block(0,0) please append a correct "root=" boot option. kernel panic -not syncing :VFS : unable to mount root fs on unknow-block(0,0) 感觉像是编译内核时没有加进对硬盘的支持. |
这段话应该就说明了编译内核有问题.
作者: huohuliaisili 发布时间: 2007-05-20
作者: guo333806 发布时间: 2007-05-20
作者: guo333806
编译时除了选择对ext3的支持,其余的都默认.应该就可以了吧
|
http://lamp.linux.gov.cn/Linux/kernel_options.html
作者: huohuliaisili 发布时间: 2007-05-20
uncompressing linux ...... ok,
boot the kernel,
BIOS provided physical RAM
502MB LOWMEM avialable
found SMP MP-table at
到这里屏幕就不动了,按键盘什么键也没反应了.
你是怎么配置这么多繁杂的选项的?我已经按照那个帖子把所有必选的选项都选了,结果.......
不知是怎么回事了,估计还是内核的问题.
作者: guo333806 发布时间: 2007-05-21
作者: guo333806
重新编译了一遍内核,按金步国的帖子,把所有必选的选项抄了下来,费了好长时间才把那些选项找到.重启以后,又出现错误,错误与以前不一样,错误提示为:
uncompressing linux ...... ok, boot the kernel, BIOS provided physical RAM 502MB LOWMEM avialable found SMP MP-table at 到这里屏幕就不动了,按键盘什么键也没反应了. 你是怎么配置这么多繁杂的选项的?我已经按照那个帖子把所有必选的选项都选了,结果....... 不知是怎么回事了,估计还是内核的问题. |
作者: huohuliaisili 发布时间: 2007-05-21
作者: guo333806 发布时间: 2007-05-21
作者: guo333806
在linux-2.6.16.38文件夹中,有一个.config.old配置文件,用这个怎么样? 要么把你的.config文件传给我,我实在是没辙了,也不知道是不是前面就已经搞错了,
|
作者: huohuliaisili 发布时间: 2007-05-21
作者: runningman 发布时间: 2007-05-21
作者: guo333806 发布时间: 2007-05-21
作者: guo333806
我实在没办法,就把slackware 的.config配置文件拿来编译内核。结果编译时间比以前长了一倍,但是系统可以成功启动了。终于是搞成功了呀!谢谢huohuliaisili兄!!!谢谢你对我不厌其烦的指导!!!
|
必要时,在你重编译内核造成无法启动系统的时候,可以用拷贝的副本恢复.
作者: huohuliaisili 发布时间: 2007-05-21
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28