- 积分
- 70
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册会员
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分区的时候,要先看看它对应的设备名。
如果是在字符界面下,插上读卡器之后,可能会显示出一些信息,这里面就含有设备名,但是可能你的没有显示,或者你用的是图形界面,也没显示,那么就要查看一下了:
在最后,可以看到最近的情况,其中就会包含插入的读卡器的信息,如下图:
查看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是不需要密码的:
记得上面的sda1要替换成你对应的设备名,以后不再多说。
分区同样要root权限,所以:
这里要注意,是你MMC的设备名,比如sda,而不是其中某个分区的名字,你是在给MMC卡分区,而不是在给其中的一个分区再分区
如图:
fdisk
这个时候打入m回车,可以看到帮助,有兴趣的可以看看。我们使用p命令,查看当前的分区情况,确认一下,如图:
显示分区情况
可以看出,只有一个FAT16的分区,现在我们可以用d命令删除分区了,如果有超过一个分区,fdisk会问你要删哪个分区,如果只有一个,那就会直接删除:
删除分区
把MMC上所有的分区都删掉,就可以进入下一步了。
三、建立分区
删了原有的分区之后,可以开始建立新的分区了,因为我们知道ext2分区要75M以上,swap要32M以上,根据卡的大小,我们可以算出FAT16能有多大的空间,比如我的MMC是256M的,大概还能有149M,但是MMC卡的容量大家都知道,不是那么精确的,所以我给FAT16的分区分145M,如下图:
建立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来完成。使用命令:
- sudo mkdir /mnt/{fat,root}
复制代码
然后我们将这两个分区挂载上:
- sudo mount /dev/sda1 /mnt/fat
- sudo mount /dev/sda2 /mnt/root
复制代码
解压缩:
- sudo tar -jxf /mnt/fat/rootfs-1128-.tar.bz2 -C /mnt
复制代码
然后我们看看/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文件,用以下命令:
- 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 编辑 ] |
评分
-
查看全部评分
|