Editing Advanced booting

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
{{out of date}}
+
This article covers advanced booting procedures and configuration options.
-
 
+
-
This article covers advanced booting procedures and configuration options. For the vast majority of people [[booting from a flash card]] will cover everything they need to know.
+
== Multi-boot ==
== Multi-boot ==
-
The process for setting up a multi-boot is similar to [[Booting from a flash card]].
+
The process for setting up a multi-boot is very similar to [[Booting from a flash card]].
-
It's a good idea to ensure that the first partition is a FAT/data partition - this keeps things simple.
+
It's a good idea to makes sure the first partition is a fat/data partition - this keeps things simple.
-
A sample partition layout on an 8Gb card might be:
+
A sample partition layout on an 8Gb card may be:
* 2GB primary vfat data
* 2GB primary vfat data
* 2GB primary everyday
* 2GB primary everyday
Line 16: Line 14:
* 512MB logical test3 (diablo)
* 512MB logical test3 (diablo)
-
Be aware that the kernel initfs supports a limited number of partitions; this can be extended to 6 but no further. This requires editing /home/user/local/bin/initfs_flasher/initfs.bootmenu.jffs2 to add the dev nodes using mknod
+
Be aware that the kernel/initfs only supports a limited number of partitions; this can easily be extended to 6 but no further. This requires editing /home/user/local/bin/initfs_flasher/initfs.bootmenu.jffs2 to add the dev nodes using mknod
(eg: mknod -m600 initfs/dev/mmcblk0p5 b 254 5)
(eg: mknod -m600 initfs/dev/mmcblk0p5 b 254 5)
Line 25: Line 23:
I used this script (which now works fine)
I used this script (which now works fine)
-
<source lang="bash">
+
<pre>
#!/bin/bash
#!/bin/bash
Line 69: Line 67:
rmdir /tmp/jffs2
rmdir /tmp/jffs2
rm -rf $IMAGE_DIR
rm -rf $IMAGE_DIR
-
</source>
+
 
 +
</pre>
== Boot messages ==
== Boot messages ==
Line 80: Line 79:
Log into the tablet and remount initfs so you can edit it directly. (If this '''doesn't''' make you nervous then you should stop now!)
Log into the tablet and remount initfs so you can edit it directly. (If this '''doesn't''' make you nervous then you should stop now!)
-
mount -o remount,rw /mnt/initfs
+
  mount -o remount,rw /mnt/initfs
Now grab some kernel modules from here:
Now grab some kernel modules from here:
-
http://fanoush.wz.cz/maemo/modules-diablo-2.6.21-200842maemo1.tar.gz
+
  http://fanoush.wz.cz/maemo/modules-2.2007.50-2-custom.tar.gz
and copy the 4 modules you find in
and copy the 4 modules you find in
-
./drivers/video/console/
+
  ./drivers/video/console/
to
to
-
/mnt/initfs/lib/modules/`uname -r`/
+
  /mnt/initfs/lib/modules/`uname -r`/
I extracted them on my host and did:
I extracted them on my host and did:
-
scp drivers/video/console/* root@nut:/mnt/initfs/lib/modules/2.6.21-omap1/
+
  scp drivers/video/console/* root@nut:/mnt/initfs/lib/modules/2.6.21-omap1/
-
Now, for each bootmenu where you want a bootlog, edit <code>/mnt/initfs/bootmenu.sh</code> and add
+
Now, for each bootmenu where you want a bootlog, edit /mnt/initfs/bootmenu.conf and add
-
softcursor bitblit font fbcon
+
  softcursor bitblit font fbcon
-
to any MENU_N_MODULES= lines
+
to any MODULE_N_MODULES= lines
Also add a line like this (where MENU_2 will differ for you):
Also add a line like this (where MENU_2 will differ for you):
-
MENU_2_FBMODE="auto"
+
  MENU_2_FBMODE="auto"
eg:
eg:
-
MENU_4_NAME="Diablo Test"
+
  MENU_4_NAME="Diablo Test"
-
MENU_4_ID="mmc5"
+
  MENU_4_ID="mmc5"
-
MENU_4_DEVICE="${INT_CARD}p5"
+
  MENU_4_DEVICE="${INT_CARD}p5"
-
MENU_4_MODULES="mbcache ext2 softcursor bitblit font fbcon"
+
  MENU_4_MODULES="mbcache ext2 softcursor bitblit font fbcon"
-
MENU_4_FSTYPE="ext2"
+
  MENU_4_FSTYPE="ext2"
-
MENU_4_FSOPTIONS="noatime"
+
  MENU_4_FSOPTIONS="noatime"
-
MENU_4_FBMODE="auto"
+
  MENU_4_FBMODE="auto"
-
[ -d "/sys/block/${INT_CARD}/${MENU_4_DEVICE}" ] || MENU_4_NAME="(${MENU_4_NAME}) N/A"
+
  [ -d "/sys/block/${INT_CARD}/${MENU_4_DEVICE}" ] || MENU_4_NAME="(${MENU_4_NAME}) N/A"
Finally, remount the initfs as ro and reboot.
Finally, remount the initfs as ro and reboot.
-
mount -oremount,ro /mnt/initfs/
+
  mount -oremount,ro /mnt/initfs/
Once your system starts, don't forget to run
Once your system starts, don't forget to run
-
/mnt/initfs/usr/bin/fb_update_mode manual
+
  /mnt/initfs/usr/bin/fb_update_mode manual
or the display will run slowly.
or the display will run slowly.
Line 125: Line 124:
If you are brave you can edit your initfs directly if you mount initfs read-write:
If you are brave you can edit your initfs directly if you mount initfs read-write:
-
mount -oremount,rw /mnt/initfs
+
  mount -oremount,rw /mnt/initfs
-
vi $random_files
+
  vi $random_files
Don't forget to put it back:
Don't forget to put it back:
-
mount -oremount,ro /mnt/initfs
+
  mount -oremount,ro /mnt/initfs
-
This can be randomly dangerous if initfs partition is almost full (true for anything before Diablo) because your initfs can run out space whilst you are saving due to the way jffs2/flash systems work. Basically you may end in situation when even 'rm file' returns 'no space left on device'. Diablo update enlarged initfs partition from 2MB to 4MB so there is enough free space to make jffs2 garbage collector work properly (unless you fill it up again).
+
This can be randomly dangerous because your initfs can run out space whilst you are saving due to the way jffs2/flash systems work.
A safer approach (taken from fanoush's script) is:
A safer approach (taken from fanoush's script) is:
-
cd somewhere_on_a_linux_fs
+
  cd somewhere_on_a_linux_fs
-
mkdir initfs.orig
+
  cp -a /mnt/initfs initfs
-
mount -t jffs2 /dev/mtdblock3 initfs.orig
+
  # edit intifs/...
-
cp -a initfs.orig initfs
+
-
umount initfs.orig
+
-
# edit intifs/...
+
Then, once it's all edited and ready, you create a jffs2 and burn it.
Then, once it's all edited and ready, you create a jffs2 and burn it.
-
mkfs.jffs2 -r initfs -o my_initfs.jffs2 -e 128 -l -n
+
  mkfs.jffs2 -r initfs -o my_initfs.jffs2 -e 128 -l -n
-
sync
+
  sync
-
chroot /mnt/initfs mount -t jffs2 -o remount,ro /dev/mtdblock3 /
+
  chroot /mnt/initfs mount -t jffs2 -o remount,ro /dev/mtdblock3 /
-
echo " *** caching old initfs to memory (for crash prevention)"
+
  echo " *** caching old initfs to memory (for crash prevention)"
-
# block level, probably useless
+
  # block level, probably useless
-
dd if=/dev/mtdblock3 of=/dev/null bs=65536 2>/dev/null
+
  dd if=/dev/mtdblock3 of=/dev/null bs=65536 2>/dev/null
-
# file level, read all interesting stuff (should be enough to cache dsme and bme)
+
  # file level, read all interesting stuff (should be enough to cache dsme and bme)
-
tar cf - /mnt/initfs/usr /mnt/initfs/lib /mnt/initfs/bin /mnt/initfs/sbin >/dev/null 2>/dev/null
+
  tar cf - /mnt/initfs/usr /mnt/initfs/lib /mnt/initfs/bin /mnt/initfs/sbin >/dev/null 2>/dev/null
-
flash_eraseall -j /dev/mtd3
+
  flash_eraseall -j /dev/mtd3
-
echo " *** flashing $1 image ..."
+
  echo " *** flashing $1 image ..."
-
nandwrite -a -p /dev/mtd3 $1
+
  nandwrite -a -p /dev/mtd3 $1
-
Then reboot (<code>/sbin/reboot</code>) as soon as possible. dsme and bme daemons are running from (old) initfs and by reflashing underlying filesystem you just cut the branch they are sitting on. Caching done before flashing does not solve it completely.
+
 
 +
At this point you will probably realise that grabbing fanoush's script and inserting a few extra commands to drop you to a shell etc is a lot easier than doing it all by hand.  
-
At this point you will probably realise that grabbing fanoush's script and inserting a few extra commands to drop you to a shell etc is a lot easier than doing it all by hand. Or you may start another shell while initfs_flash script is waiting for your answer (include telnet/dropbear/bootmenu.conf?) and modify stuff in initfs_flasher/initfs/.
 
===Devices===
===Devices===
The standard initfs is missing some devices that may be useful on sd cards with lots of partitions so:
The standard initfs is missing some devices that may be useful on sd cards with lots of partitions so:
 +
mknod -m600 initfs/dev/mmcblk0p3 b 254 3 2>/dev/null
 +
mknod -m600 initfs/dev/mmcblk0p4 b 254 4 2>/dev/null
 +
mknod -m600 initfs/dev/mmcblk0p5 b 254 5 2>/dev/null
 +
mknod -m600 initfs/dev/mmcblk0p6 b 254 6 2>/dev/null
 +
mknod -m600 initfs/dev/mmcblk0p7 b 254 7 2>/dev/null
-
<pre>
+
mknod -m600 initfs/dev/mmcblk1p3 b 254 11 2>/dev/null
-
mknod -m600 initfs/dev/mmcblk0p3 b 254 3 2>/dev/null
+
mknod -m600 initfs/dev/mmcblk1p4 b 254 12 2>/dev/null
-
mknod -m600 initfs/dev/mmcblk0p4 b 254 4 2>/dev/null
+
mknod -m600 initfs/dev/mmcblk1p5 b 254 13 2>/dev/null
-
mknod -m600 initfs/dev/mmcblk0p5 b 254 5 2>/dev/null
+
mknod -m600 initfs/dev/mmcblk1p6 b 254 14 2>/dev/null
-
mknod -m600 initfs/dev/mmcblk0p6 b 254 6 2>/dev/null
+
mknod -m600 initfs/dev/mmcblk1p7 b 254 15 2>/dev/null
-
mknod -m600 initfs/dev/mmcblk0p7 b 254 7 2>/dev/null
+
-
 
+
-
mknod -m600 initfs/dev/mmcblk1p3 b 254 11 2>/dev/null
+
-
mknod -m600 initfs/dev/mmcblk1p4 b 254 12 2>/dev/null
+
-
mknod -m600 initfs/dev/mmcblk1p5 b 254 13 2>/dev/null
+
-
mknod -m600 initfs/dev/mmcblk1p6 b 254 14 2>/dev/null
+
-
mknod -m600 initfs/dev/mmcblk1p7 b 254 15 2>/dev/null
+
-
</pre>
+
-
 
+
-
[[Category:Power users]]
+
-
[[Category:Diablo]]
+

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)

Templates used on this page: