Partitioning a flash card

(Install the necessary packages and create partitions)
(Install the necessary packages and create partitions)
Line 24: Line 24:
  EOF
  EOF
-
'''** Note **''' "<< EOF" and "EOF" are NOT required text, blank lines are being entered to sfdisk's prompts for partition parameters. Keep pressing the Enter key until sfdisk has finished prompting for the partitions, then you will need to enter "y" to confirm you want to actually write the changes to the card.
+
'''** Note **''' "<< EOF" ''and'' "EOF" ''are NOT required text, blank lines are being entered to sfdisk's prompts for partition parameters. Keep pressing the Enter key until sfdisk has finished prompting for the partitions, then you will need to enter "y" to confirm you want to actually write the changes to the card.''
This example will create two partitions in a 1GB flash card: the first one is FAT16 (that's what number 6 means), and the second one is the default Linux native partition (83). If you are using a card larger than 2GB, use "c" (FAT32 LBA) instead of "6".  The size of the first one is almost 480MB (that's the meaning of the 15000), and the second one is sized till the end of the card (that's what ,, means). Partitions three and four are empty.
This example will create two partitions in a 1GB flash card: the first one is FAT16 (that's what number 6 means), and the second one is the default Linux native partition (83). If you are using a card larger than 2GB, use "c" (FAT32 LBA) instead of "6".  The size of the first one is almost 480MB (that's the meaning of the 15000), and the second one is sized till the end of the card (that's what ,, means). Partitions three and four are empty.

Revision as of 00:45, 15 October 2010

WARNING: Partitioning your flash card will delete all data of the card, so be sure to back up any important data to a computer or another flash card.

Install the necessary packages and create partitions

Note: on the N800 and N810 the filesystem numbering can be a little confusing.

  • The external card device is /dev/mmcblk1 (mounted at /media/mmc1)
  • The internal card device is /dev/mmcblk0 (mounted at /media/mmc2)

So if you plan to format the external media card you will need to replace mmcblk0p with mmcblk1p in the recipe below.

First, you will need root access.

In Xterm on your tablet, run:

apt-get install e2fsprogs
umount /media/mmc1
umount /media/mmc2
sfdisk /dev/mmcblk0 << EOF
1,15000,6
15001,,


EOF

** Note ** "<< EOF" and "EOF" are NOT required text, blank lines are being entered to sfdisk's prompts for partition parameters. Keep pressing the Enter key until sfdisk has finished prompting for the partitions, then you will need to enter "y" to confirm you want to actually write the changes to the card.

This example will create two partitions in a 1GB flash card: the first one is FAT16 (that's what number 6 means), and the second one is the default Linux native partition (83). If you are using a card larger than 2GB, use "c" (FAT32 LBA) instead of "6". The size of the first one is almost 480MB (that's the meaning of the 15000), and the second one is sized till the end of the card (that's what ,, means). Partitions three and four are empty.

The arguments for sfdisk are:

  • The device node to use for the partition
  • The start cylinder on the card
  • The end cylinder on the card (leave blank to have the partition go to the end of the disk)
  • The filesystem type (complete list)

A cylinder is a 32KB block on a flash card, so 15,000 cylinders equates to 480,000KB (approx. 480MB).

Format the partitions

Once you have created the required partition table, you will need to initialise the filesystems.

Type as root:

mkdosfs /dev/mmcblk0p1
shutdown -r now

After it reboots, then open Xterm and, as root, run:

mke2fs /dev/mmcblk0p2
shutdown -r now

Mounting the partitions

The VFAT partition will be mounted by the system automagically at start-up. To mount the EXT2 partition we need to load the kernel modules, so open Xterm and, as root, type:

insmod /mnt/initfs/lib/modules/$(uname -r)/mbcache.ko
insmod /mnt/initfs/lib/modules/$(uname -r)/ext2.ko
mount /dev/mmcblk0p2 /media/mmc2

(Note: /media/mmc2 will already have the VFAT partition mounted. Perhaps we should create a directory in /media and mount to that instead?)