linux 格式化SD卡

 
2010-11-15 11:05
转载自 http://hi.baidu.com/operationsystem/blog/item/1099db9476d2df5bd0135e29.html
我的手机sd卡需要分成两个分区,在windowxp下面搞不成。
主要的问题是,window只认识sd卡的第一个分区。
有人用修改驱动程序,让windows把sd卡认成日立的microdisk,分区和格式化也可以完成。但是在我的笔记本上,sd读卡器是笔记本自带的,不是接在usb接口上的,这个方法也行不通。

在linux下面给sd卡分区,格式化是非常轻松的。
我安装的系统是ubuntu10.04。
sd卡插上之后,自动mount了。
所以,第一步,umount。
$sudo -i
输入自己的密码取得root权限。
# mount
可以看到最后一行的设备号
/dev/mmcblk0 on /media/60C5-3EC0 type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,flush)
umount这个sd卡
# umount /dev/mmcblk0
下面上场的是fdisk工具。
# fdisk /dev/mmcblk0
fdisk命令都是非常简单的。
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').

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)
先P,看看sd卡的分区现状。
然后d,删除原分区
n,创建分区

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-62528, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-62528, default 62528):  +1500M

t,指定分区类型,
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0  Empty           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 Boot   85  Linux extended  c7  Syrinx        
5  Extended        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
Hex code (type L to list codes): 6
Changed system type of partition 1 to 6 (FAT16)

这样就分好了第一个分区,并且指定了分区为fat16。
第二个,我试做分区为linux分区

Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (48002-62528, default 48002):
Using default value 48002
Last cylinder, +cylinders or +size{K,M,G} (48002-62528, default 62528):
Using default value 62528

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 83

好了,看看成果。

Command (m for help): p

Disk /dev/mmcblk0: 2048 MB, 2048917504 bytes
4 heads, 16 sectors/track, 62528 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6f20736b

Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1               1       48001     1536024    6  FAT16
/dev/mmcblk0p2           48002       62528      464864   83  Linux

好了,把分区信息写入磁盘。

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.

下面开始格式化。
首先是fat16分区
#mkdosfs  /dev/mmcblk0p1
然后是linux分区
#mkfs.ext3 /dev/mmcblk0p2

完成之后,取出sd卡,再安装上去,linux系统已经自动识别了两个分区,可以用了。
放到手机里面去吧。

你可能感兴趣的:(linux驱动开发)