[haiku-bugs] Re: [Haiku] #13284: ARM image installer

  • From: "kallisti5" <trac@xxxxxxxxxxxx>
  • Date: Fri, 10 Feb 2017 14:56:37 -0000

#13284: ARM image installer
----------------------------+----------------------------
   Reporter:  kallisti5     |      Owner:  bonefish
       Type:  enhancement   |     Status:  new
   Priority:  low           |  Milestone:  Unscheduled
  Component:  Build System  |    Version:  R1/Development
 Resolution:                |   Keywords:  arm
 Blocked By:                |   Blocking:
Has a Patch:  0             |   Platform:  arm
----------------------------+----------------------------

Comment (by kallisti5):

 Replying to [comment:1 pulkomandy]:

A single image for all ARM devices is the goal, but we are not quite
 there yet:
- our device tree is not used enough, for example, in the bootloader and
 early kernel, we hardcode various RAM addresses depending on the target
 hardware. Fixing that would make porting to new ARM devices MUCH easier
 (no need to rewrite the mmu init code for each of them, breaking the other
 ones).

 I actually fixed the u-boot hardcoded addresses a while ago:

 http://cgit.haiku-
 
os.org/haiku/commit/build/jam/board/rpi2/BoardSetup?id=b8dff21b5aa8498698904f2fe2a08c71f67b1899
 http://cgit.haiku-os.org/haiku/tree/build/jam/board/rpi2/BoardSetup#n36

 There are variables you can pass to u-boot which are set by the individual
 u-boot builds.
 (default sane memory locations for fdt's, etc. per board)

 The only real custom thing in that u-boot script anymore is the FDT
 location, however
 that is easy to fix

 <boot partition>/board.fdt (copied from <boot partition>/fdts/<board>.fdt
 by the haiku-arm-image-writer tool)

 I think we might have one or two hard-coded addresses around in the
 sources, but most of these were converted to being loaded from the FDT...

 http://cgit.haiku-
 os.org/haiku/tree/src/system/boot/platform/u-boot/start.cpp#n232
 http://cgit.haiku-
 
os.org/haiku/commit/src/system/kernel/platform/u-boot/fdt_serial.cpp?id=c6a4fee57959c986091fcd52f2096b28b98456e2

 http://cgit.haiku-
 os.org/haiku/tree/src/system/kernel/arch/arm/soc_omap3.cpp#n184

 http://cgit.haiku-
 os.org/haiku/tree/src/system/kernel/arch/arm/soc_pxa.cpp#n141



 We do still have some hard-coded framebuffer stuff that needs converted to
 fdt:
 http://cgit.haiku-
 os.org/haiku/tree/src/system/boot/platform/u-boot/video.cpp#n104


- our SD images already include the bootloaders and stuff. It may be
 possible to make some kind of "anyboot" style image there, with a big FAT
 partition with all early loaders and u-boots for different devices. There
 probably will be some clashes between different devices when doing that
 however, so the Fedora approach of preparing the image on the user side
 may make sense.

 Yup. We already have 90% of this as well which helps.
 The haiku-arm-image-install tool already finds the fat mmc partition and
 (re) populates it based on a json manifest...

 https://github.com/kallisti5/haiku-arm-image-installer/blob/master/haiku-
 arm-installer#L128


 I still need to write the alternative "hard-coded" SPL offset stuff though
 for things like the Allwinner chipsets.

Also possible would be a jigdo-like system, where a script on the server
 side assembles the image as the user downloads it. Allows us to keep a
 single BFS image and just prepend the MBR + boot FAT partition to it on
 download.

 Interesting idea.  Sounds a lot more complex to write though :-)

--
Ticket URL: <https://dev.haiku-os.org/ticket/13284#comment:2>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: