Dracut A Generic Initramfs Infrastructure Harald Hoyer Red Hat - - PowerPoint PPT Presentation

dracut
SMART_READER_LITE
LIVE PREVIEW

Dracut A Generic Initramfs Infrastructure Harald Hoyer Red Hat - - PowerPoint PPT Presentation

Dracut A Generic Initramfs Infrastructure Harald Hoyer Red Hat Dracut Tools used on the system Event based with udev Generic across distributions Generic across hardware Nothing hardcoded Targets Boot any system


slide-1
SLIDE 1

Dracut

A Generic Initramfs Infrastructure Harald Hoyer Red Hat

slide-2
SLIDE 2

Dracut

  • Tools used on the system
  • Event based with udev
  • Generic across distributions
  • Generic across hardware
  • Nothing hardcoded
slide-3
SLIDE 3

Targets

  • Boot any system configuration on any hardware

with the same initramfs image

  • Easy to extend and customize
slide-4
SLIDE 4

Overview

Basic setup Hooks: cmdline, pre-udev Start Udev Trigger Udev Hooks: pre-trigger Wait for jobs Or udev settled Initqueue Initqueue settled Found root device Initqueue finished Hooks: mount Hooks: pre-mount Hooks: pre-pivot Cleanup and switch_root

slide-5
SLIDE 5

Modules

  • I18n
  • Network
  • Plymouth
  • Crypt, DMraid, LVM, MDraid
  • dmsquash-live
  • FCoE, iSCSI, NBD, NFS
  • resume, rootfs-block
  • s390
slide-6
SLIDE 6

Hooks

  • Hooks: cmdline, pre-udev, pre-trigger, pre-

mount, pre-pivot, emergency

  • POSIX shell scripts ending with .sh in

/$hookname

  • rdbreak=$hookname
slide-7
SLIDE 7

Queues

  • Initqueue
  • Initqueue-settled
  • Initqueue-finished
  • /sbin/initqueue
  • –onetime
  • –settled
  • –unique
  • –name
slide-8
SLIDE 8

DMraid

  • Udev rules match on

ENV{ID_FS_TYPE}=="*_raid_member"

  • $sys/$devpath/holders/dm-[0-9]*
  • dmraid -ay -i -p --rm_partitions "$setname"
  • GUID Partition Table (GPT):

kpartx -a -p p "/dev/mapper/$setname"

slide-9
SLIDE 9

MDraid

  • ENV{ID_FS_TYPE}=="linux_raid_member|

isw_raid_member"

  • $sys/$devpath/holders/md[0-9]*
  • RUN+="/sbin/mdadm -I --no-degraded

$env{DEVNAME}"

  • /sbin/mdadm -As --auto=yes –run
slide-10
SLIDE 10

LVM

  • ENV{ID_FS_TYPE}=="LVM2_member"
  • Create /etc/lvm/lvm.conf

filter = [ “a|^/dev/DEVNAME$|”, “r/.*/” ]

  • lvm vgscan
  • lvm vgchange -ay
slide-11
SLIDE 11

Network

  • ip={dhcp|on|any}
  • ip=<interface>:{dhcp|on|any}
  • ip=<client-IP-number>:[<server-id>]:<gateway-

IP-number>:<netmask>:<client- hostname>:<interface>:{none|off}

  • ifname=<interface>:<MAC>
  • ACTION=="add", SUBSYSTEM=="net",

RUN+="/sbin/ifup $env{INTERFACE}"

  • Match specific interfaces by name or MAC
  • Run DHCP if needed
slide-12
SLIDE 12

NFS

  • root=[<server-ip>:]<root-dir>[:<nfs-options>]
  • root=nfs:[<server-ip>:]<root-dir>[:<nfs-options>]
  • root=nfs4:[<server-ip>:]<root-dir>[:<nfs-
  • ptions>]
  • Just try to mount it
slide-13
SLIDE 13

NBD

  • root=nbd:<server>:<port>[:<fstype>]

[:<mountopts>]

  • nbd-client
  • Wait for /dev/nbd0
slide-14
SLIDE 14

iSCSI

  • root=iscsi:

[username:password[reverse:password]@] [<servername>]:[<protocol>]:[<port>]: [<LUN>]:<targetname> (rfc4173)

  • Iscsistart from iscsi-initiator-utils

(http://www.open-iscsi.org)

  • SYMLINK=="disk/by-path/*-iscsi-*-<iscsi lun>"
  • Problem without config files
slide-15
SLIDE 15

FCoE

  • fcoe=<networkdevice>:<dcb|nodcb>

fcoe=<macaddress>:<dcb|nodcb>

  • ACTION=="add", SUBSYSTEM=="net",

NAME==”<ifacename>", RUN+="/sbin/fcoe-up $env{INTERFACE}”

  • /sbin/ip link set "$netif" up
  • echo -n "$netif" >

/sys/module/fcoe/parameters/create

slide-16
SLIDE 16

Plymouth

  • Use /usr/libexec/plymouth/plymouth-populate-

initrd

  • Run a small udev trigger for graphic devices
  • nly
  • Provides dialog for /sbin/cryptsetup luksOpen
slide-17
SLIDE 17

Cryptoluks

  • ENV{ID_FS_TYPE}=="crypto_LUKS"
  • Runs in non-settled initqueue
slide-18
SLIDE 18

DMSquash

  • Used to find the Live CD
  • Loop mounts images
  • Sets up device mapper overlays
slide-19
SLIDE 19

Debug

  • rdinfo
  • rdshell
  • rdinitdebug
  • rdbreak
  • rdbreak={cmdline|pre-udev|pre-trigger|

initqueue|pre-mount|mount|pre-pivot}

  • rdudevinfo
  • rdudevdebug
  • rdnetdebug
slide-20
SLIDE 20

Test Suite

  • Uses qemu
  • Covers basic modules like LVM, Dmraid,

Mdraid, NBD, iSCSI, NFS

  • Client, Server communication over qemu's

internal network

slide-21
SLIDE 21

Use Cases

  • Cluster setups
  • Rescue System
  • Kexec crash dumps
slide-22
SLIDE 22

Participate

irc://irc.freenode.net/dracut git://dracut.git.sourceforge.net/gitroot/dracut/dracut http://sourceforge.net/projects/dracut http://sourceforge.net/apps/trac/dracut