Bootstrap

linux dd命令制作u盘启动_linux下给U盘分区并制作文件系统

初探

不同于Ubuntu/Win等桌面发行版本,服务器型(非图形化系统)的linux系统通常不主动挂载U盘,因此当U盘插入后是不会有任何提示的,那我们如何知道U盘是否被系统所识别呢?

那就只能查看系统日志信息了,当有硬件设备被系统识别时,是会在日志中留下痕迹的,两种查看方式:

直接翻看最末尾的日志缓存

104e81b3879b1e131267a7bdb69ee021.png

使用日志命令查看最后输出的信息

f5a38b4cbdc9af066b2cfc4989c216cd.png

可以看到,系统识别出来了Kingston U盘,并识别为文件sda,该文件内只有一个磁盘分区为sda1.

除了查看日志以外,由于插入的是USB设备,还可以使用lsusb/lsblk来查看设备信息,U盘拔插前后,会发现

b2c47925b2a0b804be9358b2c850d284.png

是新增的blk,对应的就是Kingston U盘。

3781d4d6561425031db36c98b713ec58.png

图中的sda只是系统识别到的一个设备文件,但并没有挂载在系统的目录树中,默认不可访问,我们可以使用fdisk来详细的查看sda的文件信息。

b474c52c8641064e21f9617414a0411f.png

采用dos分区表,即MBR,文件系统为fat32,单个分区,最小扇区为512字节。

创建分区

初始化分区表

进行分区的前提是磁盘已经有了分区表,考虑到MBR已经是非常古老的分区表,此处尝试在U盘上使用新的GPT分区表:

283c3201fa73eb8e1ebb892b166c0312.png

在gdisk命令模式下,输入o指令,删除磁盘上的所有分区,并将U盘默认的msdos分区表改为gpt分区表,此时再输入p指令,磁盘中已没有分区信息。

注:图中有行提示信息:

This option deletes all partitions and creates a new protective MBR.

Proceed? (Y/N): Y

有的旧MBR工具无法识别新的GPT分区表,为防止被当作未分区盘,在磁盘前面创建受保护的MBR以跳过MBR工具的误识别。

创建子分区

创建三个子分区,类型分别为 8300 Linux filesystem/0700 Microsoft basic data/8200 Linux swap.

创建第一个分区:

55632a59cc7164dd1d1122ca75cd371c.png

因为磁盘无任何分区,第一次创建,默认为分区1,起始扇区号选择默认,终止扇区选择5G空间的地址扇区,类型默认为linux文件系统。

继续创建第二个分区:

9535de69d87e0a39820693d5dfa80eac.png

此时默认为分区2,起始扇区号选择默认(即分区1后的第一个扇区),终止扇区选择9G空间的地址扇区,类型通过L指令查询后,选择为Windows文件系统。

最后创建第三个分区:

86737e728c1dcd92b6f0312b12f52f71.png

创建完成后,U盘此时的分区表现如下:

2758041ab15dd0013817dd985564eb0b.png

除了形态上为一个U盘,磁盘分区划分是不是很像电脑内置磁盘。

最后,别忘了输入w保存设置。

再使用lsblk查看下我们的磁盘的新划分情况

3eaca0d4022842552ce532f2211a6440.png

此时磁盘的三个分区已经被系统检测到,但是默认依然未挂载,所以第四列的MOUNTPOINT为空。

创建文件系统

写在前面:创建文件系统时,我曾试过在分区1创建vfat文件系统,且依然能够被系统正常识别,因此纳闷:创建分区时需要输入分区类型,而在分区上创建文件系统时,也需要指定文件系统类型,这两者有啥关联影响?

截取一段网友的回复,个人认为解释的比较合理。

bffe13b343aa79c5059200ed1e6c0c65.png

为分区1创建xfs文件系统

d865e74c046ec1bb5d53ea749c042bf4.png

当前使用的raspberry 系统默认不支持创建xfs类型,需先安装xfs工具 sudo apt install xfsprogs

为分区2创建vfat文件系统

9830165c58a718b6c9d9b48272ccf73c.png

为分区3创建swap分区

da7b266b7568225a42da21f4451220e3.png

创建swap分区就得用mkswap命令来创建了。

挂载U盘分区

分区创建好,文件系统创建好,接下来就需要将分区挂载在系统目录上了,这样才能对磁盘进行数据访问。

文件系统挂载

ab28d468742df3f21b778352b3eea822.png

先创建两个空文件夹,然后使用mount命令挂载,最后使用df(device free)命令查看挂载的设备信息详情。

此时我们就可以对分区进行数据读取操作了,在应用层看来,flash/u1 flash/u2只是两个普通文件夹,并不需要关心其背后关联的是U盘的两个分区。

swap分区挂载

ad14d865fd031ba1fc87fd1b244463b9.png

swap分区还是特立独行,使用独有的命令进行操作。

小测试-比较分区数据的传输速率

本测试使用强大的dd命令,大致测试手段为:拷贝一个256MB的文件到分区中,比较两个不同文件系统分区的传输速率。

bfa456655cd18a09b0fe217133a63056.png

初略来看,使用mkfs的默认配置创建的两个分区中,xfs在此kingston U盘上的表现要优于vfat,欢迎评论交流。

;