Difference between revisions of "Improve kexecboot"

From eLinux.org
Jump to: navigation, search
(Created page with "; Summary : Improve kexecboot ; Proposer : Yuri Bushmelev == Description == Kexecboot is a C program able to scan the partitions on available devices, offering a graphical fram...")
 
m (Contractor Candidates)
 
(4 intermediate revisions by 2 users not shown)
Line 11: Line 11:
  
 
Typically kexecboot resides together with kexec in a small initramfs,
 
Typically kexecboot resides together with kexec in a small initramfs,
embedded in a custom-tailored kernel compiled with support for initramfs and
+
embedded in a custom-tailored kernel compiled with support for initramfs and kexec system call.
kexec system call.
+
 
Both binaries are built static, linked against klibc to optimize size.
 
Both binaries are built static, linked against klibc to optimize size.
  
Line 18: Line 17:
 
this solution gives following advantages:
 
this solution gives following advantages:
  
* multi machine support: we build for many architectures using
+
* multi machine support: we build for many architectures using OpenEmbedded/Yocto (tested on arm, mips and x86/x86_64)
OpenEmbedded/Yocto (tested on arm, mips and x86/x86_64)
+
 
* zImage and uImage (for arm and sh) support
 
* zImage and uImage (for arm and sh) support
* easy customization: just add machine-specific workarounds (see
+
* easy customization: just add machine-specific workarounds (see Zaurus raw read of bootparams from NAND)
Zaurus raw read of bootparams from NAND)
+
* small size: complete linux-kexecboot_3.2.x image (initramfs +kernel) is less than 1Mb (with lzma compression)
* small size: complete linux-kexecboot_3.2.x image (initramfs +
+
* easy boot choice: boot from SD/CF/NAND/... even if bootloader doesn't support it
kernel) is less than 1Mb (with lzma compression)
+
* multiple fs detection: we support many filesystems e.g. ext2/3/4, jffs2, reiserfs, vfat and more (ubifs is work in progress)
* easy boot choice: boot from SD/CF/NAND/... even if bootloader
+
* kernel upgrade: no need to flash the device (kernel is in /boot of removable media)
doesn't support it
+
* rapid testing: different distributions can live in separate partitions on the same device
* multiple fs detection: we support many filesystems e.g. ext2/3/4,
+
jffs2, reiserfs, vfat and more (ubifs is work in progress)
+
* kernel upgrade: no need to flash the device (kernel is in /boot of
+
removable media)
+
* rapid testing: different distributions can live in separate
+
partitions on the same device
+
  
 
Thus, kexecboot is an interesting solution for embedded linux distributions,
 
Thus, kexecboot is an interesting solution for embedded linux distributions,
Line 38: Line 30:
 
bootloader can and cannot do.
 
bootloader can and cannot do.
  
About customization, initially the program has been developed for Sharp
+
About customization, initially the program has been developed for Sharp Zaurus PDA (armv5te).
Zaurus PDA (armv5te).
+
For the machines of that family there is specific code reading bootparams directly from NAND,  
For the machines of that family there is specific code reading bootparams
+
circumventing the obsolete bootloader which is incompatible with modern kernels.
directly from NAND, circumventing the obsolete bootloader which is
+
incompatible with modern kernels.
+
  
 
=== Proposed improvements ===
 
=== Proposed improvements ===
# Improve user interface: show progress bar while scanning devices,
+
# Improve user interface: show progress bar while scanning devices, display messages in nice dialog boxes, adopt UI for qvga screen, improve overall GUI perfomance.
display messages in nice dialog boxes, adopt UI for qvga screen,
+
improve overall GUI perfomance.
+
 
# Implement GUI -> text UI fallback when GUI can't be initialized.
 
# Implement GUI -> text UI fallback when GUI can't be initialized.
# Add support for multiple "boot methods". Now we have only one method
+
# Add support for multiple "boot methods". Now we have only one method actually (kexec). It would be great to add methods, based on switch_root, losetup and network boot.
actually (kexec). It would be great to add methods, based on switch_root,
+
# Add ability to work without procfs. Use config file from current /boot directory instead.
losetup and network boot.
+
# Add ability to work without procfs. Use config file from current
+
/boot directory instead.
+
 
# Implement timeout indication in "--enable-timeout"-mode.
 
# Implement timeout indication in "--enable-timeout"-mode.
  
 
=== Links ===
 
=== Links ===
* site http://kexecboot.org
+
* site: http://kexecboot.org
* git tree http://git.linuxtogo.org/?p=groups/kexecboot/kexecboot.git
+
* git tree: http://git.linuxtogo.org/?p=groups/kexecboot/kexecboot.git
* OpenEmbedded recipes:
+
* OpenEmbedded recipes: http://cgit.openembedded.org/meta-openembedded/tree/meta-initramfs
http://cgit.openembedded.org/meta-openembedded/tree/meta-initramfs
+
 
* Sharp Zaurus BSP for Yocto Project: http://git.openembedded.org/meta-handheld
 
* Sharp Zaurus BSP for Yocto Project: http://git.openembedded.org/meta-handheld
  
 
== Related work ==
 
== Related work ==
* kexec-tools -
+
* kexec-tools - http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/README.html
http://www.kernel.org/pub/linux/kernel/people/horms/kexec-tools/README.html
+
 
* kexec-loader - http://www.solemnwarning.net/kexec-loader
 
* kexec-loader - http://www.solemnwarning.net/kexec-loader
 
* Qi Bootmenu - http://www.brain-dump.org/projects/qi-bootmenu/
 
* Qi Bootmenu - http://www.brain-dump.org/projects/qi-bootmenu/
* Ubuntu ARMSoftbootLoader specs -
+
* Ubuntu ARMSoftbootLoader specs - http://wiki.ubuntu.com/Specs/ARMSoftbootLoader
http://wiki.ubuntu.com/Specs/ARMSoftbootLoader
+
  
 
== Scope ==
 
== Scope ==
Line 76: Line 58:
 
== Contractor Candidates ==
 
== Contractor Candidates ==
 
* Yury Bushmelev (jay7) <jay4mail at gmail.com>, kexecboot lead developer.
 
* Yury Bushmelev (jay7) <jay4mail at gmail.com>, kexecboot lead developer.
* Marko Kati? (dromede) <dromede at gmail.com>, zaurus community developer.
+
* Marko Katić (dromede) <dromede at gmail.com>, zaurus community developer.
  
 
== Comments ==
 
== Comments ==
  
 
[[Category:Project proposals 2012]]
 
[[Category:Project proposals 2012]]

Latest revision as of 20:37, 25 April 2012

Summary 
Improve kexecboot
Proposer 
Yuri Bushmelev

Description

Kexecboot is a C program able to scan the partitions on available devices, offering a graphical framebuffer menu and allowing user to select from which one to boot. Specifically, kexecboot creates the command line for kexec.

Kexecboot can be launched as init in the initramfs or as a standalone binary.

Typically kexecboot resides together with kexec in a small initramfs, embedded in a custom-tailored kernel compiled with support for initramfs and kexec system call. Both binaries are built static, linked against klibc to optimize size.

Flashed on NAND and launched as first kernel by the original bootloader, this solution gives following advantages:

  • multi machine support: we build for many architectures using OpenEmbedded/Yocto (tested on arm, mips and x86/x86_64)
  • zImage and uImage (for arm and sh) support
  • easy customization: just add machine-specific workarounds (see Zaurus raw read of bootparams from NAND)
  • small size: complete linux-kexecboot_3.2.x image (initramfs +kernel) is less than 1Mb (with lzma compression)
  • easy boot choice: boot from SD/CF/NAND/... even if bootloader doesn't support it
  • multiple fs detection: we support many filesystems e.g. ext2/3/4, jffs2, reiserfs, vfat and more (ubifs is work in progress)
  • kernel upgrade: no need to flash the device (kernel is in /boot of removable media)
  • rapid testing: different distributions can live in separate partitions on the same device

Thus, kexecboot is an interesting solution for embedded linux distributions, which can just rely on it without having to consider what the real bootloader can and cannot do.

About customization, initially the program has been developed for Sharp Zaurus PDA (armv5te). For the machines of that family there is specific code reading bootparams directly from NAND, circumventing the obsolete bootloader which is incompatible with modern kernels.

Proposed improvements

  1. Improve user interface: show progress bar while scanning devices, display messages in nice dialog boxes, adopt UI for qvga screen, improve overall GUI perfomance.
  2. Implement GUI -> text UI fallback when GUI can't be initialized.
  3. Add support for multiple "boot methods". Now we have only one method actually (kexec). It would be great to add methods, based on switch_root, losetup and network boot.
  4. Add ability to work without procfs. Use config file from current /boot directory instead.
  5. Implement timeout indication in "--enable-timeout"-mode.

Links

Related work

Scope

This should take about 10 person-weeks.

Contractor Candidates

  • Yury Bushmelev (jay7) <jay4mail at gmail.com>, kexecboot lead developer.
  • Marko Katić (dromede) <dromede at gmail.com>, zaurus community developer.

Comments