LFS 11.2(Linux From Scratch)构建过程全记录(二):磁盘分区
写在前面
本文将会详细记录LFS中,构建分区,构建文件系统和挂载分区的全过程
准备新硬盘
为了更加符合“从零开始构建Linux”的要求,我在虚拟机中,新建了一个磁盘
注意:原先的20GB的磁盘中,需要有一个已经安装好的Linux操作系统
创建方法:编辑虚拟机设置——硬件,添加——硬盘——SCSI(S)——创建新虚拟磁盘——最大磁盘大小40GB,将虚拟磁盘拆分成多个文件——磁盘文件命名随意——完成
虚拟机设置如下图所示:
注意:新创建的磁盘,在“高级”中可以设置虚拟设备节点,虚拟设置节点请采用默认,即$SCSI 0:1$对应新磁盘,$SCSI 0:0$对应磁盘。
警告:原Ubuntu所安装的磁盘,务必挂载为第一块磁盘,因为其它磁盘内没有引导,不挂载为第一块磁盘将导致无法开机。
我们将会在这个新磁盘上构建所需的分区和文件系统,并对其进行挂载
创建新磁盘后,我们启动虚拟机,输入sudo fdisk -l,查看当前虚拟机磁盘的情况
如上所示,有sda和sdb两个硬盘,其中SCSI 0:0被识别为了sda,SCSI 0:1被识别为了sdb
其中sda所挂载的是当前系统,分了三个区,分别是Linux,Extended和Swap
sdb为我们刚创建的新硬盘,尚未进行分区
分区
根据书中的要求,我们要对即将构造lfs的磁盘sdb进行分区。
我们将其分成三个分区,分别为boot,swap,root。其中:
boot分区用于进行系统引导,且是sdb的第一个分区,分区大小为256MB。设置为第一个分区的原因是:用于系统引导的分区一定要是第一块磁盘的第一个分区。
(有同学可能会问:sdb现在并不是第一个分区,在第11章,你将会看到我如何将sda和sdb互换)
swap分区用于进行内存交换,分区大小为2G。该分区将用于进行内存交换(当运行内存不足时将会发生交换)
root分区为主分区,整个LFS系统将会构造在其中
构建boot分区的过程如下,注意,我输入的内容均在冒号的后面
比如Command (m for help): p中的p
我们可以看到/dev/sdb1已经出现
我们可以通过同样的方法,构造出/dev/sdb2用于swap分区,构造、dev/sdb3用于root分区
完成分区后的磁盘状态如图所示:
在完成上述设置后,记得输入w并回车,以保存对磁盘分区的修改
修改完成后将出现以下提示:
Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
在分区上创建文件系统
我们可以依次输入下列指令,实现文件系统的创建
我们需要将boot分区(/dev/sdb1)和root分区(/dev/sdb3/)设置为ext4文件系统
对于swap分区(/dev/sdb2),我们需要将其设置为交换目录,命令如下
mkfs -v -t ext4 /dev/sdb1 mkfs -v -T small -t ext4 /dev/sdb3 mkswap /dev/sdb2
创建完成后,我们可以先输入parted /dev/sdb ,再输入print list查看分区文件系统类型
此时我们可以在Files中,看到两个刚创建的磁盘(对应root分区和boot分区)
设置$LFS环境变量
在接下来的配置中,为了方便设置,我们将多次使用LFS变量
设置LFS的代码如下:
export LFS=/mnt/lfs
我们可以使用echo $LFS进行确认
经确认,环境变量已正确设置
警告:整个创建过程中务必确保LFS变量有效,在切换用户时(如从alphainf切换到root,tester,chroot,lfs)时务必确保LFS有效
挂载分区
警告:务必确保挂载正确,否则你将喜提重做(笔者就重做了一次才成功)
我们创建文件夹/mnt/lfs,并将root分区(/dev/sdb3)挂载到/mnt/lfs中,代码如下:
mkdir -pv $LFS mount -v -t ext4 /dev/sdb3 $LFS
我们创建文件夹$LFS/boot,并将boot分区(/dev/sdb1)挂载到$LFS/boot下,代码如下:
mkdir -v $LFS/boot mount -v -t ext4 /dev/sdb1 $LFS/boot
我们可以输入df -h查看挂载的情况,可以看到/dev/sdb1和/dev/sdb3已经完成挂载
我们用下面这条指令挂载swap分区
/sbin/swapon -v /dev/sdb2
至此,第二章已经完成