http://www.wda.cn/thread-8133-1-1.html
因为之前我在SD卡上安装过NITDORID,系统运行极慢,经常弹出强制关闭的窗口。
后来转换到home根目录,运行速度提高了许多,基本不弹出强制窗口了,但缺点是NITDROID和MAEMO的系统文件混在一起了。
偶然的机会在论坛上看到可以把NITDROID安装在分区上,真是新鲜事儿,于是在昨天进行了一场实验,结果成功!
下面是我的全过程:
################ 分区 ################
特别注意:分区有风险,分区整个过程,一定要保证手机有足够电量,否则硬盘可能会损坏!!!
使用fdisk操作时,请务必清楚每敲一行代码代表的含义,如果搞不清楚,请baidu或者google或者给我留言!新手请谨慎操作!
本例在PC端使用secureCRT连接N900操作。
作准备工作:
一,在PC端连接N900
1,手机端需安装Mad developer,Open SSL client and server
2,使用USB连接电脑,选择PC Suit
3,打开Mad developer依次选择usb networking -> windows network
4,打开secureCRT或其它SSH连接工具,使用root用户连接N900
注:如果使用x-ter登录,则应输入root或sudo gainroot首先获取root权限
二,安装分区工具FDISK
- Nokia-N900:~# mkdir -p /home/user/util-linux /home/user/bin 依次建立两个目录,前者是临时目录,后者是FDISK存放目录
- Nokia-N900:~# cd /home/user/util-linux 进入临时目录
- Nokia-N900:~# wget http://ftp.de.debian.org/debian/pool/main/u/util-linux/util-linux_2.13.1.1-1_armel.deb在临时目录下载工具包,也可在电脑端下载,然后拷到此目录
- Nokia-N900:~# dpkg-deb -x util-linux_2.13.1.1-1_armel.deb root 解压到/home/user/util-linux/root目录
- Nokia-N900:~# cp root/sbin/fdisk /home/user/bin/ 把临时目录里的FDISK工具拷到目标目录
- Nokia-N900:~# cd ..
- Nokia-N900:~# rm -rf util-linux 删除临时目录
复制代码
三,分区
首先先卸载第一个分区MyDocs:
- Nokia-N900:~# umount /home/user/MyDocs
复制代码
然后在PC端使用secureCRT登录N900,然后查看当前分区情况:
命令如下:
- Nokia-N900:~# cd /home/user/bin/
- Nokia-N900:/home/user/bin# ./fdisk -l
复制代码
如果未进行过分区,则是应该出现以下分区表:
可以看到手机里共挂载了两个外置设备,分别是手机本身的硬盘/dev/mmcblk0和外置的SD卡/dev/mmcblk0。
其中内置硬盘分了三个区,分别是/dev/mmcblk0p1,/dev/mmcblk0p2和/dev/mmcblk0p3,分区格式依次是FAT32,Linux和Linux swap / Solaris
外置SD卡分了两个区,分别是/dev/mmcblk1p1和/dev/mmcblk1p2,分区格式依次是FAT32和Linux
可以发现maemo对外置设备挂载的规律:/dev/mmcblk*,全称应该是MultiMedia Card Block,其中*代表外置设备的序号,从0开始。对分区的命名规律则是/dev/mmcblk*p#,其中#是分区序号,从1开始。
原则上如果有第三个外置设备,应该是/dev/mmcblk2。
如下:
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 2 884865 28315648 c W95 FAT32 (LBA)
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- Disk /dev/mmcblk1: 15.9 GB, 15997075456 bytes
- 4 heads, 16 sectors/track, 488192 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk1p1 1 451200 14438399+ c W95 FAT32 (LBA)
- /dev/mmcblk1p2 451201 488192 1183744 83 Linux
复制代码
这时,我们来编译第一块硬盘,即手机内置硬盘/dev/mmcblk0
- Nokia-N900:/home/user/bin# ./fdisk /dev/mmcblk0
复制代码
输入上面命令后,则会出现以下界面:
- The number of cylinders for this disk is set to 977024.
- There is nothing wrong with that, but this is larger than 1024,
- and could in certain setups cause problems with:
- 1) software that runs at boot time (e.g., old versions of LILO)
- 2) booting and partitioning software from other OSs
- (e.g., DOS FDISK, OS/2 FDISK)
- Command (m for help): m (这里按m显示帮助,按p查看当前分区表情况)
- 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)
- Command (m for help): d (按d进行删除分区操作)
- Partition number (1-4): 1 (删除第一块主分区,即/dev/mmcblk0p1,也就是我们的/home/user/MyDocs)
- Command (m for help): p (按p查看操作后的分区表情况)
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
复制代码
可以看到第一块分区已经被删除了。此时继续按n进行新的分区操作
- Command (m for help): n
- Command action
- e extended
- p primary partition (1-4)
- p (这里有两个选项,e和p分别是扩展分区和主分区,这里我们是建立主分区,所以选择p)
- Partition number (1-4): 1 (选择分区的序号,我们删除了第一个主分区,现在要重建,这里选择1)
- First cylinder (1-977024, default 1): (开始cylinder,使用默认1,这里只按回车即可)
- Using default value 1
- Last cylinder or +size or +sizeM or +sizeK (1-884865, default 884865): +25G (选择cylinder,这里可以输入数量,也可以直接输入大小,如+25K,这里我想给MyDocs分25G,所以直接输入了+25G)
- Command (m for help): p (两次按p查看操作后的分区表情况,可以看到第一块主分区大小是24414072K,约是25G)
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 83 Linux
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
复制代码
本来第一主分区是28G,我们删除再建后是25G,还有3G的空闲空间,这里我们来创建扩展分区:
- Command (m for help): n (按n继续分区)
- Command action
- e extended
- p primary partition (1-4)
- e (此时要创建扩展分区了,选择e)
- Selected partition 4(只能有4个主分区,自动选择4。因为扩展分区也是主分区的一种)
- First cylinder (762941-977024, default 762941): (选择开始cylinder,使用默认即可,直接回车)
- Using default value 762941
- Last cylinder or +size or +sizeM or +sizeK (762941-884865, default 884865): (选择结束cylinder,因为我们要把剩余的空间全部分配给扩展分区,然后再在扩展分区上创建逻辑分区,所以要把剩余空间全部分配给扩展分区,这里使用默认,直接回车)
- Using default value 884865
- Command (m for help): p(按p查看操作的后的情况)
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 83 Linux
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- /dev/mmcblk0p4 762941 884865 3901600 5 Extended
复制代码
可以看到,扩展分区是/dev/mmcblk0p4 ,被分区了近4G空间。扩展分区是不能直接使用的 ,要在扩展分区上创建一至多个逻辑分区才能使用。
- Partition table entries are not in disk order
- Command (m for help): n (按n在扩展分区上创建逻辑分区)
- First cylinder (762941-884865, default 762941): (选择第一个逻辑分区的起始柱面数,为了不浪费空间,按回车使用默认)
- Using default value 762941
- Last cylinder or +size or +sizeM or +sizeK (762941-884865, default 884865): +2G (选择结束柱面数,我们直接给出2G空间)
- Command (m for help): p (按p查看一下操作后的分区表情况)
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 83 Linux
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- /dev/mmcblk0p4 762941 884865 3901600 5 Extended
- /dev/mmcblk0p5 762941 823976 1953144 83 Linux
复制代码
可以看到/dev/mmcblk0p5是我们的第一个扩展分区,也是第5个分区,大小是近2G,分区格式是83(Linux)
- Partition table entries are not in disk order
- Command (m for help): n (近n继续创建扩展分区)
- First cylinder (823977-884865, default 823977): (选择第二个逻辑分区的起始柱面数,为了不浪费空间,按回车使用默认)
- Using default value 823977
- Last cylinder or +size or +sizeM or +sizeK (823977-884865, default 884865): (选择结束柱面数,因为后面没有逻辑分区了,这里直接回车默认)
- Using default value 884865
- Command (m for help): p(按p查看一下操作后的分区表情况)
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 83 Linux
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- /dev/mmcblk0p4 762941 884865 3901600 5 Extended
- /dev/mmcblk0p5 762941 823976 1953144 83 Linux
- /dev/mmcblk0p6 823977 884865 1948440 83 Linux
复制代码
可以看到/dev/mmcblk0p6是我们的第二个扩展分区,也是第6个分区,大小是近2G,分区格式是83(Linux)
- Partition table entries are not in disk order
- Command (m for help): t (按t进行分区格式转换)
- Partition number (1-6): 1(选择分区数,这里选择第一个分区,即将来的MyDocs
- Hex code (type L to list codes): l(按L可以查看分区格式的数字编号)
- 0 Empty 1e Hidden W95 FAT1 80 Old Minix be Solaris boot
- 1 FAT12 24 NEC DOS 81 Minix / old Lin bf Solaris
- 2 XENIX root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
- 3 XENIX usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
- 4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
- 5 Extended 41 PPC PReP Boot 85 Linux extended c7 Syrinx
- 6 FAT16 42 SFS 86 NTFS volume set da Non-FS data
- 7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .
- 8 AIX 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility
- 9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM df BootIt
- a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e1 DOS access
- b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
- c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
- e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
- f W95 Ext'd (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
- 10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
- 11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
- 12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
- 14 Hidden FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
- 16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot f2 DOS secondary
- 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
- 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
- 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
- 1c Hidden W95 FAT3 75 PC/IX
- Hex code (type L to list codes): 76 (转换成76目的是让系统在启动时不加载它,因为76是一个未定义的分区编号)
- Changed system type of partition 1 to 76 (Unknown)
复制代码
下面依次把第5个分区,即第一个逻辑分区也转换成76
- Command (m for help): t
- Partition number (1-6): 5
- Hex code (type L to list codes): 76
- Changed system type of partition 5 to 76 (Unknown)
- Command (m for help): p
- Disk /dev/mmcblk0: 32.0 GB, 32015122432 bytes
- 4 heads, 16 sectors/track, 977024 cylinders
- Units = cylinders of 64 * 512 = 32768 bytes
- Disk identifier: 0x00000000
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 83 Linux
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- /dev/mmcblk0p4 762941 884865 3901600 5 Extended
- /dev/mmcblk0p5 762941 823976 1953144 76 Unknown
- /dev/mmcblk0p6 823977 884865 1948440 83 Linux
- Partition table entries are not in disk order
复制代码
按照上面的步骤,把第一分区和第六分区分别设置为76。
- 上面操作完成后按p应该是以下状态(具体数字可能不同)
- [code]
- Device Boot Start End Blocks Id System
- /dev/mmcblk0p1 1 762940 24414072 76 Unknown
- /dev/mmcblk0p2 884866 950401 2097152 83 Linux
- /dev/mmcblk0p3 950402 974977 786432 82 Linux swap / Solaris
- /dev/mmcblk0p4 762941 884865 3901600 5 Extended
- /dev/mmcblk0p5 762941 823976 1953144 76 Unknown
- /dev/mmcblk0p6 823977 884865 1948440 76 Unknown
复制代码
确定没问题按w执行操作。
Command (m for help): w (按q退出,按w应用分区结果)[/code]输入reboot重启手机,然后格式化分区:
1,把第一个分区格式设置为FAT32:
- root
- /home/user/bin/fdisk /dev/mmcblk0
- 输入t,回车
- 输入1,回车
- 输入0c,回车
- 输入w,回车
复制代码
2,格式化第一个分区为FAT32:
- mkfs.vfat -F 32 /dev/mmcblk0p1
复制代码
3,重新加载MyDocs:
- mount /dev/mmcblk0p1 /home/user/MyDocs
复制代码
(这一步可以不做,因为系统在启动的时候,会自动把第一块FAT32的分区挂载到/home/user/MyDocs的)
4,指点第5个分区(第一个逻辑分区)设置为Linux格式:
root
- /home/user/bin/fdisk /dev/mmcblk0
- 输入t,回车
- 输入5,回车
- 输入83,回车
- 输入w,回车
复制代码
5,格式化第5个分区为Linux格式:
如果此步分区不成功,可以使用下面命令尝试:mke2fs -L NITDroid -j -m0 /dev/mmcblk0p5
然后重启手机