LFS(Linux From Scratch)构建过程全记录(二):磁盘分区

2022-10-25,,,,

写在前面

本文将会详细记录LFS中,构建分区,构建文件系统和挂载分区的全过程

准备新硬盘

为了更加符合“从零开始构建Linux”的要求,我在虚拟机中,新建了一个磁盘

我们将会在这个新磁盘上构建所需的分区和文件系统,并对其进行挂载

创建新磁盘后,我们启动虚拟机,输入sudo fdisk -l,查看当前虚拟机磁盘的情况

复制出来的信息如下所示:

 1 alphainf@ubuntu:~$ sudo fdisk -l
2 [sudo] password for alphainf:
3 Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
4 Units: sectors of 1 * 512 = 512 bytes
5 Sector size (logical/physical): 512 bytes / 512 bytes
6 I/O size (minimum/optimal): 512 bytes / 512 bytes
7 Disklabel type: dos
8 Disk identifier: 0x57e14c18
9
10 Device Boot Start End Sectors Size Id Type
11 /dev/sda1 * 2048 39942143 39940096 19G 83 Linux
12 /dev/sda2 39944190 41940991 1996802 975M 5 Extended
13 /dev/sda5 39944192 41940991 1996800 975M 82 Linux swap / Solaris
14
15
16 Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
17 Units: sectors of 1 * 512 = 512 bytes
18 Sector size (logical/physical): 512 bytes / 512 bytes
19 I/O size (minimum/optimal): 512 bytes / 512 bytes

如上所示,有sda和sdb两个硬盘

其中sda所挂载的是当前系统,分了三个区,分别是Linux,Extended和Swap

sdb为我们刚创建的新硬盘,尚未进行分区

分区

根据书中的要求,我们至少需要完成三个分区的构造

分别为boot,根分区,交换分区

由于磁盘空间足够,boot和根分区我们都将分配20G,交换分区分配8G

构建boot分区的过程如下,注意,我输入的内容均在冒号的后面

比如Command (m for help): p中的p

alphainf@ubuntu:~$ sudo fdisk /dev/sdb

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xd868f5e0. Command (m for help): p
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd868f5e0 Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-134217727, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-134217727, default 134217727): +20G Created a new partition 1 of type 'Linux' and of size 20 GiB. Command (m for help): p
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd868f5e0 Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 41945087 41943040 20G 83 Linux

我们可以看到/dev/sdb1已经出现

我们可以通过同样的方法,构造出/dev/sdb2,也是20GB,/sdb2将作为根分区

接下来,我们构建/dev/sdb3,并将该分区的类型调整为交换分区

Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3):
First sector (83888128-134217727, default 83888128):
Last sector, +sectors or +size{K,M,G,T,P} (83888128-134217727, default 134217727): +8G Created a new partition 3 of type 'Linux' and of size 8 GiB. Command (m for help): t #注意这里,用于调整分区类型
Partition number (1-3, default 3):
Partition type (type L to list all types): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris'. Command (m for help): p
Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd868f5e0 Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 41945087 41943040 20G 83 Linux
/dev/sdb2 41945088 83888127 41943040 20G 83 Linux
/dev/sdb3 83888128 100665343 16777216 8G 82 Linux swap / Solaris

我们可以通过以下指令实现

在完成上述设置后,记得输入w并回车,以保存对磁盘分区的修改

修改完成后将出山以下提示:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

我们最后再输入sudo fdisk -l 确认分区情况

alphainf@ubuntu:~$ sudo fdisk -l
[sudo] password for alphainf:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x57e14c18 Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 39942143 39940096 19G 83 Linux
/dev/sda2 39944190 41940991 1996802 975M 5 Extended
/dev/sda5 39944192 41940991 1996800 975M 82 Linux swap / Solaris Disk /dev/sdb: 64 GiB, 68719476736 bytes, 134217728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd868f5e0 Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 41945087 41943040 20G 83 Linux
/dev/sdb2 41945088 83888127 41943040 20G 83 Linux
/dev/sdb3 83888128 100665343 16777216 8G 82 Linux swap / Solaris

我们发现,sdb出现了分区,这是我们期望的状态

在分区上创建文件系统

我们可以依次输入下列指令,实现文件系统的创建

sudo mkfs -v -t ext4 /dev/sdb1
sudo mkfs -v -t ext4 /dev/sdb2
sudo mkswap /dev/sdb3

以下是输入指令后的输出信息(以根目录的创建和交换分区创建的输出为例)

我们还可以打开文件夹,看到这两个刚生成的磁盘

创建完成后,我们可以先输入sudo parted /dev/sdb ,再输入print list查看分区文件系统类型

设置$LFS环境变量

在接下来的配置中,为了方便设置,我们将多次使用LFS变量

设置LFS的代码如下:

export LFS=/mnt/lfs

我们可以使用echo $LFS进行确认

经确认,环境变量已正确设置

挂载分区

将分区/dev/sdb2挂载到/mnt/lfs中,代码如下:

sudo mkdir -pv $LFS
sudo mount -v -t ext4 /dev/sdb2 $LFS

设置交换分区代码如下

sudo /sbin/swapon -v /dev/sdb3

以上构建LFS分区的准备工作已完成

记得进行快照的保存,命名为STEP 2,并进行备注

LFS(Linux From Scratch)构建过程全记录(二):磁盘分区的相关教程结束。

《LFS(Linux From Scratch)构建过程全记录(二):磁盘分区.doc》

下载本文的Word格式文档,以方便收藏与打印。