PDA

View Full Version : Boot from MMC2 Failed


kalatraz
2007-10-11, 04:21
Can anyone help me troubleshoot this error message? After switching to MMC boot, I get "Boot from mmc2 failed, booting from flash."

N800 running latest firmware. 8GB internal, 2GB external. I reimaged before beginning the dual boot procedure. Used the updated boot menu from genius fanoush. Used gnutar. Did not encounter any unusual error messages throughout. Used Schmot's instructions (except for the size of partitions) for setting up the partitions. Used nmacleod's handy dandy nupgrade to do the rest.

TIA
k

ldrn
2008-01-27, 04:08
I found this while having a similar problem and even reflashed my device to try and fix it.. but for me, the solution was... to edit the bootmenu.conf file and add options both memory cards. Oops. I had the good sense to copy the cloned partition beforehand onto my laptop, but eh, what the heck, it's a new version of Nokia's firmware anyway.

Key point is, for me, even though the "mount" command showed (and still shows!) the partition I had formatted as "/dev/mmcblk0p2", the bootmenu.conf has to have it as "/dev/mmcblk1p2". (This may have been mentioned by others before, but I missed it if so.)

nhanquy
2008-01-27, 04:26
Can anyone help me troubleshoot this error message? After switching to MMC boot, I get "Boot from mmc2 failed, booting from flash."


Usually it means that either you had a corrupted image or you did not point the boot loader the right place to pick up the image for booting.

1. Did you really create and format ext2 partition for the image ?
2. Did you tar correctly to /dev/mmcblk0p2?
3. check the bootmenu.conf item for the image. Are ext2 and mbcache modules loaded? Is the selection item "mmcblk0p2" (for mmc2 the second partition)?

GearJammer
2008-01-28, 03:15
try switching cards and just follow Milhouse's simplified instructions... I was unable to get my 8gb card to work, but didn't have any problems with my 4gb or the 2gb that I just did for my friend. don't know what or why it was like that but I have been booting from my 4gb ever since with no problems... well at least when I remember to hold the menu button

bunanson
2008-01-28, 18:51
try switching cards and just follow Milhouse's simplified instructions... I was unable to get my 8gb card to work, but didn't have any problems with my 4gb or the 2gb that I just did for my friend. don't know what or why it was like that but I have been booting from my 4gb ever since with no problems... well at least when I remember to hold the menu button

Same here, http://www.internettablettalk.com/forums/showthread.php?t=14637.

Apparantly most success are from cloning from a working clone SD, instead of cloning directly from N8x0. And I also success with 1G, 2G, and 4G and failed 8G. Now I have another 8G and a 16G card, will try later this week.


bun

fanoush
2008-01-29, 09:36
Apparantly most success are from cloning from a working clone SD, instead of cloning directly from N8x0.
once filesystem is mounted it does not matter whether the source filesystem is card with ext2 or internal flash with jffs2. Cloning from internal flash or mmc should be same. People reported success even with internal flash (and 16GB cards).

I still think you do something wrong when partitioning, formating or cloning but don't know what it is. But if you want to track this down you can boot into usb network recovery mode and try mounting it by hand from initfs environment and see what is wrong.

Once you login over usb via ssh or telnet try this:

1. insert each module you have in MENU_X_MODULES item (normally mbcache ext2)
insmod /lib/modules/2.6.*/mbcache.ko
insmod /lib/modules/2.6.*/ext2.ko

2. try to mount filesystem like this:
mount -t FSTYPE -o FSOPTIONS /dev/DEVICE /mnt/new_root

DEVICE is partition name in MENU_X_DEVICE (mmcblk0p2)
FSTYPE is filesystem name in MENU_X_FSTYPE (ext2)
FSOPTIONS is mount options (noatime)

with default settings in bootmenu.sh for second partition the line should be

mount -t ext2 -o noatime /dev/mmcblk0p2 /mnt/new_root

Post any errors you see, post output of 'ls -la /mnt/new_root' and 'ls -la /mnt/new_root/usr/sbin'. Then you can unmount it 'umount /mnt/new_root' exit shell and continue with booting.

The 'boot from xx failed' is printed when mount fails or in cannot find executable /mnt/new_root/usr/sbin/init

EDIT: for details about usb networking recovery mode please read included README.txt in initfs_flasher directory

Also when the mount fails post output of 'cat /proc/partitions'

Milhouse
2008-01-30, 18:13
I haven't had any problems cloning to an an 8GB memory card with 7.5GB VFAT and 0.5GB ext2 partitions (either on OS2007 or OS2008, on N800 and N810).

So 8GB SD cards definately can be booted from, I'm not sure why some of you are having problems though - the obvious answer would be that the partitioning has gone awry.

coffeedrinker
2008-01-30, 18:49
Make sure you are using the right partition information in all places. I don't know how the internal flash is numbered on the 810 but I boot from external flash on n800. I have one partition on the device.

For this use /dev/mmcblk1p1

You must also make sure your boot menu is set up to use the same one as well.

The error message is showing that you likely did not point the boot menu to the right device.

Milhouse
2008-01-30, 19:15
/dev/mmcblk0 is always the first memory card:

in the case of the 770 it is the only removable memory card
in the case of the N800 it is the card in the battery bay
in the case of the N810 it is the 2GB internal memory


/dev/mmcblk1 is the second memory card:

in the case of the 770 it doesn't exist
in the case of the N800 it is the SD card under the kick-stand
in the case of the N810 it is the miniSD card under the kick-stand


When cloning on 770 and N800, my choice is to clone the OS to /dev/mmcblk0p2 (ie. second partition on the first memory card aka the internal card).

When cloning on N810, my choice is to clone to /dev/mmcblk1p2 (ie. second partition on the second memory card aka the external card).

The above advice has worked for me every time. My updated cloning script should automatically identify and use the correct memory card and partition (internal or external). There is a bug in the kernel which Fanoush referenced elsewhere which causes the memory card devices to be incorrectly identified which is annoying so be careful when viewing /proc/partitions as it gives bogus information.

:)

sahinem
2008-01-30, 21:47
@fanoush

the output of the commands from usb recovery mode is as follows:


bash: open: command not found
bt ~ # telnet
telnet> open 192.168.10.1
Trying 192.168.10.1...
Connected to 192.168.10.1.
Escape character is '^]'.


BusyBox v1.00 (2007.12.07-09:22+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # insmod /lib/modules/2.6.*/mbcache.ko
/ # insmod /lib/modules/2.6.*/ext2.ko
/ # mount -t ext2 -o noatime /dev/mmcblk0p2 /mnt/new_root
mount: Mounting /dev/mmcblk0p2 on /mnt/new_root failed: Invalid argument
/ # ls -la /mnt/new_root
drwxr-xr-x 2 root root 0 Dec 7 09:31 .
drwxr-xr-x 3 root root 0 Dec 7 09:31 ..
/ # ls -la /mnt/new_root/usr/sbin
ls: /mnt/new_root/usr/sbin: No such file or directory
/ # cat /proc/partitions
major minor #blocks name

31 0 128 mtdblock0
31 1 384 mtdblock1
31 2 2048 mtdblock2
31 3 2048 mtdblock3
31 4 257536 mtdblock4
254 0 8067072 mmcblk0
254 1 5119999 mmcblk0p1
254 2 2947072 mmcblk0p2
254 8 1997312 mmcblk1
254 9 1023999 mmcblk1p1
254 10 973312 mmcblk1p2

i am trying to boot from mmc2 which is 8gb partitioned as 3gb ext2 5gb. fat32 . I have cloned from the internal flash and booting fails. Any ideas of what i have done wrong(partition, cloning or something else) looking at the outputs ?

fanoush
2008-01-31, 07:29
hmm, so the mount failed. when it fails, can you paste end of kernel log? Run 'dmesg' to see it. I wonder if ext2 driver in kernel prints why it doesn't like it. also please run 'cat /proc/modules' to verify that ext2 is in kernel.

fanoush
2008-01-31, 08:45
You may also try to run same insmod and mount commands when booted normally from internal flash and then chrooting to initfs (as root)
# chroot /mnt/initfs
This should not make any difference but I wonder if it does. And then of course you can try same mount in normal root shell but I guess that's something you surely tried after the cloning.

sahinem
2008-01-31, 16:18
the out of dmesg is as follows:

bt ~ # telnet
telnet> open 192.168.10.1
Trying 192.168.10.1...
Connected to 192.168.10.1.
Escape character is '^]'.


BusyBox v1.00 (2007.12.07-09:22+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ # insmod /lib/modules/2.6.*/mbcache.ko
/ # insmod /lib/modules/2.6.*/ext2.ko
/ # mount -t ext2 -o noatime /dev/mmcblk0p2 /mnt/new_root
mount: Mounting /dev/mmcblk0p2 on /mnt/new_root failed: Invalid argument
/ # dmesg
ck"
[ 1.062500] Disabling unused clock "gpt4_fck"
[ 1.062500] Disabling unused clock "gpt4_ick"
[ 1.062500] Disabling unused clock "gpt3_fck"
[ 1.062500] Disabling unused clock "gpt3_ick"
[ 1.062500] Disabling unused clock "gpt2_fck"
[ 1.062500] Disabling unused clock "gpt2_ick"
[ 1.062500] Disabling unused clock "dss2_fck"
[ 1.062500] Bootup reason: sw_rst
[ 1.062500] OMAP GPIO switch handler initializing
[ 1.062500] headphone (GPIO 107) is now disconnected
[ 1.062500] cam_turn (GPIO 12) is now inactive
[ 1.062500] cam_act (GPIO 95) is now inactive
[ 1.062500] bat_cover (GPIO 110) is now closed
[ 1.062500] menelaus 1-0072: Setting voltage 'VMEM' to 1500 mV (reg 0x0a, val 0xb4)
[ 1.078125] menelaus 1-0072: Setting voltage 'VIO' to 2500 mV (reg 0x0a, val 0xb8)
[ 1.125000] omap24xxcam omap24xxcam: sensor is TCM825x
[ 1.156250] menelaus 1-0072: Shutting off 'VIO'
[ 1.171875] menelaus 1-0072: Shutting off 'VMEM'
[ 1.187500] omap24xxcam omap24xxcam: registered device video0 [v4l2]
[ 1.242187] VFS: Mounted root (jffs2 filesystem) readonly.
[ 1.242187] Freeing init memory: 124K
[ 1.265625] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 0 timing 0
[ 1.273437] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 0 timing 0
[ 1.281250] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 0
[ 1.281250] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.281250] mmc0: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.601562] mmcblk0: mmc0:0002 SD 8067072KiB
[ 1.601562] mmcblk0:mmc0: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.601562] p1 p2
[ 1.742187] mmc0: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.742187] mmci-omap mmci-omap.1: command timeout (CMD8)
[ 1.750000] mmc0: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.750000] mmc0: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 1.750000] mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 21 width 0 timing 0
[ 1.750000] menelaus 1-0072: Setting voltage 'VDCDC3' to 3300 mV (reg 0x07, val 0x39)
[ 1.765625] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
[ 1.765625] mmc1: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 21 width 0 timing 0
[ 1.765625] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 21 width 0 timing 0
[ 1.773437] mmci-omap mmci-omap.1: command timeout (CMD8)
[ 1.773437] mmci-omap mmci-omap.1: command timeout (CMD8)
[ 1.773437] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 15 width 0 timing 0
[ 1.773437] menelaus 1-0072: Setting voltage 'VDCDC3' to 2800 mV (reg 0x07, val 0x29)
[ 1.789062] mmc1: clock 400000Hz busmode 1 powermode 2 cs 1 Vdd 15 width 0 timing 0
[ 1.789062] mmc1: clock 400000Hz busmode 1 powermode 2 cs 0 Vdd 15 width 0 timing 0
[ 1.789062] mmci-omap mmci-omap.1: command timeout (CMD8)
[ 1.906250] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 0 timing 0
[ 1.906250] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 0 timing 0
[ 1.914062] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 2 timing 0
[ 1.914062] mmc1: clock 400000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 2 timing 2
[ 1.914062] mmc1: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 2 timing 2
[ 1.921875] mmc1: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 15 width 2 timing 2
[ 1.921875] mmcblk1: mmc1:b368 SD 1997312KiB
[ 1.921875] mmcblk1: p1 p2
[ 3.578125] ether gadget: using random self ethernet address
[ 3.578125] ether gadget: using random host ethernet address
[ 3.593750] usb0: Ethernet Gadget, version: May Day 2005
[ 3.593750] usb0: using musb_hdrc, OUT ep1out IN ep1in STATUS ep2in
[ 3.593750] usb0: MAC 96:b8:49:63:9e:ad
[ 3.593750] usb0: HOST MAC 4e:21:69:a6:b5:83
[ 3.593750] usb0: RNDIS ready
[ 3.593750] musb_hdrc musb_hdrc: MUSB HDRC host driver
[ 3.609375] /home/maemo/kernel/kernel-source-rx-34-2.6.21.0/drivers/usb/core/inode.c: creating file 'devices'
[ 3.609375] /home/maemo/kernel/kernel-source-rx-34-2.6.21.0/drivers/usb/core/inode.c: creating file '001'
[ 3.609375] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
[ 3.609375] musb_hdrc musb_hdrc: supports USB remote wakeup
[ 3.609375] usb usb1: default language 0x0409
[ 3.617187] usb usb1: new device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.617187] usb usb1: Product: MUSB HDRC host driver
[ 3.617187] usb usb1: Manufacturer: Linux 2.6.21-omap1 musb-hcd
[ 3.617187] usb usb1: SerialNumber: musb_hdrc
[ 3.617187] usb usb1: uevent
[ 3.632812] usb usb1: usb_probe_device
[ 3.648437] usb usb1: configuration #1 chosen from 1 choice
[ 3.648437] usb usb1: adding 1-0:1.0 (config #1, interface 0)
[ 3.648437] usb 1-0:1.0: uevent
[ 3.664062] hub 1-0:1.0: usb_probe_interface
[ 3.664062] hub 1-0:1.0: usb_probe_interface - got id
[ 3.664062] hub 1-0:1.0: USB hub found
[ 3.664062] hub 1-0:1.0: 1 port detected
[ 3.664062] hub 1-0:1.0: standalone hub
[ 3.664062] hub 1-0:1.0: individual port power switching
[ 3.664062] hub 1-0:1.0: no over-current protection
[ 3.664062] hub 1-0:1.0: Single TT
[ 3.664062] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
[ 3.664062] hub 1-0:1.0: power on to power good time: 10ms
[ 3.671875] hub 1-0:1.0: 200mA bus power budget for each child
[ 3.671875] hub 1-0:1.0: local power source is good
[ 3.671875] hub 1-0:1.0: enabling power on all ports
[ 3.671875] /home/maemo/kernel/kernel-source-rx-34-2.6.21.0/drivers/usb/musb/tusb6010.c musb_platform_enable: dma not reactivated
[ 3.781250] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
[ 3.812500] /home/maemo/kernel/kernel-source-rx-34-2.6.21.0/drivers/usb/core/inode.c: creating file '001'
[ 5.812500] hub 1-0:1.0: hub_suspend
[ 5.812500] usb usb1: usb auto-suspend
[ 6.601562] mmc0: clock 48000000Hz busmode 2 powermode 3 cs 0 Vdd 18 width 2 timing 2
[ 6.601562] menelaus 1-0072: Setting voltage 'VMMC' to 3000 mV (reg 0x0a, val 0xb8)
[ 6.921875] mmc1: clock 48000000Hz busmode 2 powermode 3 cs 0 Vdd 15 width 2 timing 2
[ 6.921875] menelaus 1-0072: Setting voltage 'VDCDC3' to 2800 mV (reg 0x07, val 0x29)
[ 13.687500] tusb_otg_ints 743: Forcing disconnect (no interrupt)
[ 13.828125] musb_stage2_irq 817: SUSPEND (b_idle) devctl 91 power e0
[ 14.195312] tusb_otg_ints 743: Forcing disconnect (no interrupt)
[ 15.429687] musb_stage2_irq 817: SUSPEND (b_idle) devctl 99 power e0
[ 15.859375] musb_stage0_irq 669: BUS RESET as b_idle
[ 15.976562] musb_stage0_irq 669: BUS RESET as b_peripheral
[ 16.101562] musb_hdrc periph: enabled ep2in for int IN, dma, maxpacket 16
[ 16.101562] usb0: high speed config #1: 100 mA, Ethernet Gadget, using CDC Ethernet
[ 16.101562] musb_hdrc periph: enabled ep1in for bulk IN, dma, maxpacket 512
[ 16.101562] musb_hdrc periph: enabled ep1out for bulk OUT, dma, maxpacket 512
[ 16.101562] musb_hdrc periph: enabled ep2in for int IN, dma, maxpacket 16
[ 76.585937] mmc0: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 76.593750] menelaus 1-0072: Setting voltage 'VMMC' to 3000 mV (reg 0x0a, val 0xb8)
[ 76.609375] mmc0: clock 48000000Hz busmode 2 powermode 2 cs 0 Vdd 18 width 2 timing 2
[ 76.710937] mmcblk0: error 1 transferring data
[ 76.710937] end_request: I/O error, dev mmcblk0, sector 10240002
[ 76.710937] EXT2-fs: unable to read superblock
[ 81.710937] mmc0: clock 48000000Hz busmode 2 powermode 3 cs 0 Vdd 18 width 2 timing 2
[ 81.710937] menelaus 1-0072: Setting voltage 'VMMC' to 3000 mV (reg 0x0a, val 0xb8)
/ # cat /proc/modules
ext2 51080 0 - Live 0xbf00b000
mbcache 7108 1 ext2, Live 0xbf008000
g_ether 26416 0 - Live 0xbf000000
/ #


Also insmod gave the same result in normal root shell and after # chroot /mnt/initfs which is 'File exists'.

sahinem
2008-01-31, 16:34
Strange thing is that in usb network recovery mode i inserted my 2 gb mmc in the internal slot, telneted to 192.168.10.1 and i ran the below commands
/ # insmod /lib/modules/2.6.*/mbcache.ko
/ # insmod /lib/modules/2.6.*/ext2.ko
/ # mount -t ext2 -o noatime /dev/mmcblk0p2 /mnt/new_root

and all executed without errors then i esc back to the boot menu and switched the 2gb with 8 gb mmc and selected to boot from mmc2 in the menu and 8gb mmc booted without failure. then i rebooted the tablet and faced again my nightmare boot failed error. It means that my clone is not corrupted nor wrong but somehow it can not mount....

fanoush
2008-01-31, 16:41
ok so this is the problem
[ 76.710937] mmcblk0: error 1 transferring data
[ 76.710937] end_request: I/O error, dev mmcblk0, sector 10240002
[ 76.710937] EXT2-fs: unable to read superblock
looks like faulty card, or some problem in mmc driver, i think sector is 512bytes so the number it wants is ok (beginnning of second partition where ext2 superblock should be). You can try flashing back original nokia kernel if it makes a difference. Also try (with both kernels) to read whole card via 'dd if=/dev/mmcblk0 of=/dev/null bs=512' and see kernel log for i/o errors of bad blocks. This may take a while. You may run 'tail -f /proc/kmsg' to watch log at runtime. If you still have i/o errors no matter what, you can try to reformat the card with Panasonic SD formatter (http://panasonic.jp/support/global/cs/sd/download/sd_formatter.html).

sahinem
2008-01-31, 18:59
you can try to reformat the card with Panasonic SD formatter (http://panasonic.jp/support/global/cs/sd/download/sd_formatter.html).

this did the trick thank you very much for your assistance

nhanquy
2008-01-31, 21:45
I did not have any problems with 8G cards but could not boot with the new 16 GB. The SD formatter solved the problem!

bunanson
2008-02-02, 09:48
Ditto.
More details here, http://www.internettablettalk.com/forums/showthread.php?p=137051#post137051, thread #24


bun

iolsmit
2008-02-21, 00:35
I found this while having a similar problem and even reflashed my device to try and fix it.. but for me, the solution was... to edit the bootmenu.conf file and add options both memory cards. Oops. I had the good sense to copy the cloned partition beforehand onto my laptop, but eh, what the heck, it's a new version of Nokia's firmware anyway.

Key point is, for me, even though the "mount" command showed (and still shows!) the partition I had formatted as "/dev/mmcblk0p2", the bootmenu.conf has to have it as "/dev/mmcblk1p2". (This may have been mentioned by others before, but I missed it if so.)

Many thanks for this hint !

For my N810 I took out my external memory card while doing the cloning process. Then I booted from the internal memory card, second partition ext2 formated - everything worked as expected.

But then I plugged in the external memory card and rebooted and it stopped working, it always said: "Boot from mmc2 failed, booting from flash." I checked the filesystem and was able to mount the partition but booting didn't work. So I included the troubleshooting boot sequence tips (http://www.internettablettalk.com/forums/showpost.php?p=137088&postcount=2) and got no output when selecting mmc2 -> it just went booting from flash.

After numerous recloning runs and reflashing the initfs :( I modified the bootmenu.sh and reflashed the initfs again. Below is what I added (MENU_4...) and what makes the N810 boot from the mmcblk0p2 partition although it is the mmcblk1p2 partition in the boot setup -> maybe a bug ? :confused:


MENU_1_NAME="Internal flash"
MENU_1_ID="flash"

MENU_2_NAME="MMC card"
MENU_2_ID="mmc"

MENU_3_NAME="mmcblk0p2 MMC card, partition 2, ext2"
MENU_3_ID="mmc2"
MENU_3_DEVICE="mmcblk0p2"
MENU_3_MODULES="mbcache ext2"
MENU_3_FSTYPE="ext2"
MENU_3_FSOPTIONS="noatime"

MENU_4_NAME="mmcblk1p2 MMC card, partition 2, ext2"
MENU_4_ID="mmc1"
MENU_4_DEVICE="mmcblk1p2"
MENU_4_MODULES="mbcache ext2"
MENU_4_FSTYPE="ext2"
MENU_4_FSOPTIONS="noatime"

MENU_5_NAME="USB hard drive"
MENU_5_ID="usb"

MENU_6_NAME="Power off (when not on charger)"
MENU_6_ID="off"

fanoush
2008-02-21, 06:34
N810 boot from the mmcblk0p2 partition although it is the mmcblk1p2 partition in the boot setup -> maybe a bug ? :confused:

Yes, it is a known bug, see http://bugs.maemo.org/show_bug.cgi?id=2747, it was discussed here in the forum few times. Workaround here http://www.internettablettalk.com/forums/showthread.php?p=124657#post124657 or here http://www.internettablettalk.com/forums/showthread.php?p=145155#post145155