爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 7108|回复: 21
收起左侧

[分享] Linux下将MMC卡分区及解压缩rootfs的方法

[复制链接]
发表于 2006-11-29 13:30:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
近期有很多人尝试或者是想尝试sx1上的Linux,有部分机友在给MMC卡分区的时候遇到了些问题,我觉得,既然在SX1上使用Linx了,为什么不顺便学习一些Linux的知识呢?,而且,每次还都得麻烦shinechou重新做一次ghost文件。

所以我就尝试着写写这样的文章吧。

注意,重新分区会清除MMC卡上原有的数据,所以请注意备份!

对于使用何种Linux的问题,就不多做讨论了,如果只是为了分个区,学习一下Linux的话,那也未必就需要在硬盘上装个Linux,只要用一些LiveCD就可以了,这里说两个:

1、左楠风老大推荐的Hiweed,具体情况见电脑版的文章:http://mobile.0110.cn/thread-282928-1-1.html
2、DSL,对于这个,只要解释一下它的名字的意思就知道为什么要说它了,DSL=Damn Small Linux,很小,具体情况可以去www.damnsmalllinux.org看看

对于这两个,如果只是想分个区的话,那么DSL就可以了,50M,在虚拟机上用用就行,如果真的想体验一下,并且想学习学习的话,那还是用左老大推荐的Hiweed吧,中文支持什么的好多了,而且还是国货。

我这里用的是DSL+vmware,还有我的QPI 256M,我的windows有其它的用途,白天不方便关机,所以只能用个虚拟机了:)

OK,进入正题!

一、查看MMC卡/读卡器的设备名称

在Linux下,U盘(读卡器,移动硬盘)和SCSI硬盘,SATA硬盘一样,都是用的/dev/sd*的方法命名的,所以,不能确定MM卡就是/dev/sda,现在的SATA硬盘很普遍,所以很可能/dev/sda就是你的硬盘,所以,我们在给MMC分区的时候,要先看看它对应的设备名。

如果是在字符界面下,插上读卡器之后,可能会显示出一些信息,这里面就含有设备名,但是可能你的没有显示,或者你用的是图形界面,也没显示,那么就要查看一下了:
  1. dmesg
复制代码

在最后,可以看到最近的情况,其中就会包含插入的读卡器的信息,如下图:

查看MMC的设备名

查看MMC的设备名

在图上很容易看出来:

Model: USB SD Reader
SCSI device sda: 501760 512-byte hdwr sectors (257 MB)
sda: Write Protect is off
sda: sda1

SD读卡器,我的MMC是256M的,这上面写出来的是257M,写保护未打开,设备的名字是sda,有一个分区sda1
这样,就可以知道你的MMC卡的设备名称了,记住这个名字(我下面的命令用的是sda,这是我的MMC卡的设备名,使用的时候要替换成你看到是设备名称

二、删除原有分区

为了防止Linux系统的自动挂载,我们先手工的把读卡器卸载掉,挂载和卸载设备都需要root权限,所以我们用sudo命令,可能你在使用的时候会让你提供密码,那就查看你使用的LiveCD的说明,DSL是不需要密码的:
  1. sudo umount /dev/sda1
复制代码

记得上面的sda1要替换成你对应的设备名,以后不再多说。

分区同样要root权限,所以:
  1. sudo fdisk /dev/sda
复制代码

这里要注意,是你MMC的设备名,比如sda,而不是其中某个分区的名字,你是在给MMC卡分区,而不是在给其中的一个分区再分区

如图:

fdisk

fdisk

这个时候打入m回车,可以看到帮助,有兴趣的可以看看。我们使用p命令,查看当前的分区情况,确认一下,如图:

显示分区情况

显示分区情况

可以看出,只有一个FAT16的分区,现在我们可以用d命令删除分区了,如果有超过一个分区,fdisk会问你要删哪个分区,如果只有一个,那就会直接删除:

删除分区

删除分区

把MMC上所有的分区都删掉,就可以进入下一步了。

三、建立分区

删了原有的分区之后,可以开始建立新的分区了,因为我们知道ext2分区要75M以上,swap要32M以上,根据卡的大小,我们可以算出FAT16能有多大的空间,比如我的MMC是256M的,大概还能有149M,但是MMC卡的容量大家都知道,不是那么精确的,所以我给FAT16的分区分145M,如下图:

建立fat16分区

建立fat16分区

依次解释上面的命令:
首先是用n命令,建立一个分区,fdisk会询问是建立extended还是primary partition,我们要建主分区,所以我们输入p,回车之后,fdisk会询问使用4张分区表中的哪一张,我们的FAT16分区是第一个分区,所以我们输入1,回车之后会询问你这个分区是从哪个cylinder(柱面)开始,直接回车,fdisk会选用最前面的可用部分的,这样一般情况下是可以的,所以我们直接回车,然后会让你输入分区的大小,使用+大小M或者+大小K这样的格式,所以我在这输入了+145M来给这个FAT16的分区分配145M的空间。

Linux下的fdisk建立的分区默认是ext2格式的,所以我们得改变这个分区的格式,使用t命令,因为只有一个分区,所以就没要求选择分区,默认选择了第一个,然后fdisk会要求输入一个十六进制的数字,用l可以查看十六进制数对应的分区类型,有兴趣的可以看看,在这个地方我们输入6,回车,显示了将第一个分区类型改为6(FAT16)的提示,这样,一个FAT16的分区就建立出来了,类似的,我们建立其它的分区,如图:

建立其它分区

建立其它分区

在建最后一个分区的时候,设置大小的地方不用填写,直接回车,就会使用剩余的所有空间了。

由于Linux下fdisk建立的分区默认是ext2格式的,所以我们就不用改第二个分区的类型了,我们用t命令改变第三个分区,因为这时候存在多个分区,所以让选择了分区号,然后我们输入swap分区对应的分区类型82,再用p命令查看一下,确认一下,没有问题的话,我们就可以用w命令写人MMC卡,保存我们的分区操作了。

改变分区格式,并查看分区情况

改变分区格式,并查看分区情况

保存分区

保存分区

如果你细心些的话,最后可能会注意到,分区的大小有些出入,你可以试着自己重新用fdisk分区,调整一下,相差不大的话,应该是没什么问题的。

四、建立文件系统(格式化)

如下图,没什么太多需要说明的地方,只是格式化的时候需要root权限,所以还是用了sudo:

建立文件系统

建立文件系统

因为我下载的DSL中似乎没有mkfs.vfat这样的处理vfat分区的命令,所以并没对第一个分区进行处理,这不要紧,交给windows就OK了:)

五、将rootfs解压进MMC卡的ext2分区中

我们现在可以用sync命令把Linux在内存中缓存的数据强制写入磁盘,只是为了保险起见,其实应该是不必要的,这时候就可以拨出读卡器了,拿到Windows下,如果MMC的FAT16分区还没有格式化,那就格式化一下,把rootfs的文件复制进去。在我的windows上出现了这样的一个问题,我重新分区了的MMC卡仍然显示是240多M,但是在分区管理中查看却是138M,重新格式化之后才正常,如果你也遇到这样的问题,可以尝试着格式化一下。

复制完之后,再重新把读卡器插入Linux的机器上(在我这就是虚拟机中),回到我们的Linux中进行操作。

一般说来,这个时候的设备名是不会变的,如果你不放心,可以再用dmesg看一下。

我们现在要把MMC中的FAT16和ext2都挂载上,为此我们在/mnt目录中建立两个目录,因为/mnt可能是属于root用户的目录,并且一般用户不可写,所以我们仍然用sudo来完成。使用命令:
  1. sudo mkdir /mnt/{fat,root}
复制代码

然后我们将这两个分区挂载上:
  1. sudo mount /dev/sda1 /mnt/fat

  2. sudo mount /dev/sda2 /mnt/root
复制代码

解压缩:
  1. sudo tar -jxf /mnt/fat/rootfs-1128-.tar.bz2 -C /mnt
复制代码

然后我们看看/mnt/root下都有些什么了:
  1. ls /mnt/root
复制代码

然后,我们就可以把MMC卸载掉,用sync写入磁盘,把读卡器拨出来,MMC卡放到SX1中试试效果了!
执行过程如下图:

解压缩文件

解压缩文件

在我解压缩的时候,出现了一个错误:trailing garbage after EOF ignored,据说这个错误是可以忽略的,如果你没出现,那就更没问题了。
另:在这里,rootfs是用tar打包后用bzip2压缩的文件,所以是用tar -jxf来解压缩,如果是tar.gz这样的名字,那么就要用tar -zxf来解压了,由于文件的扩展名不是强制的,所以可能存在用bzip2打包但是叫tar.gz的,那么就要用file命令来看看这个文件到底是什么格式的了,比如对于这个rootfs-1128-.tar.bz2文件,用以下命令:
  1. file rootfs-1128-.tar.bz2
复制代码

就会有如下的输出:
rootfs-1128-.tar.bz2: bzip2 compressed data, block size=900k
还可以在tar命令中加上v这个参数(tar -jxvf和tar -zxvf),来看看解压缩的过程,不过向屏幕输出信息可能多花几秒的时间,所以我就没加。

如果有什么疑问可以跟贴或者PM我。

[ 本帖最后由 LanEast 于 2006-11-29 17:16 编辑 ]

评分

参与人数 1实力分 +2 金钱数 +30 技术分 +2 收起 理由
segalgx + 2 + 30 + 2 奖励:感谢-你和大家分享教程!

查看全部评分

发表于 2006-11-29 13:36:11 | 显示全部楼层
支持兄弟~~慢慢学学
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-29 13:38:39 | 显示全部楼层
呵呵,把图也给排好了:)
回复 支持 反对

使用道具 举报

发表于 2006-11-29 13:45:40 | 显示全部楼层
哈~~~这下方便机友了,支持!
回复 支持 反对

使用道具 举报

发表于 2006-11-29 13:46:31 | 显示全部楼层
Linux还要多多学习,留名!
回复 支持 反对

使用道具 举报

发表于 2006-11-29 14:32:32 | 显示全部楼层
支持兄弟的精彩教程!
回复 支持 反对

使用道具 举报

发表于 2006-11-29 14:50:36 | 显示全部楼层
在Hiweed下面还有更简单的办法,等我回家写教程~~~
回复 支持 反对

使用道具 举报

发表于 2006-11-29 15:52:31 | 显示全部楼层
详细。
支持楼主!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-29 16:15:29 | 显示全部楼层
原帖由 左楠风 于 2006-11-29 14:50 发表
在Hiweed下面还有更简单的办法,等我回家写教程~~~


嗯,肯定有简单方法的,不过我比较喜欢比较通用一些的方法和比较简单一些的工具的
回复 支持 反对

使用道具 举报

发表于 2006-11-29 18:58:59 | 显示全部楼层
是要学习一下了 !!!!!!感谢分享!
回复 支持 反对

使用道具 举报

发表于 2006-11-29 20:38:14 | 显示全部楼层

回复 #9 LanEast 的帖子

呵呵,我只会简单的办法~ hiweed下面带一个图形界面的分区编辑器,我用那个做的
回复 支持 反对

使用道具 举报

发表于 2006-11-29 20:47:25 | 显示全部楼层
顶顶,,,,
回复 支持 反对

使用道具 举报

发表于 2006-11-30 01:11:02 | 显示全部楼层
。。。我看了好久,估计这种东西不实贱永远不会懂
回复 支持 反对

使用道具 举报

发表于 2006-12-2 20:49:50 | 显示全部楼层
锁了的机可以刷吗
回复 支持 反对

使用道具 举报

发表于 2006-12-2 22:13:10 | 显示全部楼层
实践出真知,看不明白,因为怕麻烦懒得动手和动脑,谢谢
回复 支持 反对

使用道具 举报

发表于 2006-12-5 17:05:39 | 显示全部楼层
多谢分享!8-)
回复 支持 反对

使用道具 举报

发表于 2006-12-13 08:40:28 | 显示全部楼层
~支持~!顶到顶心顶肺~
回复 支持 反对

使用道具 举报

发表于 2006-12-13 10:44:26 | 显示全部楼层
学习中,,观注中
回复 支持 反对

使用道具 举报

发表于 2007-2-5 15:35:43 | 显示全部楼层
不明白应该是查资料咯。
说个事情 , hda,sda这些要注意点,不是每个版本的Linux内核都是相同MapPath.
回复 支持 反对

使用道具 举报

发表于 2007-6-3 12:38:21 | 显示全部楼层
学习中。。支持
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-1 04:07

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表