āĻāĻ˛ā§āĻĒāĻāĻŋ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ
āĻ¨ā§āĻ āĻāĻā§, āĻ¯āĻāĻ¨ āĻ¸ā§āĻ¨ā§āĻā§āĻ¸ 7 (RHEL 7) āĻĒā§āĻ°āĻāĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¸ā§āĻ¨ā§āĻā§āĻ¸ 6 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĄā§āĻ°āĻžāĻāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻā§āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ USB āĻĢā§āĻ˛ā§āĻ¯āĻžāĻļ āĻĄā§āĻ°āĻžāĻāĻ āĻ¸āĻāĻ¯ā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĄā§āĻ°āĻžāĻāĻāĻā§āĻ˛āĻŋāĻ° āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻ¨āĻ˛āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻā§āĻ¨āĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¯āĻāĻ¨ 7 āĻŽā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻšāĻ āĻžā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ
āĻā§āĻ¯āĻ¸ā§āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨āĻŋāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ˛āĻžāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĄā§āĻ°āĻžāĻāĻāĻā§ āĻ¸āĻŋāĻ¸āĻāĻŋāĻ¨āĻŋāĻā§ āĻĢā§āĻ°āĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻāĻŦ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛: echo 'omit_dracutmodules+=" systemd "' > /etc/dracut.conf.d/luks-workaround.conf
āĻ¯āĻž āĻ
āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸ā§āĻ¨ā§āĻĻāĻ°ā§āĻ¯ āĻĨā§āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻā§ - āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻĻā§āĻ°ā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨, āĻ¯āĻž āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻļā§āĻ°ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧāĻā§ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°ā§āĻā§āĨ¤
āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻāĻ¨āĻ āĻāĻā§:
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻ¨āĻž āĻāĻ°ā§, āĻāĻŽāĻŋ āĻāĻāĻŋ āĻ¨āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋ āĻāĻŦāĻ āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻāĻ¨āĻ¸āĻžāĻ§āĻžāĻ°āĻŖā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻāĻŋ, āĻ¯āĻžāĻ°āĻž āĻāĻā§āĻ°āĻšā§, āĻĒāĻĄāĻŧā§āĻ¨āĨ¤
āĻā§āĻŽāĻŋāĻāĻž
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ, āĻ¯āĻāĻ¨ āĻāĻŽāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻ¨ā§āĻā§āĻ¸ 7 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ, āĻ¤āĻāĻ¨ āĻā§āĻ¨ āĻāĻŦā§āĻ āĻ¸ā§āĻˇā§āĻāĻŋ āĻāĻ°ā§āĻ¨āĻŋ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻāĻŽā§āĻ¨ā§āĻ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ā§ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻĨāĻŽā§ āĻā§āĻŦ āĻāĻāĻāĻž āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ
āĻ¨ā§āĻāĻŦ āĻāĻ°āĻŋāĻ¨āĻŋāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻ˛ā§, āĻāĻŽāĻŋ systemd āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§āĻāĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻāĻžāĻĒāĻāĻŋ āĻāĻāĻā§ āĻ¨āĻˇā§āĻ āĻšāĻ¯āĻŧā§ āĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯ā§āĻšā§āĻ¤ā§ āĻĄā§āĻ°āĻžāĻāĻ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°āĻ°āĻž āĻĄāĻŋāĻ¸ā§āĻ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒāĻļāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦā§āĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĻ¨āĻŋāĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°ā§āĻā§, āĻ¤āĻŦā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻĄāĻŋāĻ¸ā§āĻā§āĻ° āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°āĻžāĻ¨ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻ¨āĻ¯āĻŧāĨ¤
āĻāĻāĻā§āĻā§āĻ āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻāĻŋ āĻ
āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒā§āĻ°ā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽāĻĄ āĻŽā§āĻĄā§ 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