Linux下格式化sd卡和重新分区

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mint_ying/article/details/51784969

Linux下格式化sd卡和重新分区

写这篇文章的最初是因为手边有张sd卡被人分了区。结果在windows上8G的卡只能认出512M。为了把“被吞掉”的部分找回来,我们就要使用linux下强大的分区工具fdisk。

在进行下述操作前,先获取root权限再操作会比较方便。之后的命令就可不输入sudo了。

sudo -i

  
  
  • 1

准备工作


把你的sd卡插入linux系统。你就会看到原本在windows下只能看到1个512M的空间,
而在linux下你就能看到那个第2分区了。

查看挂载点

df -h

  
  
  • 1

你会看到下述信息,告诉你设备名称挂载点
可能你的设备名称为mmcxxxp1或者mmcxxxp2的。
请注意,他们是一家。。。

Filesystem    size   Used Avail Use% Mounted on
...(其他fs)
/dev/sdb1     512M   4K   512M    1% /media/LABLE1
/dev/sdb2     6.8G   4K   6.8G    1% /media/LABLE2

  
  
  • 1
  • 2
  • 3
  • 4

卸载SD卡

sudo umount /dev/sdb1 /dev/sdb2

  
  
  • 1

Fdisk


接下来就是强大的liunx工具fdisk出场了。

sudo fdisk /dev/sdb

  
  
  • 1

输入m会出现命令类表,简洁而强大

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)

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

输入p查看当前sd卡的分区(partition)信息

Command (m for help): p

Disk /dev/sdb: 7948 MB, 7948206080 bytes
245 heads, 62 sectors/track, 1021 cylinders, total 15523840 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     1048576      523264+   c  W95 FAT32 (LBA)
/dev/sdb2         1048577    15523839     7237631+  83  Linux

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中,需要记住的是他的容量7948206080 bytes之后会用到。
同时也留意他的heads和setcors/track

删除分区


输入d删除(delete)所有sd卡分区。因为有2个分区,需要删除2次

Command (m for help): d
Partition number (1-4): 1

Command (m for help): d
Selected partition 2

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

建立扇区


如果SD卡不是255 heads, 63 sectors/track,按照以下步骤建立扇区

输入x进入扩展命令列表

Command (m for help): x

Expert command (m for help): 

  
  
  • 1
  • 2
  • 3

输入n显示扩展命令列表

Command action
   b   move beginning of data in a partition
   c   change number of cylinders
   d   print the raw data in the partition table
   e   list extended partitions
   f   fix partition order
   g   create an IRIX (SGI) partition table
   h   change number of heads
   i   change the disk identifier
   m   print this menu
   p   print the partition table
   q   quit without saving changes
   r   return to main menu
   s   change number of sectors/track
   v   verify the partition table
   w   write table to disk and exit

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

输入h设置heads = 255

Expert command (m for help): h
Number of heads (1-256, default 245): 255

  
  
  • 1
  • 2

输入s设置sectors/track = 63

Expert command (m for help): s
Number of sectors (1-63, default 62): 63

  
  
  • 1
  • 2

输入c设置cylinder = 966

Expert command (m for help): c
Number of cylinders (1-1048576, default 1021): 966

  
  
  • 1
  • 2

cylinder计算方法

cylinder = SD卡容量(bytes) / heads / sectors / 512(bytes)
cylinder = 7948206080 / 255 /63 / 512 = 966.3 = 966 

  
  
  • 1
  • 2

输入r返回(return)普通命令

Expert command (m for help): r

Command (m for help):

  
  
  • 1
  • 2
  • 3

输入p再次查看当前sd卡的分区信息。
此时你会看到heads, sectors/track, cylinder都已经更新了

Command (m for help): p

Disk /dev/sdb: 7948 MB, 7948206080 bytes
255 heads, 63 sectors/track, 966 cylinders, total 15523840 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
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

建立分区


输入n新建(new)一个分区

输入p选择新建一个主分区

输入1创建分区1

输入分区1的‘First sector’和‘Last sector’

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-15523839, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-15523839, default 15523839): 
Using default value 15523839

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

输入t改变分区系统ID,
一般windows的用,则输入分区类型码cFAT32,
而linux的为默认的分区类型码83EXT3

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))

  
  
  • 1
  • 2
  • 3
  • 4

输入a激活分区的bootable标志

Command (m for help): a
Partition number (1-4): 1

  
  
  • 1
  • 2

输入w将建立完成对分区表写入sd卡,并退出

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

格式化分区


windows的分区格式化命令(其中LABEL为卷标)

sudo mkfs.msdos -F32 /dev/sdb1 -n LABEl1

  
  
  • 1

linux的分区格式化命令

sudo mkfs.ext3 /dev/sdb2 -L LABEL2

  
  
  • 1

完成


需要注意的是,有时需要在Windows再次格式化第一个引导分区LABEL1才能成功引导Linux。(不要使用快速格式化)

参考资料


http://blog.sina.com.cn/s/blog_68e596750100jx9m.html


树莓派-找回丢失的空间

原本的文章到上面就结束了,这只是个“课外阅读”的简单实践章节而不单独另开一篇。
通过使用上述的fdisk的功能来找回安装完树莓派后部分磁盘空间无法使用的问题。
fdisk细节问题请见上文,下面就直接列出步骤了:

背景: 将树莓派安装到了一张8G的TF卡上。装完df -h后发现只有一半的磁盘空间。

找回方法:

进入fdisk

sudo fdisk /dev/sdb

  
  
  • 1

输入p查看当前sd卡的分区(partition)信息。

会发现有2个分区。
一个是boot的windows下可认的FAT32的分区。
另一个是root的linux的分区。但只有3.xG

  
  
  • 1
  • 2
  • 3

输入d删除(delete)第二个分区。

Command (m for help): d
Partition number (1-4): 2

  
  
  • 1
  • 2

输入n新建(new)一个分区

输入p选择新建一个主分区

输入1创建分区1

输入分区1的‘First sector’和‘Last sector’

此时使用默认的开始和结束的sector值即可。你也可以看到默认就是帮你扩展到最大。

  
  
  • 1

输入w将建立完成对分区表写入sd卡,并退出

此时会提醒你无法当场写入,需要你reboot

  
  
  • 1

terminal输入sudo reboot重启系统

sudo reboot

  
  
  • 1

待重启完成后,resize修复分区。其中p2即指partition 2

sudo resize2fs /dev/mmcblk0p2

  
  
  • 1

完成后,重新查看磁盘信息

df -h

  
  
  • 1

至此,“丢失”的磁盘空间已经找回来了。:)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mint_ying/article/details/51784969

Linux下格式化sd卡和重新分区

猜你喜欢

转载自blog.csdn.net/Qinus/article/details/84439723