现在在 Ubuntu 中进行硬盘格式化是很简单的事,
只要使用“磁碟公用程式”就能达到 分割/格式化 的动作。
(Gnome3 Classic:“应用程式”→“附属应用程式”→“磁碟公用程式”
直到几天前我才想尝试着以命令列执行格式化的作业,
原本只想将分割成 3 个槽区的第 1 分割区格式化而已,
但一不小心就把全硬盘中的分割区给删除了… = 0 =|||
首先执行的命令是 lshw,
它能显示电脑中的硬件相关资讯,
以下是我的执行结果:
www.linuxidc.com @linuxidc:~$ 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.linuxidc.com @linuxidc:~$ 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.linuxidc.com @linuxidc:~$ sudo mkfs.ntfs /dev/sdb1 #最后补上位置就能进行格式化 |
但光是如此,
进入 Windows 中使用“我的电脑”也是看不到这个被格式化成 NTFS 的分割区,
如果开启碟碟管理工具只会看到一个没有标籤的装置,
所以回到 Ubuntu 中的终端机用 fdisk -l 参数再查看一下是怎么回事:
www.linuxidc.com @linuxidc:~$ 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.linuxidc.com @linuxidc:~$ 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 |