āĻāϞā§āĻĒāĻāĻž āĻ
āύā§āĻ āĻĻāĻŋāύ āĻāĻā§ āĻļā§āϰ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ, āϝāĻāύ āĻāĻāĻŋ āĻŽā§āĻā§āϤāĻŋ āĻĒā§āϝāĻŧā§āĻāĻŋāϞāĨ¤ Centos ā§ (āĻāϰāĻāĻāĻāĻāĻāϞ ā§)āĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻĄāĻŋāϏā§āĻā§ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĨāĻžāĻā§āύ Centos āϏāĻāϏā§āĻāϰāĻŖ ā§Ŧ-āĻ, āϏāĻ āĻŋāĻ āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāϏāĻŦāĻŋ āĻĢā§āϞā§āϝāĻžāĻļ āĻĄā§āϰāĻžāĻāĻ āϏāĻāϝā§āĻ āĻāϰāϞ⧠āĻĄāĻŋāϏā§āĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāύāϞāĻ āĻšāϤ⧠āĻā§āύ⧠āϏāĻŽāϏā§āϝāĻž āĻāĻŋāϞ āύāĻžāĨ¤ āĻāĻŋāύā§āϤā§, āϏāĻāϏā§āĻāϰāĻŖ ā§ āĻĒā§āϰāĻāĻžāĻļā§āϰ āĻĒāϰ, āϏāĻŦāĻāĻŋāĻā§ āĻšāĻ āĻžā§ āĻāϰ⧠āĻĒā§āϰāϤā§āϝāĻžāĻļāĻž āĻ
āύā§āϝāĻžāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻž āĻŦāύā§āϧ āĻāϰ⧠āĻĻā§āϝāĻŧāĨ¤ āĻāύāĻĢāĻŋāĻā§ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āϞāĻžāĻāύ āϝā§āĻ āĻāϰ⧠dracut-āĻā§ sysvinit-āĻ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻāύāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧ: echo 'omit_dracutmodules+=" systemd "' > /etc/dracut.conf.d/luks-workaround.conf
āϝāĻž āĻ
āĻŦāĻŋāϞāĻŽā§āĻŦā§ āϏāĻŋāϏā§āĻā§āĻŽāĻĄā§āϰ āϏāĻŽāϏā§āϤ āϏā§āύā§āĻĻāϰā§āϝ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āϰ āĻŦāĻā§āĻāĻŋāϤ āĻāϰā§āĻā§ - āϏāĻŋāϏā§āĻā§āĻŽ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋāϰ āĻĻā§āϰā§āϤ āĻāĻŦāĻ āϏāĻŽāĻžāύā§āϤāϰāĻžāϞ āĻĒā§āϰāĻŦāϰā§āϤāύ, āϝāĻž āϏāĻŋāϏā§āĻā§āĻŽ āĻļā§āϰā§āϰ āϏāĻŽāϝāĻŧāĻā§ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻšā§āϰāĻžāϏ āĻāϰā§āĻā§āĨ¤
āĻāĻŋāύāĻŋāϏ āĻāĻāύāĻ āĻāĻā§:
āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻāύā§āϝ āĻ
āĻĒā§āĻā§āώāĻž āύāĻž āĻāϰā§, āĻāĻŽāĻŋ āĻāĻāĻŋ āύāĻŋāĻā§āϰ āĻāύā§āϝ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāύ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāύāϏāĻžāϧāĻžāϰāĻŖā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻāĻŋ, āϝāĻžāϰāĻž āĻāĻā§āϰāĻšā§, āĻĒāĻĄāĻŧā§āύāĨ¤

āĻā§āĻŽāĻŋāĻāĻž
āĻāĻŽāĻŋ āϝāĻāύ āĻĒā§āϰāĻĨāĻŽ Systemd āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻļā§āϰ⧠āĻāϰāĻŋ Centos ā§ āĻā§āύ⧠āĻāϤā§āϤā§āĻāύāĻž āĻāĻžāĻāĻžāϝāĻŧāύāĻŋ, āĻāĻžāϰāĻŖ āϏāĻžāϰā§āĻāĻŋāϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏā§āϰ āĻāĻāĻāĻŋ āϏāĻžāĻŽāĻžāύā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻžāĻĄāĻŧāĻž, āĻāĻŽāĻŋ āĻĒā§āϰāĻĨāĻŽā§ āϤā§āĻŽāύ āĻā§āύ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āϞāĻā§āώā§āϝ āĻāϰāĻŋāύāĻŋāĨ¤ āĻ
āĻŦāĻļā§āώ⧠āĻāĻŽāĻŋ āϏāĻŋāϏā§āĻā§āĻŽāĻĄāĻŋ āĻĒāĻāύā§āĻĻ āĻāϰāϤ⧠āĻļā§āϰ⧠āĻāϰāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϧāĻžāϰāĻŖāĻžāĻāĻŋ āĻāĻŋāĻā§āĻāĻž āĻāϞā§āώāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ āĻāĻ āĻāĻžāϰāĻŖā§ āϝā§, āĻĄā§āϰāĻžāĻā§āĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰāϰāĻž āĻĄāĻŋāϏā§āĻ āĻāύāĻā§āϰāĻŋāĻĒāĻļāύā§āϰ āϏāĻžāĻĨā§ āϏāĻŋāϏā§āĻā§āĻŽāĻĄāĻŋ āĻŦā§āĻ āĻĒā§āϰāϏā§āϏāĻā§ āϏāĻŽāϰā§āĻĨāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻā§āĻŦ āĻŦā§āĻļāĻŋ āϏāĻŽāϝāĻŧ āĻŦā§āϝāϝāĻŧ āĻāϰā§āύāύāĻŋāĨ¤ āĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻžāĻ āĻāϰāϤ, āĻāĻŋāύā§āϤ⧠āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻāĻŋ āĻāĻžāϞ⧠āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻŽāĻžāĻā§ āĻāĻŽāĻžāϰ āĻĄāĻŋāϏā§āĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ āĻĻāĻŋāϤ⧠āĻšāϤā§āĨ¤ āϏāĻžāϰā§āĻāĻžāϰ â āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒ āύāϝāĻŧāĨ¤
āĻāĻāĻā§āĻā§āĻ āϏā§āĻĒāĻžāϰāĻŋāĻļ āĻā§āώā§āĻāĻž āĻāϰ⧠āĻāĻŦāĻ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻāĻŋ āĻ
āϧā§āϝāϝāĻŧāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒā§āϰā§āĻāĻŋāϞāĻžāĻŽ āϝ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻĄ āĻŽā§āĻĄā§ USB āĻāϰ āϏāĻžāĻĨā§ āĻāύāĻĢāĻŋāĻāĻžāϰā§āĻļāύ āϏāĻŽā§āĻāĻŦ, āϤāĻŦā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ USB āĻĄāĻŋāϏā§āĻā§āϰ āĻāĻāĻāĻŋ āĻā§ āϏāĻš āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĄāĻŋāϏā§āĻā§āϰ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻ
ā§āϝāĻžāϏā§āϏāĻŋāϝāĻŧā§āĻļāύā§āϰ āϏāĻžāĻĨā§ āĻāĻŦāĻ USB āĻĄāĻŋāϏā§āĻāĻāĻŋ āĻā§āĻŦāϞāĻŽāĻžāϤā§āϰ āϤāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āϝā§āĻā§āϤ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ UUID, LABEL āĻāĻžāĻ āĻāϰā§āύāĻŋāĨ¤ āĻŦāĻžāĻĄāĻŧāĻŋāϤ⧠āĻāĻāĻŋ āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāĻž āĻā§āĻŦ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻāĻŋāϞ āύāĻž, āϤāĻžāĻ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻŽāĻŋ āĻ
āĻĒā§āĻā§āώāĻžāϝāĻŧ āĻĄā§āĻŦā§ āĻā§āϞāĻžāĻŽ āĻāĻŦāĻ āĻĒā§āϰāĻžāϝāĻŧ 7 āĻŦāĻāϰ āĻ
āĻĒā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒā§āϰā§āĻāĻŋāϞāĻžāĻŽ āϝ⧠āĻā§āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āϝāĻžāĻā§āĻā§ āύāĻžāĨ¤
āϏāĻŽāϏā§āϝāĻžāϰ
āĻ āĻŦāĻļā§āϝāĻ, āĻĒā§āϰāĻžāϝāĻŧ āϝ⧠āĻā§āĻ āĻĄā§āϰāĻžāĻāĻā§āϰ āĻāύā§āϝ āϤāĻžāĻĻā§āϰ āύāĻŋāĻāϏā§āĻŦ āĻĒā§āϞāĻžāĻāĻāύ āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰā§, āϤāĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ āĻāϰāĻž āĻāϰ āĻāϤ āϏāĻšāĻ āύāϝāĻŧāĨ¤ āĻĻā§āĻāĻž āĻā§āϞ āϝ⧠āϏāĻŋāϏā§āĻā§āĻŽāĻĄ āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§āϰ āϏāĻŽāĻžāύā§āϤāϰāĻžāϞ āĻĒā§āϰāĻā§āϤāĻŋāϰ āĻāĻžāϰāĻŖā§, āĻāĻĒāύāĻžāϰ āĻā§āĻĄ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāĻž āĻāĻŦāĻ āϞā§āĻĄāĻŋāĻ āĻ āĻā§āϰāĻāϤāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻāϤ āϏāĻšāĻ āύāϝāĻŧāĨ¤ āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ āĻĄā§āϰāĻžāĻāĻā§āϰ āĻāύā§āϝ āϏāĻŦāĻāĻŋāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§āύāĻŋāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻĻā§āϰā§āĻ āĻĒāϰā§āĻā§āώāĻžāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāϝāĻŧā§āĻāĻŋāĨ¤
āĻāĻāĻž āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§
āĻāĻāĻŋ āϤāĻŋāύāĻāĻŋ āĻāĻāύāĻŋāĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§:
- luks-auto-key.service - LUKS-āĻāϰ āĻāύā§āϝ āĻā§ āϏāĻš āĻĄā§āϰāĻžāĻāĻ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāϰā§
- luks-auto.target - āĻ āύā§āϤāϰā§āύāĻŋāϰā§āĻŽāĻŋāϤ systemd-cryptsetup āĻāĻāύāĻŋāĻāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻāϰāϤāĻž āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§
- luks-auto-clean.service - luks-auto-key.service āĻĻā§āĻŦāĻžāϰāĻž āϤā§āϰāĻŋ āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰā§
āĻāĻŦāĻ luks-auto-generator.sh āĻšāϞ āĻāĻāĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āϝāĻž systemd āĻĻā§āĻŦāĻžāϰāĻž āĻāĻžāϞ⧠āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻžāϰā§āύā§āϞ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻāύāĻŋāĻ āϤā§āϰāĻŋ āĻāϰā§āĨ¤ āĻ āύā§āϰā§āĻĒ āĻā§āύāĻžāϰā§āĻāϰ fstab āĻāĻāύāĻŋāĻ āĻĻā§āĻŦāĻžāϰāĻž āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤
luks-auto-generator.sh
drop-in.conf āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ systemd-cryptsetup-āĻāϰ āĻāĻāϰāĻŖ āϤāĻžāĻĻā§āϰ āύāĻŋāϰā§āĻāϰāϤāĻžāϰ āϏāĻžāĻĨā§ luks-auto.target āϝā§āĻ āĻāϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤
luks-auto-key.service āĻāĻŦāĻ luks-auto-key.sh
āĻāĻ āĻāĻāύāĻŋāĻ luks-auto-key.sh āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻžāϞāĻžāϝāĻŧ, āϝāĻž, rd.luks.* āĻā§āĻā§āϞāĻŋāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§, āĻā§āĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻĄāĻŋāϝāĻŧāĻž āĻā§āĻāĻā§ āĻĒāĻžāϝāĻŧ āĻāĻŦāĻ āĻāϰāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰā§āĨ¤ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āϏāĻŽā§āĻĒāύā§āύ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāϰā§, āĻā§āĻā§āϞāĻŋ āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ āĻĨā§āĻā§ luks-auto-clean.service āĻĻā§āĻŦāĻžāϰāĻž āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧāĨ¤
āϏā§āϤā§āϰ:
/usr/lib/dracut/modules.d/99luks-auto/module-setup.sh
#!/bin/bash
check () {
if ! dracut_module_included "systemd"; then
"luks-auto needs systemd in the initramfs"
return 1
fi
return 255
}
depends () {
echo "systemd"
return 0
}
install () {
inst "$systemdutildir/systemd-cryptsetup"
inst_script "$moddir/luks-auto-generator.sh" "$systemdutildir/system-generators/luks-auto-generator.sh"
inst_script "$moddir/luks-auto-key.sh" "/etc/systemd/system/luks-auto-key.sh"
inst_script "$moddir/luks-auto.sh" "/etc/systemd/system/luks-auto.sh"
inst "$moddir/luks-auto.target" "${systemdsystemunitdir}/luks-auto.target"
inst "$moddir/luks-auto-key.service" "${systemdsystemunitdir}/luks-auto-key.service"
inst "$moddir/luks-auto-clean.service" "${systemdsystemunitdir}/luks-auto-clean.service"
ln_r "${systemdsystemunitdir}/luks-auto.target" "${systemdsystemunitdir}/initrd.target.wants/luks-auto.target"
ln_r "${systemdsystemunitdir}/luks-auto-key.service" "${systemdsystemunitdir}/initrd.target.wants/luks-auto-key.service"
ln_r "${systemdsystemunitdir}/luks-auto-clean.service" "${systemdsystemunitdir}/initrd.target.wants/luks-auto-clean.service"
}
/usr/lib/dracut/modules.d/99luks-auto/luks-auto-generator.sh
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
. /lib/dracut-lib.sh
SYSTEMD_RUN='/run/systemd/system'
CRYPTSETUP='/usr/lib/systemd/systemd-cryptsetup'
TOUT=$(getargs rd.luks.key.tout)
if [ ! -z "$TOUT" ]; then
mkdir -p "${SYSTEMD_RUN}/luks-auto-key.service.d"
cat > "${SYSTEMD_RUN}/luks-auto-key.service.d/drop-in.conf" <<EOF
[Service]
Type=oneshot
ExecStartPre=/usr/bin/sleep $TOUT
EOF
fi
mkdir -p "$SYSTEMD_RUN/luks-auto.target.wants"
for argv in $(getargs rd.luks.uuid -d rd_LUKS_UUID); do
_UUID=${argv#luks-}
_UUID_ESC=$(systemd-escape -p $_UUID)
mkdir -p "${SYSTEMD_RUN}/systemd-cryptsetup@luksx2d${_UUID_ESC}.service.d"
cat > "${SYSTEMD_RUN}/systemd-cryptsetup@luksx2d${_UUID_ESC}.service.d/drop-in.conf" <<EOF
[Unit]
After=luks-auto.target
ConditionPathExists=!/dev/mapper/luks-${_UUID}
EOF
cat > "${SYSTEMD_RUN}/luks-auto@${_UUID_ESC}.service" <<EOF
[Unit]
Description=luks-auto Cryptography Setup for %I
DefaultDependencies=no
Conflicts=umount.target
IgnoreOnIsolate=true
Before=luks-auto.target
BindsTo=dev-disk-byx2duuid-${_UUID_ESC}.device
After=dev-disk-byx2duuid-${_UUID_ESC}.device luks-auto-key.service
Before=umount.target
[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutSec=0
ExecStart=/etc/systemd/system/luks-auto.sh ${_UUID}
ExecStop=$CRYPTSETUP detach 'luks-${_UUID}'
Environment=DRACUT_SYSTEMD=1
StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
EOF
ln -fs ${SYSTEMD_RUN}/luks-auto@${_UUID_ESC}.service $SYSTEMD_RUN/luks-auto.target.wants/luks-auto@${_UUID_ESC}.service
done
/usr/lib/dracut/modules.d/99luks-auto/luks-auto-key.service
[Unit]
Description=LUKS AUTO key searcher
After=cryptsetup-pre.target
Before=luks-auto.target
DefaultDependencies=no
[Service]
Environment=DRACUT_SYSTEMD=1
Type=oneshot
ExecStartPre=/usr/bin/sleep 1
ExecStart=/etc/systemd/system/luks-auto-key.sh
RemainAfterExit=true
StandardInput=null
StandardOutput=syslog
StandardError=syslog+console
/usr/lib/dracut/modules.d/99luks-auto/luks-auto-key.sh
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
export DRACUT_SYSTEMD=1
. /lib/dracut-lib.sh
MNT_B="/tmp/luks-auto"
ARG=$(getargs rd.luks.key)
IFS=$':' _t=(${ARG})
KEY=${_t[0]}
F_FIELD=''
F_VALUE=''
if [ ! -z $KEY ] && [ ! -z ${_t[1]} ];then
IFS=$'=' _t=(${_t[1]})
F_FIELD=${_t[0]}
F_VALUE=${_t[1]}
F_VALUE="${F_VALUE%"}"
F_VALUE="${F_VALUE#"}"
fi
mkdir -p $MNT_B
finding_luks_keys(){
local _DEVNAME=''
local _UUID=''
local _TYPE=''
local _LABEL=''
local _MNT=''
local _KEY="$1"
local _F_FIELD="$2"
local _F_VALUE="$3"
local _RET=0
blkid -s TYPE -s UUID -s LABEL -u filesystem | grep -v -E -e "TYPE=".*_member"" -e "TYPE="crypto_.*"" -e "TYPE="swap"" | while IFS=$'' read -r _line; do
IFS=$':' _t=($_line);
_DEVNAME=${_t[0]}
_UUID=''
_TYPE=''
_LABEL=''
_MNT=''
IFS=$' ' _t=(${_t[1]});
for _a in "${_t[@]}"; do
IFS=$'=' _v=(${_a});
temp="${_v[1]%"}"
temp="${temp#"}"
case ${_v[0]} in
'UUID')
_UUID=$temp
;;
'TYPE')
_TYPE=$temp
;;
'LABEL')
_LABEL=$temp
;;
esac
done
if [ ! -z "$_F_FIELD" ];then
case $_F_FIELD in
'UUID')
[ ! -z "$_F_VALUE" ] && [ "$_UUID" != "$_F_VALUE" ] && continue
;;
'LABEL')
[ ! -z "$_F_VALUE" ] && [ "$_LABEL" != "$_F_VALUE" ] && continue
;;
*)
[ "$_DEVNAME" != "$_F_FIELD" ] && continue
;;
esac
fi
_MNT=$(findmnt -n -o TARGET $_DEVNAME)
if [ -z "$_MNT" ]; then
_MNT=${MNT_B}/KEY-${_UUID}
mkdir -p "$_MNT" && mount -o ro "$_DEVNAME" "$_MNT"
_RET=$?
else
_RET=0
fi
if [ "${_RET}" -eq 0 ] && [ -f "${_MNT}/${_KEY}" ]; then
cp "${_MNT}/${_KEY}" "$MNT_B/${_UUID}.key"
info "Found ${_MNT}/${_KEY} on ${_UUID}"
fi
if [[ "${_MNT}" =~ "${MNT_B}" ]]; then
umount "$_MNT" && rm -rfd --one-file-system "$_MNT"
fi
done
return 0
}
finding_luks_keys $KEY $F_FIELD $F_VALUE
/usr/lib/dracut/modules.d/99luks-auto/luks-auto.target
[Unit]
Description=LUKS AUTO target
After=systemd-readahead-collect.service systemd-readahead-replay.service
After=cryptsetup-pre.target luks-auto-key.service
Before=cryptsetup.target
/usr/lib/dracut/modules.d/99luks-auto/luks-auto.sh
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
export DRACUT_SYSTEMD=1
. /lib/dracut-lib.sh
MNT_B="/tmp/luks-auto"
CRYPTSETUP='/usr/lib/systemd/systemd-cryptsetup'
for i in $(ls -p $MNT_B | grep -v /);do
info "Trying $i on $1..."
$CRYPTSETUP attach "luks-$1" "/dev/disk/by-uuid/$1" $MNT_B/$i 'tries=1'
if [ "$?" -eq "0" ]; then
info "Found $i for $1"
exit 0
fi
done
warn "No key found for $1. Fallback to passphrase mode."
/usr/lib/dracut/modules.d/99luks-auto/luks-auto-clean.service
[Unit]
Description=LUKS AUTO key cleaner
After=cryptsetup.target
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/usr/bin/rm -rfd --one-file-system /tmp/luks-auto
/etc/dracut.conf.d/luks-auto.conf
add_dracutmodules+=" luks-auto "āĻŦāĻŋāύā§āϝāĻžāϏ
mkdir -p /usr/lib/dracut/modules.d/99luks-auto/
# ŅаСĐŧĐĩŅаĐĩĐŧ ŅŅŅ ĐŋĐžŅŅи вŅĐĩ ŅаКĐģŅ
chmod +x /usr/lib/dracut/modules.d/99luks-auto/*.sh
# ŅОСдаĐĩĐŧ ŅаКĐģ /etc/dracut.conf.d/luks-auto.conf
# Đ ĐŗĐĩĐŊĐĩŅиŅŅĐĩĐŧ ĐŊОвŅĐš initramfs
dracut -f
āĻāĻĒāϏāĻāĻšāĻžāϰ
āϏā§āĻŦāĻŋāϧāĻžāϰ āĻāύā§āϝ, āĻāĻŽāĻŋ sysvinit āĻŽā§āĻĄā§āϰ āĻŽāϤ⧠āĻāĻžāϰā§āύā§āϞ āĻāĻŽāĻžāύā§āĻĄ āϞāĻžāĻāύ āĻŦāĻŋāĻāϞā§āĻĒāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝ āĻŦāĻāĻžāϝāĻŧ āϰā§āĻā§āĻāĻŋ, āϝāĻž āĻĒā§āϰāĻžāύ⧠āĻāύāϏā§āĻāϞā§āĻļāύ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤
āĻāϤā§āϏ: www.habr.com
