On Wed, 2014-05-14 at 19:16 +0200, Alexander Pohl wrote:
Ideally, one would have to supply an u-boot version which has the Grub
API enabled and then to chain load Grub from there,
Ideally perhaps but in reality there are various issues with running
grub on u-boot (the u-boot API is pretty broken, grub is not relocatable
etc), I at least have given up on that path.
which in turns loads Debian initramfs and kernel images. This way
keeping the system up to date with newer kernels would be easy as this
is all handled by Grub.
The current tool we have for doing this is "flash-kernel". Adding
support should just be a case of figuring out the correct stanza for the
machine. It supports various modes, including copying kernel+flash to
dedicated flash partitions (either raw or with a filesystem), writing a
boot.scr, appending a device-tree as necessary etc. It should be
possible to integrate with the factory u-boot.
Even if you are keen to go the grub route I would suggest getting things
working via flash-kernel first to enable these systems to be used, and
then treat the grub thing as a future thing.
u-boot folks seem to be standardising on parsing the extlinux/syslinux
config file format for this stuff, I might take a look at whether the
extlinux-update script can be made available on ARM at some point (it's
currently in an x86 only package).
The problem for development and testing I see is that the u-boot image
supplied by Synology does not have the Grub API enabled, so one has to
flash a new version of u-boot first, which is targeted for the
specific platform. The bootrom of the DS213j does not support the uart
boot method implemented in kwboot, so if the update of the u-boot
image fails one is left with a bricked unit. One could try to program
the SPI flash in-circuit, but this might not work.
With the flash-kernel method there should be no need to reflash grub,
unless the factory one is horribly broken somehow.