Architecture: Difference between revisions

From Alpine Linux
m (→‎Module Loading: Formatting)
m (→‎Init: Formatting and slight wording improvements)
Line 97: Line 97:


=== Init ===
=== Init ===
Not to be confused with the '/init' script in the initramfs, '/sbin/init' is the first process to be started in the live system after the initramfs completes its work.
<code>/sbin/init</code> is the first process to be started in the live system after the initramfs completes its work. It is part of the [https://www.busybox.net/ Busybox] package and should not be confused with the <code>/init</code> script [[Architecture#'/init'_Script|mentioned above]].


==== Module Loading ====
==== Module Loading ====

Revision as of 15:32, 12 January 2023

This material is work-in-progress ...

Do not follow instructions here until this notice is removed.
(Last edited by WhyNotHugo on 12 Jan 2023.)

Alpine Hardware Architecture ("arch") Support

x86 Based

  • x86 - 32 bit x86 (ia32)
  • x86_64 - 64 bit x86 (amd64)

ARM Based

  • armhf - 32 bit ARM (hard-float ABI) - ARMv6
  • armv7 - 32 bit ARMv7
  • aarch64 - 64 bit ARM - ARMv8

PowerPC Based

  • ppc64le - 64 bit PowerPC (little-endian)

IBM System Z Based

Alpine Packaging

Package Building

Alpine Package Building Ports

  • APKBUILD - Package build scripts
  • aports - Official Alpine ports git repository

Package Building Tools


Package Format

Alpine uses packages in the .apk file format.

Package Management Tools

Boot Process

Boot Loader

EFI

BIOS

Other

Kernel

Versioning

Flavors
  • vanilla
  • hardened
  • virthardened
  • rpi

Signing

Command line options

  • modules="<modules>" - specify list of modules to be loaded by initramfs /init needed to mount real root filesystem.

Initfs

The kernel will decompress the stream of compressed cpio archives passed to it by the 'append' bootloader option to the root of 'rootfs', a tmpfs automatically mounted at '/' by the kernel at boot.

'/init' Script

Not to be confused with '/sbin/init', the '/init' script in the root of the 'rootfs' is called by the kernel upon completion of its boot process, and is responsible for doing whatever steps are necessary to mount the real root file system to '/' and transfer control to '/sbin/init'.

  • Parses kernel command line options.
  • Uses nlplug-findfs to discover devices.

Initfs Module Handling

Modules required to mount the root filesystem and boot must either built into the kernel or available from with the initramfs filesystem through use of appended initrd cpio.gz files provided by the bootloader.

The /init script will first modprobe the modules specified by the modules= kernel command line option and by the name of the specified rootfs type. It will then load the contents of /etc/modules, which may include module options. Modules may be blacklisted from autoprobing (but NOT explicit insertion!) using the blacklist= kernel command line option which appends blacklist entries to '/etc/modprobe.d/boot-opt-blacklist.conf'.

Minimal Required Set

Directory Structure
  • / /bin /boot /dev /etc /lib /lib/modules /media /media/cdrom /media/usb /mnt /proc /sbin /sys /usr /usr/bin /usr/sbin
Devices
  • /dev/null
  • /dev/console
  • /dev/kmsg
Mounts
  • /proc
  • /sys
  • /dev (can be disabled?)
Configuration
  • /etc/passwd
  • /etc/group
  • /etc/fstab
Binaries

Feature Sets

Feature sets consist of lists for the set of modules and files that need to be included in a final initramfs to support the indicated feature.

Init

/sbin/init is the first process to be started in the live system after the initramfs completes its work. It is part of the Busybox package and should not be confused with the /init script mentioned above.

Module Loading

/etc/init.d/modules loads all modules specified in /etc/modules and /(etc|run|usr/lib|lib)/modules-load.d/*.conf