[crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
ThOsam
Hankyu
Messages : 38
Inscription : jeu. 09 avr. 2015, 09:18

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage

Message par ThOsam »

[edit 2016-05-12 19:50 : correction erreur mkinitcpio]
Mon problème est RÉSOLU :

@benjarobin tu m'as mis la puce à l'oreille concernant l'utilisation de /dev/mapper dans le crypttab. Effectivement après coup c'est logique car avec de pouvoir accéder à LVM il faut accéder à la partition chiffrée, et donc indiquer son nom dans crypttab, ici "cryptdat", avec son UUID. Merci :)
Ce qui suit dans le fstab est assez simple en fonctionne du coup car la partition est bien déverrouillée avec le crypttab.


SOLUTION >> Pour résumer, avec le contenus des fichiers concernés :

1. En sortie de lsblk -f (avec les disques montés et déverrouillés) :

Code : Tout sélectionner

[mansi ~]# lsblk -f
NAME                FSTYPE      LABEL              UUID                                   MOUNTPOINT
sda                                                                                       
├─sda1              ntfs        Réservé au système 0AFE92B1FE929493                       
├─sda2              ntfs                           86C899A6C89994D1                       
├─sda3              ext2        BOOT-MSI           24d93409-874b-4003-b26b-5ef872a58921   /boot
└─sda4              crypto_LUKS                    d8d291c0-03b4-4710-bdf7-80c1a797cea8   
  └─vgsys           LVM2_member                    8I0R9R-bLLR-2mTR-nfYy-yByk-tvCk-mLdae1 
    ├─vgsys-lvswap  swap        SWAPLVM-MSI        58ae7159-e378-4c9b-906c-5ed2d9065fe6   [SWAP]
    ├─vgsys-lvroot  ext4        ROOTLVM-MSI        b989c671-1d74-470e-ba8e-285aa6e035ac   /
    └─vgsys-lvhome  ext4        HOMELVM-MSI        1151ea58-6af8-47cc-9308-9d849326969e   /home
sdb                                                                                       
└─sdb1              crypto_LUKS                    bf58ee54-0e7a-483b-a9ce-02e9611120e3   
  └─cryptdat        LVM2_member                    mVKuTq-vUnj-KT3F-gDUa-kyQQ-te4j-XPg7st 
    └─vgdat-lvadata ext4                           517e7bb9-e483-484a-9e6e-8977f36fe740   /adata
2. Fichier /etc/crypttab :

Code : Tout sélectionner

# crypttab: mappings for encrypted partitions
#
# Each mapped device will be created in /dev/mapper, so your /etc/fstab
# should use the /dev/mapper/<name> paths for encrypted devices.
#
# The Arch specific syntax has been deprecated, see crypttab(5) for the
# new supported syntax.
#
# NOTE: Do not list your root (/) partition here, it must be set up
#       beforehand by the initramfs (/etc/mkinitcpio.conf).

# <name>       <device>                                     <password>              <options>
# home         UUID=b8ad5c18-f445-495d-9095-c9ec4f9d2f37    /etc/mypassword1
# data1        /dev/sda3                                    /etc/mypassword2
# data2        /dev/sda5                                    /etc/cryptfs.key
# swap         /dev/sdx4                                    /dev/urandom            swap,cipher=aes-cbc-essiv:sha256,size=256
# vol          /dev/sdb7                                    none

cryptdat        UUID=bf58ee54-0e7a-483b-a9ce-02e9611120e3       /crypto_keyfile.bin     luks
3. Fichier /etc/fstab :

Code : Tout sélectionner

# crypttab: mappings for encrypted partitions
#
# Each mapped device will be created in /dev/mapper, so your /etc/fstab
# should use the /dev/mapper/<name> paths for encrypted devices.
#
# The Arch specific syntax has been deprecated, see crypttab(5) for the
# new supported syntax.
#
# NOTE: Do not list your root (/) partition here, it must be set up
#       beforehand by the initramfs (/etc/mkinitcpio.conf).

# <name>       <device>                                     <password>              <options>
# home         UUID=b8ad5c18-f445-495d-9095-c9ec4f9d2f37    /etc/mypassword1
# data1        /dev/sda3                                    /etc/mypassword2
# data2        /dev/sda5                                    /etc/cryptfs.key
# swap         /dev/sdx4                                    /dev/urandom            swap,cipher=aes-cbc-essiv:sha256,size=256
# vol          /dev/sdb7                                    none

cryptdat        UUID=bf58ee54-0e7a-483b-a9ce-02e9611120e3       /crypto_keyfile.bin     luks
4. Fichier /etc/mkinitcpio.conf

Code : Tout sélectionner

# vim:set ft=sh
# MODULES
# The following modules are loaded before any boot hooks are
# run.  Advanced users may wish to specify all system modules
# in this array.  For instance:
#     MODULES="piix ide_disk reiserfs"
MODULES=""

# BINARIES
# This setting includes any additional binaries a given user may
# wish into the CPIO image.  This is run last, so it may be used to
# override the actual binaries included by a given hook
# BINARIES are dependency parsed, so you may safely ignore libraries
BINARIES=""

# FILES
# This setting is similar to BINARIES above, however, files are added
# as-is and are not parsed in any way.  This is useful for config files.
FILES="/crypto_keyfile.bin"

# HOOKS
# This is the most important setting in this file.  The HOOKS control the
# modules and scripts added to the image, and what happens at boot time.
# Order is important, and it is recommended that you do not change the
# order in which HOOKS are added.  Run 'mkinitcpio -H <hook name>' for
# help on a given hook.
# 'base' is _required_ unless you know precisely what you are doing.
# 'udev' is _required_ in order to automatically load modules
# 'filesystems' is _required_ unless you specify your fs modules in MODULES
# Examples:
##   This setup specifies all modules in the MODULES setting above.
##   No raid, lvm2, or encrypted root is needed.
#    HOOKS="base"
#
##   This setup will autodetect all modules for your system and should
##   work as a sane default
#    HOOKS="base udev autodetect block filesystems"
#
##   This setup will generate a 'full' image which supports most systems.
##   No autodetection is done.
#    HOOKS="base udev block filesystems"
#
##   This setup assembles a pata mdadm array with an encrypted root FS.
##   Note: See 'mkinitcpio -H mdadm' for more information on raid devices.
#    HOOKS="base udev block mdadm encrypt filesystems"
#
##   This setup loads an lvm2 volume group on a usb device.
#    HOOKS="base udev block lvm2 filesystems"
#
##   NOTE: If you have /usr on a separate partition, you MUST include the
#    usr, fsck and shutdown hooks.
HOOKS="base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems pcmcia resume fsck"

# COMPRESSION
# Use this to compress the initramfs image. By default, gzip compression
# is used. Use 'cat' to create an uncompressed image.
#COMPRESSION="gzip"
#COMPRESSION="bzip2"
#COMPRESSION="lzma"
#COMPRESSION="xz"
#COMPRESSION="lzop"
#COMPRESSION="lz4"

# COMPRESSION_OPTIONS
# Additional options for the compressor
#COMPRESSION_OPTIONS=""
La régénération de l'initramfs n'est pas nécessaire car ici ce n'est pas une partition sur laquelle est présent root (cf. explications détaillées post ci-dessous, merci @Xorg)


Ici le dévéroulliage de la partition chiffrée se fait via un keyfile intégré dans l'initramfs (procédure de mise en place plutôt bien expliquée ici : "Wiki (EN) dm-crypt/Device encryption | With a keyfile embedded in the initramfs" https://wiki.archlinux.org/index.php/Dm ... _initramfs)
Dernière modification par ThOsam le jeu. 12 mai 2016, 19:57, modifié 1 fois.
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage

Message par Xorg »

Désolé de venir à l'encontre de ce que certaines choses ont été écrites, mais pour l'initramfs, je ne crois pas.
C'est valable dans le cas d'une partition système cryptée, mais dans son cas il ne s'agit pas d'une partition système. En fait, je m'étais posé la même question que vous, mais c'est après avoir fait quelques recherches que j'en suis arrivé à cette conclusion.
Un peu d'explications : l'initramfs est lancé, il monte la partition root sans problème (vu qu'elle n'est pas cryptée). Ensuite, quand il rend la main au système, c'est systemd qui va s'occuper tout seul de ça avec ses "générateurs" (en lisant le fichier /etc/crypttab), et ensuite il s'occupe de monter les partitions (en lisant /etc/fstab).

Code : Tout sélectionner

systemd-cryptsetup-generator is a generator that translates /etc/crypttab into native systemd units early at boot and when configuration of the system manager is reloaded. This will create
systemd-cryptsetup@.service(8) units as necessary.
systemd-cryptsetup-generator implements systemd.generator(7).
Bien sûr, ça ne fonctionnait pas car son fichier /etc/crypttab était incorrect. :)

ThOsam a écrit :Ne pas oublier de régénérer l'initramfs, via la commande mkinitcpio -P linux
C'est -p si tu veux spécifier le noyau, et -P pour tous, mais -P linux ça n'a pas de sens...

Code : Tout sélectionner

-P, --allpresets
	Process all presets contained in /etc/mkinitcpio.d. See the -p option for more detail about presets.

-p, --preset preset
	Build initramfs image(s) according to specified preset. This may be a file in /etc/mkinitcpio.d (without the .preset extension) or a full, absolute path to a file. This option may be
	specified multiple times to process multiple presets.
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par benjarobin »

En effet tu as raison. Mais dans ce cas il ne faut pas ajouter les hooks lié à encrypt dans l'initramfs
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
ThOsam
Hankyu
Messages : 38
Inscription : jeu. 09 avr. 2015, 09:18

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par ThOsam »

Merci @Xorg

C'est ce que j'avais lu au début concernant l'initramfs et la commande mkinitcpio mais dans le doute et n'étant pas sûr j'ai plutôt suivi l'avis de plus spécialistes que moi :)

Donc ce n'est pas nécessaire de relancer régénérer l'initramfs dans mon cas puisque ce n'est pas une partition root.

Concernant la commande mkinitcpio -P linux si je met un p minuscule suivi de linux celle-ci me sort une erreur, d'où ma majuscule, suivie de linux par ignorance, tant que ça fonctionne... Hum

@benjarobin : j'ai en fait un second disque sur lequel j'ai LUKS avec LVM pour les partitions root, home et swap. Les hooks encrypt et lvm2 me sont nécessaires. En revanche je vais enlever usr et shutdown sur tes conseils.

Merci à vous deux, je vais éditer ma solution plus haut pour enlever les erreurs.
ThOsam
Hankyu
Messages : 38
Inscription : jeu. 09 avr. 2015, 09:18

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par ThOsam »

Petit complément :
Si j'avais voulu faire ce déverrouillage au démarrage via l'initramfs, j'aurais du indiquer quoi ? C'est possible ?
Je sais que dans le fichier /etc/default/grub la ligne GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=/dev/sda4:vgsys resume=UUID=58ae7159-e378-4c9b-906c-5ed2d9065fe6" permet d'indiquer quelle partition chiffrée utiliser. Cela fonctionnerait également en ajoutant des infos supplémentaires avec mon autre partition LUKS là-dedans ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17186
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par benjarobin »

Non, par défaut ce n'est pas possible je crois. Mais il "suffirait" d'écrire un hook qui le ferait.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Xorg
Maître du Kyudo
Messages : 1933
Inscription : dim. 22 janv. 2012, 19:25
Localisation : Entre le clavier et la chaise.

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par Xorg »

Ce n'est pas le but du hook encrypt ? :)

Code : Tout sélectionner

==> Help for hook 'encrypt':
This hook allows for an encrypted root device. Users should specify the device
to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
where 'device' is the path to the raw device, and 'dmname' is the name given to
the device after unlocking, and will be available as /dev/mapper/dmname.

For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
the kernel cmdline, where 'device' represents the raw block device where the key
exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
the absolute path of the keyfile within the device.

Without specifying a keyfile, you will be prompted for the password at runtime.
This means you must have a keyboard available to input it, and you may need
the keymap hook as well to ensure that the keyboard is using the layout you
expect.
ThOsam a écrit :Concernant la commande mkinitcpio -P linux si je met un p minuscule suivi de linux celle-ci me sort une erreur, d'où ma majuscule, suivie de linux par ignorance, tant que ça fonctionne... Hum
Normal, tu utilises Manjaro, et il n'y a pas de paquet linux dans Manjaro car cette dernière propose d'installer plusieurs versions du noyau (contrairement à Arch Linux). Par exemple, sous Manjaro, il y a le paquet linux45, qui désigne Linux 4.5.
Tu peux avoir une idée des noyaux installés en regardant les fichiers dans /etc/mkinitcpio.d. S'il y a un fichier linux45.preset (la plupart du temps, c'est le même nom que le paquet), la commande sera mkinitcpio -p linux45.
Ce n'est pas bien de recopier bêtement des commandes sans les comprendre. :non:
Arch Linux x86_64 - Sway
AMD Ryzen 5 3600X - 32 Go de DDR4 - SSD NVMe 1 To + SSD SATA 250 Go - Sapphire NITRO+ Radeon RX 580
Image AUR___Image Wiki___Image GitHub
ThOsam
Hankyu
Messages : 38
Inscription : jeu. 09 avr. 2015, 09:18

Re: [crypttab, fstab] Monter partition LUKS + LVM au démarrage (résolu)

Message par ThOsam »

@Xorg
Merci pour ce détail, que j'ai du lire un jour mais que j'ai du oublier depuis...
Ce qui explique que la commande fonctionne quand je la lance sous Archlinux mais pas sous Manjaro ou je met le P en majuscule.
Répondre