2012年7月30日 星期一

Manage Partitions of the Disk Image with loop device

loop device is a pseudo-device that makes a file accessible as a block device.
We can use loop device to manage partitions of the disk image.

Make sure you loop device driver is configured to support loop device partitions.
In my FC16 box, I manually add kernel command:
loop.max_part=63
Here is an example when I attach a disk image with losetup.

$ cat /proc/partitions
major minor  #blocks  name

   8        0   33554432 sda
   8        1     512000 sda1
   8        2   33041408 sda2
  11        0    1048575 sr0
   8       16  104857600 sdb
   8       17  104856576 sdb1
 253        0    4128768 dm-0
 253        1   28901376 dm-1

$ losetup -f disk_image
$ cat /proc/partitions
major minor  #blocks  name

   7        0    1048576 loop0
   7        1      10240 loop0p1
   7        2    1037312 loop0p2

   8        0   33554432 sda
   8        1     512000 sda1
   8        2   33041408 sda2
  11        0    1048575 sr0
   8       16  104857600 sdb
   8       17  104856576 sdb1
 253        0    4128768 dm-0
 253        1   28901376 dm-1

$ losetup -d /dev/loop0


2012年7月26日 星期四

Raspberry Pi is Arrived!!

Wait for a long time and finally arrived!! Raspberry Pi !!

Box (cute)
Raspberry pi is a credit-card sized computer.
Running Raspbian “wheezy” (2012-07-15)
My USB keyboard/mouse works in Raspberry pi.
I think I have to buy a USB Wifi dongle and USB hub.

Todo List
  • As a media center
    • Watch DVB (I have a unused DVB USB dongle)
    • Play DVD (attach a USB DVD-ROM)
    • Play video/audio file
  • As a download server
    • Attach a USB HDD
    • Run p2p clients
  • Create a customized image
    • boot, kernel, ... ,etc.
    • HW optimization
  • Run Android
    •  RAM is too small?
  • More....
[Ref]








2012年7月18日 星期三

Android: modify partition layouts

Storage is never enough!
Fortunately, we can pass partition layouts via kernel command line without kernel modification.
lbcoder, Thanks for post this! Custom partition layouts, ZERO brick risk!

My Nexus One default partition layouts:

# cat /proc/mtd
dev:    size   erasesize  name          size
mtd0: 000e0000 00020000 "misc"          896K
mtd1: 00400000 00020000 "recovery"      4M
mtd2: 00380000 00020000 "boot"          3M
mtd3: 09100000 00020000 "system"        145M
mtd4: 05f00000 00020000 "cache"         95M
mtd5: 0c440000 00020000 "userdata"      196M

# msm_nand MTD info during kernel booting
[   13.353302] msm_nand: DEV_CMD1: f00f3000
[   13.357299] msm_nand: NAND_EBI2_ECC_BUF_CFG: 1ff
[   13.361724] Creating 6 MTD partitions on "msm_nand":
[   13.366790] 0x000003ee0000-0x000003fc0000 : "misc"
[   13.373260] 0x000004240000-0x000004640000 : "recovery"
[   13.381561] 0x000004640000-0x0000049c0000 : "boot"
[   13.386108] 0x0000049c0000-0x00000dac0000 : "system"
[   13.538635] 0x00000dac0000-0x0000139c0000 : "cache"
[   13.637023] 0x0000139c0000-0x00001fe00000 : "userdata"
 
cache partition is too large to me.
I would like to change partition layouts to

dev:    size   erasesize  name          size
mtd0: 000e0000 00020000 "misc"          896K
mtd1: 00400000 00020000 "recovery"      4M
mtd2: 00380000 00020000 "boot"          3M
mtd3: 09100000 00020000 "system"        145M
mtd4: 02800000 00020000 "cache"         95M->40M
mtd5: 0FB00000 00020000 "userdata"      196M->251M

userdata partition up to 251M!

So, I need add kernel command line like below
mtdparts=msm_nand:896k@0x3ee0000(misc),4M@0x4240000(recovery),3M@0x4640000(boot),145M@0x49c0000(system),40M@0xdac0000(cache),251M@0x102C0000(userdata)
But how?
I do it manually. We need to modify both recovery and boot images.
  1. Boot to recovery mode
  2. Extract recovery image from recovery partition and use hex editor to add kernel command line into recovery image
  3. Flash back modified recovery image then boot to recovery again
  4. Check MTD information, we are done.
    [    9.726074] msm_nand: DEV_CMD1: f00f3000
    [    9.726257] msm_nand: NAND_EBI2_ECC_BUF_CFG: 1ff
    [    9.726440] 6 cmdlinepart partitions found on MTD device msm_nand
    [    9.726684] Creating 6 MTD partitions on "msm_nand":
    [    9.726837] 0x000003ee0000-0x000003fc0000 : "misc"
    [    9.728668] 0x000004240000-0x000004640000 : "recovery"
    [    9.733581] 0x000004640000-0x000004940000 : "boot"
    [    9.737548] 0x0000049c0000-0x00000dac0000 : "system"
    [    9.893493] 0x00000dac0000-0x0000102c0000 : "cache"
    [    9.937652] 0x0000102c0000-0x00001fdc0000 : "userdata"
     
  5. Flash zip from SD (I use CM7.2)
  6. Extract boot image from boot partition and use hex editor to add kernel command line into boot image
  7. Flash back modified boot image then reboot
  8. Boot to CM, then check MTD information.