unix-device
当我们把一块存储磁盘 (ssd hdd usb)插入电脑 如何对其进行管理 其所涉及到的概念有那些
fdisk
fdisk -l 显示出来的东西叫做 disk partition(磁盘分区) 简单的感觉就是磁盘(ssd hhd usb) 挂载上去之后还可以继续对齐进行拆分 其子元素就是disk partition
loopxx disk partition 是什么
snap会创建loop 用来管理软件 loop 类似于在现有的filesystem上创造出来的东西一种隔离的感觉
如何过滤掉loop disk partition
在fdisk中可能无法过滤 但是如果只是单纯看挂载磁盘的话可以用lsblk
lsblk -o name,mountpoint,label,size,fstype,uuid | egrep -v "^loop"
如何查看某个文件挂载在哪个分区上
df
如何重命名某个分区的label
如何格式化某个磁盘
fdisk /dev/parttion-name
列出所有mount地址
将某个分区映射到某个文件
如何取消某个分区到到某个文件的映射
umount
修复ntfs
sudo ntfsfix xxx
现在我们登录到unix操作系统上如何知道那块盘是引导盘?
通过lsblk我们可以知道有几块磁盘但是如何能知道那块盘是引导盘? 几个问题
- 如何确定一个磁盘是可引导的 读这个磁盘的最开始的512byte(0.5kb)
- 假设有多个bootable device 如何知道哪一个是我们在用的
- 假设有多个bootable device 如何知道下次重启时用的是哪个盘 bios 中设置
主引导扇区 引导扇区
bootloader过程是怎么样的
首先是bios要确定bios的类型
读取MBR
sudo dd if=/dev/sdd1 bs=1b count=1| od -t x1 -c
am i mbr or gpt?
sudo apt-get install gdisk
sudo gdisk -l /dev/sde
MBR
是计算机开机后访问硬盘时所必须要读取的首个扇区,它在硬盘上的三维地址为(柱面,磁头,扇区)=(0,0,1)
开头的446字节内容特指为“主引导记录”(MBR),其后是4个16字节的“磁盘分区表”(DPT),以及2字节的结束标志(55AA)
扩展分区中逻辑驱动器的引导记录是链式的。每一个逻辑分区都有一个和MBR结构类似的扩展引导记录(EBR),其分区表的第一项指向该逻辑分区本身的引导扇区,第二项指向下一个逻辑驱动器的EBR,分区表第三、第四项没有用到。
DPT
硬盘分区表占据主引导扇区的64个字节(偏移01BEH--偏移01FDH),可以对四个分区的信息进行描述,其中每个分区的信息占据16个字节。具体每个字节的定义可以参见硬盘分区结构信息。下面是一个例子: 如果某一分区在硬盘分区表的信息如下 80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 则我们可以看到,最前面的"80"是一个分区的激活标志,表示系统可引导[1];"01 01 00"表示分区开始的磁头号为1,开始的扇区号为1,开始的柱面号为0;"0B"表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);"FE BF FC"表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;"3F 00 00 00"表示首扇区的相对扇区号为63(小端序);"7E 86 BB 00"表示总扇区数为12289662(小端序)。 对于大于8.4G的现代硬盘,CHS已经无法表示, BIOS使用LBA模式,对于超出的部分,CHS值通常设为0xFEFFFF,并加以忽略,直接使用Offset 0x08-0x0c的4字节相对值,再进行内部转换。
偏移 长度(字节) 意义
00H 1 分区状态:00-->非活动分区;80-->活动分区;
其它数值没有意义
01H 1 分区起始磁头号(HEAD),用到全部8位
02H 2 分区起始扇区号(SECTOR),占据02H的位0-5;该分区的起始磁柱号(CYLINDER),占据02H的位6-7和03H的全部8位
04H 1 文件系统标志位
05H 1 分区结束磁头号(HEAD),用到全部8位
06H 2 分区结束扇区号(SECTOR),占据06H的位0-5;该分区的结束磁柱号(CYLINDER),占据
06H的位6-7和07H的全部8位
08H 4 分区起始相对扇区号
0CH 4 分区总的扇区数