Partitioning a flash card

(Initial import of "Partitioning an MMC card")
m (Reverted edits by 188.143.232.111 (Talk) to last revision by sixwheeledbeast)
 
(34 intermediate revisions not shown)
Line 1: Line 1:
-
{{Midgard article}}
+
'''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.'''
-
'''Note:''' This procedure has been tested on a Nokia 770 with ITOS 3.2006.49-2
+
For N900 see [[Repartitioning_the_flash]] and [[Changing the eMMC filesystem]]
-
'''WARNING: WHEN PARTITIONING AND FORMATTING YOUR MMC CARD, ALL DATA WILL BE ERASED. YOU SHOULD CREATE A COPY ON YOUR DESKTOP PC IF THERE IS ANY VALUABLE DATA INSIDE.'''
+
== Install the necessary packages and create partitions ==
-
== Get root access ==
+
'''Note:''' on the N800 and N810 the filesystem numbering can be a little confusing.
-
See [[root access]].
+
* The '''external''' card device is /dev/mmcblk1 (mounted at /media/mmc1)
 +
* The '''internal''' card device is /dev/mmcblk0 (mounted at /media/mmc2)
-
== Install the needed packages and create partitions ==
+
So if you plan to format the extern
 +
umount /media/mmc2
 +
sfdisk /dev/mmcblk0 << EOF
 +
1,15000,6
 +
15001,,
 +
 +
 +
EOF
-
'''Note:''' on the N8X0 the filesystem mounted under /media/mmc1 is the external media card and the internal card is mounted under /media/mmc2. the device that is mounted under /media/mmc1 is /dev/mmcblk1 and not mmcblk0 that is mounted under /media/mmc2. If you plan to format the external media card replace mmcblk0p with mmcblk1p
+
'''** Note **''' "<< EOF" '' and'' "EOF" '' are required text if the commands are in a script file but are NOT entered if you are typing the commands into a terminal/shell. In the second case, sfdisk will require the Enter key be pressed, instead of blank lines, to sfdisk's prompts for any unused partitions. 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.''
-
In a console on your tablet, as root, run:
+
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.
-
<pre>
+
-
# apt-get install e2fsprogs
+
-
# umount /media/mmc1
+
-
# umount /media/mmc2 (for N800 or N810)
+
-
# sfdisk /dev/mmcblk0
+
-
/dev/mmcblk0p1:1,15000,6
+
-
/dev/mmcblk0p2:15001,,
+
-
/dev/mmcblk0p3:
+
-
/dev/mmcblk0p4:
+
-
</pre>
+
-
This will create two partitions in a 1GB RS-MMC card: the first one is VFAT (that's what number 6 means); the second one is LINUX_83. The size of the first one is almost 480MB (that's the meaning of the 15000); the second one is sized till the end of the card (that's what ,, means). Partitions third and fourth are empty. You may calculate your partitions based in my description, or read more about SFDISK. (Actually 15000 means cylinders, being each one of 32KB. So that 15000 cylinder x 32 Kbytes/cylinder = 480Mbytes. This means that 30000 cylinder x 32 Kbytes/cylinder = 960Mbytes). I suggest you to copy my example and just modify it slightly.
+
The arguments for [http://linux.die.net/man/8/sfdisk 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 ([http://www.win.tue.nl/~aeb/partitions/partition_types-1.html complete list])
-
It is supposed that without any previous knowledge you should be able to accomplish the whole procedure. Ask for help in case something goes wrong. I'll be happy to help you at the following e-mail address: sebastian.maemo{AT}gmail.com
+
A cylinder is a 32KB block on a flash card, so 15,000 cylinders equates to 480,000KB (approx. 480MB).
== Format the partitions ==
== Format the partitions ==
 +
 +
Once you have created the required partition table, you will need to initialise the filesystems.
Type as root:
Type as root:
-
<pre>
+
 
-
# mkdosfs /dev/mmcblk0p1
+
mkdosfs /dev/mmcblk0p1
-
# shutdown -r now
+
shutdown -r now
-
</pre>
+
 
-
After it reboots, then open an Xterm and type again as root:
+
After it reboots, then open Xterm and, as root, run:
-
<pre>
+
 
-
# mke2fs /dev/mmcblk0p2
+
mke2fs /dev/mmcblk0p2
-
# shutdown -r now
+
shutdown -r now
-
</pre>
+
== Mounting the partitions ==
== Mounting the partitions ==
-
The VFAT partition will be mounted by the system automagically at start-up. To mount the EXT2 partition you must open an Xterm and type as root:
+
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:
-
<pre>
+
 
-
# insmod /mnt/initfs/lib/modules/current/ext2.ko
+
insmod /mnt/initfs/lib/modules/$(uname -r)/mbcache.ko
-
# mount /dev/mmcblk0p2 /media/mmc2
+
insmod /mnt/initfs/lib/modules/$(uname -r)/ext2.ko
-
</pre>
+
mount /dev/mmcblk0p2 /media/mmc2
-
N8X0 tablets require mbcache.ko to be loaded before ext2.ko. Find this module file in /mnt/initfs/lib/modules, and run ''insmod'' on it before running the two commands above.
+
 
 +
(Note: /media/mmc2 will already have the VFAT partition mounted. Perhaps we should create a directory in /media and mount to that instead?)
 +
 
 +
[[Category:Power users]]
 +
[[Category:Wiki page of the day]]
-
[[Category:Development]]
+
[[Category:Power users]]
-
[[Category:Midgard wiki]]
+

Latest revision as of 13:08, 10 August 2014

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.

For N900 see Repartitioning_the_flash and Changing the eMMC filesystem

[edit] 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 extern

umount /media/mmc2
sfdisk /dev/mmcblk0 << EOF
1,15000,6
15001,,


EOF

** Note ** "<< EOF" and "EOF" are required text if the commands are in a script file but are NOT entered if you are typing the commands into a terminal/shell. In the second case, sfdisk will require the Enter key be pressed, instead of blank lines, to sfdisk's prompts for any unused partitions. 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).

[edit] 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

[edit] 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?)