现在在 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