2012年3月16日 星期五

Ubuntu 格式化硬碟

現在在 Ubuntu 中進行硬碟格式化是很簡單的事,
只要使用「磁碟公用程式」就能達到 分割/格式化 的動作。
(Gnome3 Classic:「應用程式」→「附屬應用程式」→「磁碟公用程式」)



直到幾天前我才想嚐試著以命令列執行格式化的作業,
原本只想將分割成 3 個槽區的第 1 分割區格式化而已,
但一不小心就把全硬碟中的分割區給刪除了… = 0 =|||

首先執行的命令是 lshw,
它能顯示電腦中的硬體相關資訊,
以下是我的執行結果:
lancer@lancer-desktop:~$ 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):
lancer@lancer-desktop:~$ 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 
lancer@lancer-desktop:~$ sudo mkfs.ntfs /dev/sdb1 
#最後補上位置就能進行格式化
接著得等上好一段時間讓它完成作業。

但光是如此,
進入 Windows 中使用「我的電腦」也是看不到這個被格式化成 NTFS 的分割區,
如果開啟碟碟管理工具只會看到一個沒有標籤的裝置,
所以回到 Ubuntu 中的終端機用 fdisk -l 參數再查看一下是怎麼回事:
lancer@lancer-desktop:~$ 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」了。
lancer@lancer-desktop:~$ 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

沒有留言:

張貼留言