MX28 Linux upgrade

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MX28 Linux upgrade

2,917 Views
vladimirovseych
Contributor III

Hello, Dear Everyone!

I'm trying to update firmware on my own board (MX28+NAND+OpenWrt). My partition is:

mtd0mtd1mtd2mtd3mtd4
MTDubootuboot_envfdtkernelroot
Size3M256k128k5M-
UBIroofsrootfs_data
Size40M-

My bootcmd:

  • nand read 0x41000000 fdt ${filesize_fdt};
  • nand read 0x42000000 kernel ${filesize_kernel};
  • bootm 0x42000000 - 0x41000000

My bootargs:

console=ttyAPP4,115200 rootfstype=ubifs ubi.mtd=4 root=ubi0:rootfs rw mtdparts=gpmi-nand:3m(bootloader)ro,256k(environment),128k(fdt),5m(kernel),-(root)

I can update my system succesfully with U-Boot:

  • tftp 0x42000000 my_board.dtb ;       /* Device Tree */
  • nand erase.part fdt ;
  • nand write 0x42000000 fdt ${filesize} ;
  • tftp 0x42000000 openwrt-mxs-uImage ; /* Kernel */
  • nand erase.part kernel ;
  • nand write 0x42000000 kernel ${filesize} ;
  • tftp 0x42000000 rootfs.ubifs ;       /* UBIFS rootfs Image */
  • nand erase.part root ;
  • ubi part root ;
  • ubi create rootfs 0x2A00000 ;
  • ubi create rootfs_data ;
  • ubi write 0x42000000 rootfs ${filesize} ;

But I want to update the system on working Linux. I've read about sysupgrade and found that it doesn't support automatic upgrade.

So I'm trying to create a simple updating script. First of all, sysupgrade script was cutted to few functions:

#!/bin/sh

. /lib/functions.sh

. /lib/functions/system.sh

mkdir /tmp/root

kill_remaining TERM

sleep 3

kill_remaining KILL

v "Switching to ramdisk..."

run_ramfs

It works correctly, and I can switch to RAM.

Next step is updating volumes. fdt and kernel was updated correctly with mtd erase/write. But when I try to rewrite ubi0_0 (rootfs), I see:

@TestTest:/# ubiupdatevol dev/ubi0_0 /tmp/root/rootfs.ubifs

[  853.082273] UBI error: ubi_open_volume: cannot open device 0, volume 0, error -16

ubiupdatevol: can't open 'dev/ubi0_0': Device or resource busy

What's next? Can you help me with this issue?

Thanks in advance,

Vladimir

Labels (2)
0 Kudos
Reply
5 Replies

1,972 Views
igorpadykov
NXP Employee
NXP Employee

I believe it makes sense to post it also on mtd mail list

Memory Technology Device (MTD) Subsystem for Linux.

Best regards

igor

0 Kudos
Reply

1,972 Views
vladimirovseych
Contributor III

Thank you for suggestions. But I have read and tried that all already, wrote at openwrt and linux forums - no answer. =/

0 Kudos
Reply

1,972 Views
KursadOney
NXP Employee
NXP Employee

You might want to ask this on openwrt-devel or a related list. I'd run lsof on /dev/ubi0_0 and see what process is keeping the resource busy.

0 Kudos
Reply

1,972 Views
vladimirovseych
Contributor III

Already done. lsof | grep ubi - no output.

fuser /dev/ubi0_0 :

1 528 1741 ...

But I can't kill 1

0 Kudos
Reply

1,972 Views
KursadOney
NXP Employee
NXP Employee

1 is init. Maybe when you switch to ramdisk, rootfs is not unmounted (or unmounted properly) so the ubi update command cannot work on it. You can check the output of the "mount" command and see if the filesystem is still mounted. Maybe rootfs can never be unmounted, I don't know.

I think someone familiar with openwrt would be better equipped to answer this question.

0 Kudos
Reply