Android 格式化分区命令

mkfs.vfat  /dev/block/mmcblk0pxxxx           格式化某分区为vfat格式

busybox mkfs.vfat  /dev/block/mmcblk0pxxxx

 

mount -t vfat -o ro,uid=0,gid=1000,fmask=0027,dmask=0027 /dev/block/mmcblk0pxx /mnt/partion     将 /dev/block/mmcblk0pxx  按照只读,root用户,system组,访问掩码为root可读可写可执行,system可读可执行,其他用户无权限挂载到/mnt/partion  目录

 

重新挂载分区需要先卸载再重新remount

umount /mnt/pation    //卸载前关闭该文件系统所有访问,关闭所有打开的文件

mount -t vfat -o rw,uid=0,gid=1000,fmask=0027,dmask=0027 /dev/block/mmcblk0pxx /mnt/partion 

 

 

,规划磁盘分区:fdisk

二,格式化磁盘分区:mkfs.xxx

三,挂载磁盘分区:mount、umount

四,文件系统管理:e2abel、blkid、tun2fs、df

五,开机自动挂载:/etc/fstab

六、扩展

   1,swap分区的规划,挂载和自动挂载

   2,挂载文件夹

   3,autofs触发挂载

   4, NTFS分区的创建,挂载,使用

 

一:规划磁盘分区

1,查看磁盘分区: fdisk -l

格式:fdisk  -l [磁盘名]

 

示例:

[root@localhost ~]# fdisk -l /dev/sda   //如果不指定磁盘名,则列出所有磁盘的分区

 

Disk /dev/sda: 64.4GB, 64424509440 bytes

255 heads, 63sectors/track, 7832 cylinders

Units = cylinders of16065 * 512 = 8225280 bytes

 

  Device Boot      Start         End      Blocks  Id  System

/dev/sda1   *          1          25      200781  83  Linux

/dev/sda2              26        2575   20482875   83  Linux

/dev/sda3            2576        3850   10241437+  83  Linux

/dev/sda4            3851        7832   31985415    5  Extended

/dev/sda5            3851        4111    2096451   82  Linux swap / Solaris

/dev/sda6            4112        5085    7823623+  83  Linux

[root@localhost ~]#

 

 

2,规划磁盘分区:fdisk的常用选项

m :查看帮助信息

p :列表查看分区信息

n :新建磁盘分区

d :删除分区

t :变更分区类型(在使用t的时候,如果不知道)

w :保存分区设置并退出

q :放弃分区设置并退出

 

示例:fdisk交互式划分磁盘分区:http://murongqingqqq.blog.51cto.com/2902694/1361896

 

 

二,格式化磁盘分区

格式化工具:mkfs

mkfs -t 文件系统类型 分区设备

或使用mkfs.xxx 分区设备

[root@localhost ~]#mkfs.

mkfs.cramfs  mkfs.ext2   mkfs.ext3    mkfs.msdos   mkfs.vfat

可以看到,mkfs.后面可以跟的格式,也就是-t后面所接的文件系统类型。

 

注:

-在使用的时候,mkfs作为前段,通过-t调用各个程序

-使用mkfs.ext3时可通过-L选项为文件系统指定卷标

-使用mkfs.vfat时可通过-F选项指定FAT位数(默认为32,一般不指定,因为指定的时候只能指定16或32,16位的现在一般不用)

-在使用mkfs.xxx格式化一个分区设备的时候,需要先执行以下partprobe更新一下磁盘分区,否则可能出现无法找到想要格式化的分区。

 

三,挂载磁盘分区:mount、umount

1,mount命令

-格式:mount [选项] 设备名挂载点

常用命令选项

-a :加载所有fstab已配置的文件系统

注:在修改了/etc/fstab文件之后,可以使用mount -a命令或者reboot来重新加

载一下文件系统的挂载,这时如果有新加的swap分区,可能挂载不成功,那么,

需要重启,一般的分区都能挂载成功,如果有提示错误,那么需要修改/etc/fatab

文件内容。

-t :指定文件系统类型

-o :指定挂载参数

    ro/rw :只读/可读可写(默认可读可写)

    acl/noacl :启用/禁用ACL(默认禁用)

    exec/noexec :打开/关闭执行权(默认打开,如果不支持,就是该程序有x权

                  限,在此分区内也不允许执行。)

    suid/nosuid :启用/禁用SUID(默认启用;则当一个程序拥有suid权限的时

                  候,比如说mkdir,如果此分区不支持suid,则在此分区上建

                  立的目录也不属于mkdir的所有者)

    guid/noguid :启用/禁用GUID

    remount :重新挂载(用法:mount -o remount,exec /dev/sdb1 /data/tools)

    挂载一个分区的默认属性:rw,suid,dev,exec,auto,nouser,async

-L :使用卷标挂载设备(用e2label /dev/sdb1 “tools”设置/dev/sdb1的卷标为tools,

    可使用mount -L tools /data/tools来挂载/dev/sdb1分区。)

 

注:

用mount挂载一个iso文件的时候需要用-o参数指定其类型

因为ios结尾的文件里面的内容是无法查看的,所以需要先挂载到一个目录下在进行查看。

如:

mount -o loop linux.iso /tmp/isofs/ :将linux.iso文件挂载到/tmp/isofs/目录下

 

2,卸载文件系统:umount

格式:umount 设备名/挂载点(推荐使用通过挂载点的方式卸载文件系统)

常用命令选项:

-a :卸载所有已挂载的非伪文件系统

注:伪文件系统:不能往里面存储数据的文件系统

例如系统中的保留空间,用df-hT命令查看到的tmpfs文件类型的那个文件系统/dev/shm即为一个伪文件系统。

 

示例:

[root@localhost ~]# df -hT

文件系统类型容量已用 可用 已用% 挂载点

/dev/sda2     ext3    19G  2.7G   16G 15% /

/dev/sda1     ext3    99M   12M   82M 13% /boot

tmpfs        tmpfs  1005M     0 1005M   0% /dev/shm

/dev/sdb1     ext3    19G  173M   18G  1% /data/tools

/dev/sdb2     ext3    19G  173M   18G  1% /data/soft

/dev/sdb6     ext3   9.2G  150M  8.6G  2% /data/game

/dev/sda5     ext3    19G  173M   18G  1% /home

[root@localhost ~]# umount /data/game   //从挂载点将/dev/sdb6文件系统卸载

[root@localhost ~]# df -hT | grep sda6  //卸载之后没有任何关于sda6的信息了

[root@localhost ~]#

 

四,文件系统管理:e2abel、blkid、tun2fs、df

1,设置卷标:e2label命令

格式:e2label 设备名 [“卷标名”]

注:

设置完卷标之后,可以通过mount -L 卷标名 挂载点来挂载一个文件系统;

在/etc/fstab文件中,第一个字段,也可以使用卷标名来表示一个磁盘分区。

 

示例:

[root@localhost ~]# e2label /dev/sda6   //查看

//无内容

[root@localhost ~]# e2label /dev/sda6 "disk6"   //修改卷标名

[root@localhost ~]# e2label /dev/sda6   //查看修改结果

disk6       //修改后的卷标名为disk6

[root@localhost ~]# e2label /dev/sda6 ""    //删除卷标名

[root@localhost ~]# e2label /dev/sda6   //再次查看,没有卷标名了

 

[root@localhost~]#

 

2,查看设备的UUID:blkid命令

blkid命令:

blkid 设备名...

示例:

[root@localhost ~]# blkid /dev/sda3 /dev/sda6   //查看sda3和sda6的UUID

/dev/sda3:LABEL="/data" UUID="85efcd90-d05a-45b3-9af6-ee151591c652"TYPE="ext3" SEC_TYPE="ext2"

/dev/sda6: UUID="88c52aff-337b-4775-9c77-8c19ffc2cd3c"SEC_TYPE="ext2" TYPE="ext3" LABEL="disk6"

[root@localhost ~]#

注:如果是windows分区的话,没有UUID

切TYPE选项为:TYPE=”vfat”或者为TYPE=”ntfs”

 

示例:下面的/dev/sda5文件系统为ntfs格式,用blkid查看时候直接格式为ntfs

[root@localhostdata]# blkid /dev/sda5

/dev/sda5: TYPE="ntfs"

 

3,查看ext分区属性:tune2fs

格式:tune2fs -l 设备名

注:在使用tune2fs -l 设备名命令查看一个文件系统是否具有acl访问控制的时候,只能查看创建系统时候的分区,而新加的分区或新加硬盘上的分区,即使是具有acl访问控制,也不能查看到。

详细信息请查看:http://murongqingqqq.blog.51cto.com/2902694/1361506中的补充1

 

示例:

[root@localhost ~]# tune2fs -l /dev/sda3    //查看sda3的分区属性

tune2fs1.39 (29-May-2006)

Filesystemvolume name:   /data

Lastmounted on:          <notavailable>

FilesystemUUID:         85efcd90-d05a-45b3-9af6-ee151591c652

Filesystemmagic number:  0xEF53

Filesystemrevision #:    1 (dynamic)

Filesystemfeatures:      has_journal resize_inodedir_index filetype needs_recovery sparse_super large_file

Defaultmount options:    user_xattr acl        //支持acl

Filesystemstate:         clean

Errorsbehavior:          Continue

FilesystemOS type:       Linux

Inodecount:              2560864

Blockcount:              2560359

Reservedblock count:     128017

Freeblocks:              2379760

Freeinodes:              2557126

Firstblock:              0

Blocksize:               4096

Fragmentsize:            4096

ReservedGDT blocks:      625

Blocksper group:         32768

Fragmentsper group:      32768

Inodesper group:         32416

Inodeblocks per group:   1013

Filesystemcreated:       Tue Feb 11 04:45:08 2014

Lastmount time:          Fri Feb 21 22:11:462014

Lastwrite time:          Fri Feb 21 22:11:462014

Mountcount:              9

Maximummount count:      -1

Lastchecked:             Tue Feb 11 04:45:08 2014

Checkinterval:           0 (<none>)

Reservedblocks uid:      0 (user root)

Reservedblocks gid:      0 (group root)

Firstinode:              11

Inodesize:               128

Journalinode:            8

Defaultdirectory hash:   tea

DirectoryHash Seed:     63658a00-6d9c-480e-8c30-330a6318036d

Journalbackup:           inode blocks

[root@localhost ~]#

 

4,查看磁盘使用情况:df命令

常用命令选项:

-h :使用易读的容量单位

-T :列出文件系统类型

 

[root@localhost ~]# df -Th

文件系统类型容量已用 可用 已用% 挂载点

/dev/sda2     ext3     19G 2.3G   16G  13% /

/dev/sda1    ext3    190M   12M 169M   7% /boot

tmpfs       tmpfs    248M     0 248M   0% /dev/shm

/dev/sda3    ext3    9.5G  393M 8.6G   5% /data

[root@localhost ~]#

 

五,开机自动挂载:/etc/fstab

配置开机自动挂载:/etc/fstab文件

配置文件/etc/fstab,其内容可以以空格或制表位分为6列,每一列的表示的内容如下所示:

 

[root@localhost ~]# cat /etc/fstab

LABEL=/               /                        ext3   defaults         1 1

LABEL=/boot          /boot                     ext3   defaults         1 2

tmpfs               /dev/shm                   tmpfs  defaults         0 0

devpts              /dev/pts                   devpts gid=5,mode=620   0 0

sysfs               /sys                       sysfs  defaults         0 0

proc                /proc                      proc   defaults         0 0

LABEL=SWAP-sda3     swap                       swap   defaults         0 0

 

第1段                  2                       3        4              5 6

 

每一段表示的内容:

第一段:表示设备文件(也可以为UUID、设备名和卷标)

第二段:表示挂载点

第三段:表示文件系统类型

第四段:挂载参数

第五段:备份标记(为0表示不备份)

第六段:检测顺序(为0表示不检测)

 

示例:设置开机自动挂载(包括交换分区)

第一步:查看挂载情况和交换分区的大小;

如果有新的挂在点,先卸载;如果有新的交换分区,先用swapoff 设备名卸载交换分区。

[root@localhost ~]# df -Th      //首先查看一下文件系统的挂载情况

文件系统类型容量已用 可用 已用% 挂载点

/dev/sda2     ext3    19G  2.7G   16G 15% /

/dev/sda1     ext3    99M   12M   82M 13% /boot

tmpfs        tmpfs  1005M     0 1005M   0% /dev/shm

[root@localhost ~]# free -m //原始交换分区为我的sda磁盘上的一个分区大小为2G

            total       used       free    shared    buffers     cached

Mem:          2008        911       1096          0         85        649

-/+buffers/cache:        176       1831

Swap:         2047         0      2047

[root@localhost ~]#

 

第二步:修改fstab文件内容,增加开机挂载项;

注:

-这里大部分使用的为UUID,需使用blkid先查询设备的UUID

-/dev/sdb5为交换分区,交换分区的第二段挂载点为swap,第三段文件系统类型还是swap,挂载swap分区的时候需要注意一下!

[root@localhost ~]# vim /etc/fstab

LABEL=/                 /                       ext3    defaults        1 1

LABEL=/boot             /boot                   ext3    defaults        1 2

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

LABEL=SWAP-sda3         swap                    swap    defaults        0 0

UUID="59b355ba-5f83-4016-b5bc-4257ae948359"     /data/tools ext3 defaults 0 0

UUID="1497b080-ffaf-4fe1-95c7-c63d349550a9"     /data/soft  ext3 defaults 0 0

UUID="58fbc6d5-e597-42bf-9ee7-096f62dd41cc"     /data/game  ext3 defaults 0 0

UUID="a463550a-9d03-4934-81a4-e6f8be920f9a"     /home  ext3 defaults 0 0

/dev/sdb5               swap                    swap    defaults        0 0

 

第三步:使用mount -a命令来重新加载一遍

然后用df -Th和free -m分别查看文件系统和交换分区的挂载情况。

[root@localhost ~]# mount -a

[root@localhost ~]# df -Th  //可以看到下面文件系统已经加载成功了

文件系统类型容量已用 可用 已用% 挂载点

/dev/sda2     ext3    19G  2.7G   16G 15% /

/dev/sda1     ext3    99M   12M   82M 13% /boot

tmpfs        tmpfs  1005M     0 1005M   0% /dev/shm

/dev/sda5     ext3    19G  173M   18G  1% /home

/dev/sdb1     ext3    19G  173M   18G  1% /data/tools

/dev/sdb2     ext3    19G  173M   18G  1% /data/soft

/dev/sdb6     ext3   9.2G  150M  8.6G  2% /data/game

[root@localhost ~]# free -m

//查看swap分区是否被挂载,可以看到和上边第一步查询的结果是一样的,那么即说明没有挂载,这时需要重新启动才能挂载。

            total       used       free    shared    buffers     cached

Mem:          2008        910       1097          0        86        649

-/+buffers/cache:        175       1832

Swap:         2047         0      2047

 

总结:可以使用mount-a来重新加载fstab内的文件系统,但是通过free -m可以看到,交换分区是没有加载成功的,若想要加载成功,则需要重新启动。

 

------

综合示例:迁移/home目录:http://murongqingqqq.blog.51cto.com/2902694/1361937

 

六:扩展

1,swap分区的规划、挂载和自动挂载

如果在安装系统时划分的swap分区过小,或者没有划分swap分区,这时可以从新加磁盘或者现有磁盘剩余空间中划分一个分区,并格式化为swap分区,挂载上使用。

swap分区的查看方式:

第一种:cat  /proc/meminfo

第二种:swapon -s

第三种:free -m

[root@localhost ~]# free -m

           total       used       free    shared    buffers     cached

Mem:         2008        893       1115          0         73        648

-/+ buffers/cache:       170       1837

Swap:         2047          0       2047    //可以看到交换分区的大小为2G

 

建立swap分区的方式:

使用fdisk命令划分一个分区,并指定其格式(注:用t选项)为82,保存(w)即可。

注:在磁盘分区新划分之后需要用partprobe命令来从新加载系统分区信息!!!

 

swap分区的格式化方式:

使用mkswap 新交换分区来格式化一个新建立的交换分区

 

手动启用/关闭交换分区:

swapon/off  新交换分区

 

示例:新建swap的规划,挂载,自动挂载请查看:http://murongqingqqq.blog.51cto.com/2902694/1361934

 

 

2,挂载文件夹

用途:主要是隐藏源目录的路径,比如说将/usr/src/目录挂载到/media/tools/src/目录下做共享,那么其他用户(如user1)在访问/usr/src/目录下资源的时候,可以直接进入

/media/tools/src/下直接访问资源,保证了/usr/src/目录的安全性。

 

注:在挂载的时候需要有目标文件夹/media/tools/src,如果没有需要先创建;而且保证目标文件夹不被其他文件系统或文件夹占用挂载。如果有,则需先卸载。

挂载文件夹的时候需要mount命令的- -bind参数:

 

示例:将/usr/src/文件夹挂载到/data/tools/src/目录下:

思路:

第一步:创建目录/data/tools/src/目录

第二步:将/usr/src/文件夹挂载到/data/tools/src/目录下

第三步:验证是否挂载成功

第四步:使用user1用户登录系统,进入/data/tools/src/目录访问资源。

 

具体操作:

[root@localhost ~]# mkdir -p /data/tools/src

[root@localhost ~]# ls /usr/src/

debug  kernels

[root@localhost ~]# mount --bind /usr/src/ /data/tools/src/

[root@localhost ~]# mount | grep src

/usr/src on/data/tools/src type none (rw,bind)

[root@localhost ~]# ls /data/tools/src/

debug  kernels

[root@localhost ~]# su - user1

[user1@localhost ~]$cd /data/tools/src/    

[user1@localhostsrc]$ ls   //成功访问

debug  kernels

[user1@localhostsrc]$

 

3,autofs触发挂载

触发挂载,像/misc/cd目录即为触发挂载目录;

触发挂载:在misc目录里,用ls命令无法查看到里面有任何文件或目录,但是可以用cd命令切换到cd这个目录中去,当用cd切换到cd目录的时候,那么,光盘上的目录将会自动挂载到/misc/cd目录中,这就是触发挂载。

 

触发挂载的配置文件:/etc/auto.master和/etc/xxx(这个文件根据/etc/auto.master文件里面的内容来写)

/etc/auto.master文件的内容:

第一段:表示挂载点父目录

第二段:挂载配置文件xxx

/etc/xxx(这个文件为/etc/auto.master文件里面的第二段定义的挂载配置文件)文件内容:

第一段:挂载点子目录

第二段:挂载参数

第三段: :设备名(注:设备名前加“:”)

 

示例:将/dev/sdb1文件系统触发挂载到/abc/tools目录

第一步:创建/abc文件夹:mkdir /abc

第二步:为/etc/auto.master的内容增加一行

vim /etc/auto.master

增加一行:/abc  /etc/auto.abc

第三步:根据/etc/auto.master文件内容,编辑配置文件/etc/auto.abc文件(新建)

vim /etc/auto.abc

添加内容:tools     -fstype=ext3   :/dev/sdb1

第四步:重新加载服务:server autofs reload

第五步:用cd /abc/tools命令看是否能进入该目录,不出意外可以进入。

 

4, NTFS分区的创建,挂载,使用

注:linux系统默认是不支持NTFS格式的分区的,想要使其支持NTFS格式的分区,需要安装NTFS-3G软件。

 

下载NTFS-3G源码包的方式

1,http://www.ntfs-3g.org

2,wget http://www.ntfs-3g.org/ntfs-3g-1.1120.tgz

 

示例:

安装ntfs-3g源码包

将/dev/sda5磁盘分区格式化为NTFS分区,并用ntfs-3g来加载NTFS分区。

步骤:

第一步:解压源码包

tar zxvfntfs-3g_ntfsprogs-2013.1.13.tgz  -C/usr/src/

第二步:编译安装(注:编译安装之前需要先安装gcc工具)

cd /usr/src/ntfs-3g_ntfsprogs-2013.1.13/

./configure--prefix=/opt/ntfs

make

make install

第三步:使用fdisk将/dev/sda5的分区类型改为7,即HPFS/NTFS格式并格式化

[root@localhost /]# fdisk /dev/sda  

 

The number ofcylinders for this disk is set to 10443.

There is nothingwrong with that, but this is larger than 1024,

and could in certainsetups cause problems with:

1) software thatruns at boot time (e.g., old versions of LILO)

2) booting andpartitioning software from other OSs

  (e.g., DOS FDISK, OS/2 FDISK)

 

Command (m forhelp): t     //t为修改分区类型

Partition number(1-5): 5   //sda5为第五个分区

Hex code (type L tolist codes): 7  //指定为7,如果不知道可输入L查看详细信息

 

Command (m forhelp): w     //w为保存退出

The partition tablehas been altered!

 

Calling ioctl() tore-read partition table.

 

WARNING: Re-readingthe partition table failed with error 16: 设备或资源忙.

The kernel stilluses the old table.

The new table willbe used at the next reboot.

Syncing disks.

[root@localhost /]# mkfs.ntfs /dev/sda5 //将/dev/sda5分区格式化为ntfs格式

[root@localhost /]# fdisk -l /dev/sda | grep NTFS   //查看NTFS分区

/dev/sda5            2825        5257   19543041    7  HPFS/NTFS

第四步:临时装载NTFS分区

[root@localhost /]# ntfs-3g /dev/sda5 /data/ntfs/       //装载ntfs分区

[root@localhost /]# mount | grep sda5

/dev/sda5on /data/ntfs type fuseblk(rw,allow_other,blksize=4096)

[root@localhost /]#

 

注:临时挂载成功,这一步为止,已经完成了NTFS格式分区的临时挂载。

 

第五步:如果需要设置开机自动挂载该NTFS分区,需要在/etc/fstab文件里面增加内容

格式为:

[root@localhost /]# cat /etc/fstab | grep sda5

/dev/sda5               /data/ntfs              ntfs-3g defaults        0 0

[root@localhost /]#

第六步:验证

[root@localhost /]# umount /data/ntfs/      //卸载挂载点

[root@localhost /]# mount | grep sda5       //查看是否卸载成功

[root@localhost /]# mount -a        //加载所有fstab已配置的文件系统

注:如果用mount -a能够加载/dea/sda5的话,那么重启肯定能加载。

[root@localhost /]# mount | grep sda5   //可以看到,挂载成功了!

/dev/sda5on /data/ntfs type fuseblk (rw,allow_other,blksize=4096)

[root@localhost /]#

 

注:挂载NTFS格式u盘的时候,由于系统默认不识别NTFS 格式的文件系统,即使是安装了ntfs-3g软件,也无法识别,这时,只能通过手动挂载,一般u盘在linux系统中被识别的文件系统为/dev/sdh*设备,也可能是/dev/sd*,使用ntfs-3g /dev/sd* 挂载目录挂载即可。

Android 格式化分区命令

上一篇:ITP4513 (Internet & Multimedia Applications Development)


下一篇:跨App模块进行外键的关联