参考资料: LFS-BOOK-6.3
准备资源:lfslivecd-86-6.3-r2160.iso
注 : 若引用本文为参考,请先阅读完整的文章,而不要跟进代码执行,运行环境不同,执行方式也不同。且本文是一个整个边学习边构建的过程,出错在所难免,很可能前面执行了一长段错误代码,之后的两句才是正确的。
本文仅作为LFS制作过程的日志。
chapter 1 : 总介绍
chapter 2: 创建分区和文件系统
chapter 3 : 需要的包和更新
chapter 4 : 创建合适的工作环境
chapter 5 : 介绍在第六章所需要的开发工具链
chapter 6 : 构建完整的LFS系统
chapter 7 : 创建LFS的启动脚本
chapter 8 : 构建内核
chapter 9 : 构建bootloarder
Chapter 1 :
FAQ链接 : http:// www. linuxfromscratch.org/ faq/.
Chapter2 :
创建分区 : fdisk或者cfdisk
采用fdisk指令操作
# fdisk /dev/sda
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): p
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1230 9775552+ 83 Linux LVM
因为在虚拟机上,所以操作就随意一点了…、
-----------------我是分割线------------------------------------------------
Command (m for help): d
Partition number (1-4): 2 //删除/dev/sda2
-----------------我是分割线------------------------------------------------
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (14-3916, default 14):
Using default value 14
Last cylinder or +size or +sizeM or +sizeK (14-3916, default 3916):
Using default value 3916
Command (m for help): p
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 3916 31350847+ 5 Extended
创建一个拓展分区,包含剩余的全部空间
---------------我是分割线-------------------------------------------
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (14-3916, default 14):
Using default value 14
Last cylinder or +size or +sizeM or +sizeK (14-3916, default 3916): +22000M
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (2690-3916, default 2690):
Using default value 2690
Last cylinder or +size or +sizeM or +sizeK (2690-3916, default 3916):
Using default value 3916
Command (m for help): p
http://write.blog.csdn.net/postedit/8117166
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 3916 31350847+ 5 Extended
/dev/sda5 14 2689 21494938+ 83 Linux
/dev/sda6 2690 3916 9855846 83 Linux
在拓展分区中,创建两个逻辑分区:20+GB和10GB,10GB作为要用来构建LFS的分区。
此处……未考虑若将原来的分区转换为两个小的逻辑分区是否对硬盘文件的损坏……!!请勿轻易尝试。
Command (m for help): p
Command (m for help): w
.....
# reboot
呵呵、果然悲剧了…、
嗯……还好、是虚拟机……
换个方式来、之前创建的这个虚拟机是直接分配了30GB的硬盘,想到之间用ubuntu那边的虚拟机的时候使用动态创建,会多出一个待挂载使用的盘。
所以重新创建一个动态分配大小,总25GB的RetHat虚拟机,一会再次尝试fdisk直接分配而不删除,若能够创建出新的空间,则继续往下。若不能…、好吧、尝试在宿主机RH上直接搭建LFS~。~!
额、它直接分配给/dev/sda2 剩余的全部空间了、将其分区,再次出现相同的无法开机状况…。
……
最新的尝试方法 :
创建好虚拟机后,先关闭虚拟机。
在设置处应能找到存储设备,通过在存储设备给其添加一个新的硬盘。
进入虚拟机。
# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1305 10377990 8e Linux LVM
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
已经发现一个没有分区的硬盘,接下来开始分区。
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044):
Using default value 1044
Command (m for help): p
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
将其所有空间做成主分区
# mkdir /home/linx/LFS //创建挂载目录
# mkfs.ext3 /dev/sdb1 //制作文件系统,格式ext3
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096474 blocks
104823 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 22 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mount -t ext3 /dev/sdb1 /home/linx/LFS/ //挂载分区到LFS目录
-----------------我是分割线-------------------------------------------------------
# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7998912 3055648 4530388 41% /
/dev/sda1 101086 12089 83778 13% /boot
tmpfs 517552 0 517552 0% /dev/shm
/dev/sdb1 8254240 149628 7685320 2% /home/linx/LFS
挂载成功了,同时也看出之前将/dev/sda2(即这里的/dev/mapper/VolGroup00-LogVol00)删除并制作成一个拓展分区+两个逻辑分区错误的端疑。
可能的错误原因有二:
1、 分区后文件损坏
2、 分区后没有创建文件系统并挂载
有空再进行深一步的探究。
------------------我是分割线--------------------------------------------------------
# vi /etc/fstab 设置开机自动挂载 /dev/sdb
添加一行
/etc/sdb /home/linx/LFS(挂载目录) ext3(文件格式) defaults 1 2(后面的数字表示开机是否检查)
# reboot 看下成果
# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1305 10377990 8e Linux LVM
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 83 Linux
# df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
7998912 3072624 4513412 41% /
/dev/sda1 101086 12089 83778 13% /boot
tmpfs 517552 0 517552 0% /dev/shm
/dev/sdb1 8254240 149628 7685320 2% /home/linx/LFS
终于ok了。
-----------------我是分割线-------------------------------------------
制作LFS的第一步就算完成了。
经过了解知道,这只是其中一种方法来创建新的硬盘空间,以上这种是基于操作系统下的。
而接下来,描述直接使用镜像光盘来制作LFS。
想通过两种途径,双线来制作LFS。
-----------------我是分割线-------------------------------------------
我使用的是virtualbox虚拟工具
创建的时候直接选择linux系统
而下面的版本选择other linux。
创建好后直接摘入我已经下载好的lfslivecd-x86-6.3-r2160.iso文件。
now begin:
选择语言地区等信息……
进入系统
呵呵、不能拷贝了、那只打指令上来好了
# fdisk -l
有一个硬盘没有分区/dev/hda
#fdisk /dev/hda
然后和上面方法一样创建一个主分区就好。
很容易就创建好了。
Note :
有些系统使用的是定制特性的文件系统创建工具E2fsprogs,这可能使得LFS-install