You are not logged in.

#1 2012-05-13 23:02:06

From: Ts’elxweyeqw, Canada
Registered: 2011-04-01
Posts: 1,465

Changes coming to mkinitcpio

Just a heads up that there will be a new mkinitcpio release with a bunch of patches coming.

Dave Reisner
12:57 AM (10 hours ago)

to arch-projects 
Hi all,

What follows this is the changes I have in store for the next release, which
I'll be tagging 0.9.0. There's one change not included, but I'll explain what
that is.

I realize this patchset is huge, and I don't expect anyone to look through it
in its entirety. However, there's two things worth pointing out here that I'd
appreciate some feedback on:

* Changes to install hook API
 I've added some new functions:
   - add_checked_modules
   - add_all_modules
   - add_runscript

 These are intended to replace all_modules and checked_modules, which currently
 return the list of modules that the caller should add. The new functions simply
 go ahead and queue the modules for addition rather than making the caller do
 something with them. add_runscript does some introspection to figure out which
 hook called it and add the appropriate script from /usr/lib/initcpio/hooks.

 The general idea here is that we're getting rid of using MODULES, FILES, BINARIES,
 and SCRIPT in the install hooks and we'll be down to a singular method of adding
 files to the image. With the refactored error parsing, mkinitcpio can properly
 detect errors from any add_* function, which should improve the experience a bit.

 Consider the next release the deprecation warning, though I'm not sure when
 I'll remove things. I've made sure that current hooks continue to work in the
 same way. There's no explicit callout during runtime about these things being
 deprecated, but maybe there should be? I'll plan on fixing all the hooks in the
 repos myself.

 Since this is new API, I'd like to get it right the first time. If anyone sees
 anything lacking, room for improvement, or wants to send me death threats, feel

* Support for late running hooks
 I've refactored running hooks in early userspace and we now support a second run
 after root has been mounted. To make things simple, current hook files only need
 to define an extra function run_latehook() to be considered. Hooks run in reverse
 order from the normal run. lsinitcpio of course gains support for reading these.

 We already have some obvious candidates to use this feature: udev and shutdown.
 udev startup/shutdown no longer needs to be hardcoded in /init, and shutdown
 can delete modules before copying / over to /run/initramfs, saving some modicum
 of space in tmpfs.

 I'm also tempted to move mounting of /usr to a late running hook, but I'm sure
 that we'll see some breakage by doing this, even with proper warnings. Opinions
 here welcome.

The final unlisted change is what I referred to earlier about udev. Since the udev
hook would be handling its own startup/shutdown, we'd simply yank those if blocks
out of /init and carry on. I've been testing this and it works quite well.

Random feedback and tomatoes unrelated to the above points are welcome, as always.


Dave Reisner (19):
 use MODULEDIR as reference for *.(order|builtin) files
 mkinitcpio: separate logic to resolve kernel version
 document special kernel cmdline parameters
 refactor error tracking in build hooks
 mmc: package as mode 644, not 755
 functions: remove get_dirname and get_basename
 functions: move --try logic into add_module
 move -g option checking to parseopts loop
 functions: introduce add_checked_modules and add_all_modules
 functions: introduce add_runscript
 use new API for install hooks
 init: correct trimming of earlymodules and MODULES
 init_functions: move running hooks to separate func
 init: add support for late running hooks
 shutdown: package as 644, install as 755
 shutdown: convert to late hook
 buildsys: fix clean target
 lsinitcpio: extract the image to a tempdir
 lsinitcpio: add support for listing late hooks

 Makefile            |    2 +-
 functions           |  125 +++++++++++++++++++++++++++++++++++++--------------
 hooks/shutdown      |    3 +-
 init                |   26 +++--------
 init_functions      |   27 +++++++++++
 install/consolefont |    6 +--
 install/filesystems |    4 +-
 install/fsck        |    4 ++
 install/fw          |    8 +++-
 install/ide         |    4 +-
 install/keymap      |    4 +-
 install/memdisk     |    9 ++--
 install/mmc         |    7 ++-
 install/pata        |    6 ++-
 install/resume      |    2 +-
 install/sata        |    6 ++-
 install/scsi        |    9 ++--
 install/shutdown    |    7 +--
 install/sleep       |    2 +-
 install/usb         |   12 +++--
 install/usbinput    |    5 ++-
 install/virtio      |    2 +-
 lsinitcpio          |   70 +++++++++++++++++++++--------
 mkinitcpio          |   59 ++++++++++++++----------
 mkinitcpio.8.txt    |   51 +++++++++++++++++++++
 25 files changed, 317 insertions(+), 143 deletions(-)
 mode change 100755 => 100644 install/mmc
 mode change 100755 => 100644 shutdown

Please check the arch-project archive for all the patches

You have the capacity to learn from mistakes. You'll learn a lot today.
FP:E5F8 7DBA 8128 9ACB 75F7 7279 BE34 AB66 76D9 16DE
Currently running ArchBang / LFS / OpenSUSE Tumbleweed


Board footer

Powered by FluxBB