红联Linux门户
Linux帮助

Ubuntu格式化硬盘

发布时间:2014-11-02 21:47:29来源:linux网站作者:Zhang Zhung-Hao

现在在 Ubuntu 中进行硬盘格式化是很简单的事,只要使用“磁碟公用程式”就能达到 分割/格式化 的动作。
(Gnome3 Classic:“应用程式”→“附属应用程式”→“磁碟公用程式”

直到几天前我才想尝试着以命令列执行格式化的作业,原本只想将分割成 3 个槽区的第 1 分割区格式化而已,但一不小心就把全硬盘中的分割区给删除了… = 0 =|||


首先执行的命令是 lshw,它能显示电脑中的硬件相关资讯,以下是我的执行结果:
www @linux:~$ sudo lshw -C disk
*-disk                 
description: ATA Disk
product: ST9500420AS
vendor: Seagate
physical id: 0
bus info: scsi@0:0.0.0
logical name: /dev/sda
version: 0003
serial: 5VJ6L9ZE
size: 465GiB (500GB)
capabilities: partitioned partitioned:dos
configuration: ansiversion=5 signature=e1882325
*-cdrom
description: DVD-RAM writer
product: DVDRAM GT32N
vendor: HL-DT-ST
physical id: 1
bus info: scsi@1:0.0.0
logical name: /dev/cdrom
logical name: /dev/cdrw
logical name: /dev/dvd
logical name: /dev/dvdrw
logical name: /dev/scd0
logical name: /dev/sr0
version: AS01
capabilities: removable audio cd-r cd-rw dvd dvd-r dvd-ram
configuration: ansiversion=5 status=nodisc
*-disk:0
description: SCSI Disk
physical id: 0.0.0
bus info: scsi@6:0.0.0
logical name: /dev/sdb
size: 149GiB (160GB)
capabilities: partitioned partitioned:dos
configuration: signature=789c84b0


接着执行 fdisk 指令,该指令主要是用来做分割之用,但分割之前可以先加上 -l 的参数来看一下到底原始的分割配置是什么:
sudo fdisk -l
或是指定装置位置:
sudo fdisk -l /dev/sdb

Command (m for help): p

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x789c84b0

所用装置 Boot      Start           End      Blocks        Id    System
/dev/sdb1                       1       15665   125829081    83    Linux
/dev/sdb2               15666       19457    30459240     83    Linux


这次想做的分割是外接式硬盘,所以执行 fdisk 指定外接式硬盘的位置:
sudo fdisk /dev/sdb

这个时候会进入 fdisk 的命令模式,如果有需要说明的可以按下 m 或输入 help 显示:
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)


这里我只有用到 d、n、p、t、w 几项而已…
删除分割区:d
列出已知分区型态:l
建立新的分割区:n
显示分割区列表:p
(很重要,得先看过列表再做删除等动作,不然操作者会有凄惨的叫声…)

Command (m for help): p

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x789c84b0

所用装置 Boot      Start           End      Blocks        Id    System
/dev/sdb1                       1       15665   125829081    83    Linux
/dev/sdb2               15666       19457    30459240     83    Linux

最后确定了并做写入动作则输入:w
不做写入并退出请输入:q


光有分割区还不够,接着得进行格式化的作业,利用 mkfs. 的指令可以对磁区进行多种格式化的功能(如格式化成 NTFS):
www @linux:~$ sudo mkfs.  #按一下 tab 键自动调出能格式化的格式
mkfs.bfs          mkfs.ext3         mkfs.minix      mkfs.reiserfs
mkfs.cramfs    mkfs.ext4         mkfs.msdos     mkfs.vfat   
mkfs.ext2        mkfs.ext4dev   mkfs.ntfs
www @linux:~$ sudo mkfs.ntfs /dev/sdb1 
#最后补上位置就能进行格式化
接着得等上好一段时间让它完成作业。


但光是如此,进入 Windows 中使用“我的电脑”也是看不到这个被格式化成 NTFS 的分割区,如果开启碟碟管理工具只会看到一个没有标籤的装置,所以回到 Ubuntu 中的终端机用 fdisk -l 参数再查看一下是怎么回事:
www @linux:~$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x789c84b0

所用装置 Boot      Start           End          Blocks      Id     System
/dev/sdb1                       1       15665   125829081      87    Linux
/dev/sdb2               15666       19457    30459240       83    Linux


结果发现在“System”这一栏是写着“Linux”,所以我在 Windows 的环境下“看得到却用不了”这 2 个分割区,要改变这种状况就得再使用 fdisk 修改分割区表的内容;
首先是下 l 看看 fdisk 支援的分区型态有哪些,并找到属于 NTFS 的“87”代号:
Command (m for help): l

0  空                                 24  NEC DOS                  81  Minix / old Lin      bf  Solaris     
1  FAT12                          39  Plan 9                        82  Linux swap / So     c1  DRDOS/sec (FAT-
2  XENIX root                  3c  PartitionMagic         83  Linux                      c4  DRDOS/sec (FAT-
3  XENIX usr                   40  Venix 80286             84  OS/2 hidden C:       c6  DRDOS/sec (FAT-
4  FAT16 <32M           41  PPC PReP 开机        85  Linux extended      c7  Syrinx       
5  延伸的                          42  SFS                           86  NTFS volume set   da  Non-FS data 
6  FAT16                           4d  QNX4.x                    87  NTFS volume set   db  CP/M / CTOS / .
7  HPFS/NTFS                  4e  QNX4.x 2nd part      88  Linux plaintext       de  Dell Utility 
8  AIX                               4f  QNX4.x 3rd part       8e  Linux LVM             df  BootIt       
9  AIX bootable                50  OnTrack DM            93  Amoeba                   e1  DOS access   
a  OS/2 Boot Manag         51  OnTrack DM6 Aux  94  Amoeba BBT          e3  DOS R/O     
b  W95 FAT32                  52  CP/M                        9f  BSD/OS                   e4  SpeedStor   
c  W95 FAT32 (LBA)      53  OnTrack DM6 Aux   a0  IBM Thinkpad hi   eb  BeOS fs     
e  W95 FAT16 (LBA)      54  OnTrackDM6            a5  FreeBSD               ee  GPT         
f  W95 Ext'd (LBA)          55  EZ-Drive                  a6  OpenBSD              ef  EFI (FAT-12/16/
10  OPUS                           56  Golden Bow              a7  NeXTSTEP          f0  Linux/PA-RISC b
11  Hidden FAT12             5c  Priam Edisk              a8  Darwin UFS         f1  SpeedStor   
12  Compaq diagnost         61  SpeedStor                 a9  NetBSD                f4  SpeedStor   
14  Hidden FAT16 <3   63  GNU HURD or Sys   ab  Darwin boot         f2  DOS secondary
16  Hidden FAT16             64  Novell Netware         af  HFS / HFS+          fb  VMware VMFS 
17  Hidden HPFS/NTF      65  Novell Netware         b7  BSDI fs                fc  VMware VMKCORE
18  AST SmartSleep          70  DiskSecure Mult       b8  BSDI swap           fd  Linux raid auto
1b  Hidden W95 FAT3      75  PC/IX                        bb  Boot Wizard hid   fe  LANstep     
1c  Hidden W95 FAT3       80  Old Minix                  be  Solaris boot          ff  BBT         
1e  Hidden W95 FAT1


以参数 t 作修改:
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 87
Changed system type of partition 1 to 87 (NTFS volume set)

最后下达写入分割表的参数后,会告知分割表已被改变,等下次重开机就能重新同步此硬盘了。
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 装置或系统资源忙碌中.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.


等重新开机后(或直接观察)下达 fdisk -l 就会看到原本于 System 栏位的 Linux 已被变更成“NTFS volume set”了。
www @linux:~$ sudo fdisk -l /dev/sdb

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x789c84b0

所用装置 Boot      Start           End          Blocks      Id     System
/dev/sdb1                       1       15665   125829081      87    NTFS volume set
/dev/sdb2               15666       19457    30459240       83    Linux