[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: network-console, netboot, authorized_keys



On Tue, Nov 17, 2015 at 10:39:07AM +0100, Łukasz Stelmach wrote:
> Dnia 17 listopad 2015 o 10:07 Ian Campbell <ijc@debian.org> napisał(a):
> 
> >> Q1-b. Is there any tutorial or a checklist how to port d-i to a new
> >> platform?
> > 
> > Not that I know of, other than git log on the relevant components to
> > see what the last guy did I guess.
> 
> "Relevant components" is a key phrase I hoped to find as a title of a
> section in such tutorial.

Hello,

there is no step-by-step "porting d-i to a new (arm) platform"
tutorial that I know of, but perhaps the following points can
help you:

- Your platform must be supported by the mainline kernel. From a
  quick glance, that doesn't seem to be the case yet. A quick
  scan of the kernel sources shows support for the Zyxel nsa320,
  but not for the nsa325.

  New boards get only added to the mainline kernel via
  device-tree, so the first step would be writing a device-tree
  for the board and getting it upstream.

  Example device-tree (for the Zyxel nsa320):
  https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/kirkwood-nsa320.dts

- D-i uses modules udebs, which get built by the Debian kernel
  package. You have to make sure that

  a) all necessary modules are enabled in the relevant kernel
     config:
     https://anonscm.debian.org/cgit/kernel/linux.git/tree/debian/config

  b) the necessary modules get included into the relevant
     module-udebs:
     https://anonscm.debian.org/cgit/kernel/linux.git/tree/debian/installer/armel/modules/

- Your system seems to be based on the kirkwood family of SoCs,
  i.e. it needs to use the "kirwood" subarchitecture of the
  Debian kernel packages. The installer therefore needs a
  mapping of the machine type to the subarchitecture, which
  is done in libdebian-installer:
  https://anonscm.debian.org/cgit/d-i/libdebian-installer.git/tree/src/system/subarch-arm-linux.c#n26

- For making the system bootable, the installer uses
  flash-kernel. Flash-kernel has a machine database which
  contains a stanza for each supported system and which provides
  all necessary information to create and install a bootable
  kernel and the corresponding initrd. How exactly that is done
  is system-dependant. Some of the steps that can be performed
  by flash-kernel include:
  * putting kernel and initrd into some specific directory
  * appending the proper device-tree for the platform to the
    kernel image (necessary on systems with old u-boot versions
    that cannot load a separate device-tree blob)
  * generating uImages from native Linux kernels and initrds
  * installing system-specific u-boot scripts
  * flashing the kernel and the initrd into some onboard flash
    chip

  The flash-kernel machine database:
  https://anonscm.debian.org/cgit/d-i/flash-kernel.git/tree/db/all.db

  Documentation of the stanza format:
  https://anonscm.debian.org/cgit/d-i/flash-kernel.git/tree/README#n76

HTH,
Karsten
-- 
Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung
sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der
Werbung sowie der Markt- oder Meinungsforschung.


Reply to: