AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 790990
Accepted
pedda
pedda
Asked: 2025-02-13 09:20:18 +0800 CST2025-02-13 09:20:18 +0800 CST 2025-02-13 09:20:18 +0800 CST

Linux Mint 22: Problemas de configuração com initramfs, (partição criptografada luks com LVM para root, home, swap)

  • 772

Minha configuração: Pré-requisitos:

  • Dual Boot Windows 10/anteriormente Ubuntu 24.04 (vindo de 22.04)
  • Tabela de partição:
    /dev/nvme0n1p7                   202G   96M  202G   1% 
    /ntfs_data
    /dev/nvme0n1p3                   230G   54G  177G  24% 
    /windows
    /dev/nvme0n1p5                   3,0G  288M  2,6G  11% /boot
    /dev/mapper/ubuntu--vg-home      2,8T  1,7T  964G  64% /home
    /dev/nvme0n1p1                   256M  158M   99M  62% 
    /boot/efi
    tmpfs                            1,6G  300K  1,6G   1% /run/user/1000
    /home/xxx/.Private               2,8T  1,7T  964G  64% /home/xxx
    /dev/mapper/usb1TB_202304_crypt  938G  890G  559M 100% 
    /backup1TB
    /backup1TB/home_xxx_bck          938G  890G  559M 100% 
    /backup1TB/home_xxx_bck
    
    captura de tela do gparted da tabela de partição do meu ssd
  • /dev/nvme0n1p6 é o dispositivo criptografado luks com LVM configurado:
    • raiz (243 GB)
    • casa (2,8 TB)
    • trocar (16 GB)

Etapas de instalação para produzir erro no initramfs:

Usei o instalador USB do Linux Mint 22 (Imagem baixada em janeiro de 2025). Consegui instalar o LVM2 e o pacote cryptsetup para obter assistência para LVM e LUKS. Configurei em 2022 no Ubuntu 22.04 o LVM como o seguinte:

# vgs
  WARNING: Couldn't find device with uuid CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH.
  WARNING: Couldn't find device with uuid I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs.
  WARNING: VG ubuntu-vg is missing PV CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH (last written to /dev/mapper/ubuntu-vg1).
  WARNING: VG ubuntu-vg is missing PV I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs (last written to /dev/mapper/ubuntu-vg2).
  VG        #PV #LV #SN Attr   VSize  VFree   
  ubuntu-vg   3   4   0 wz-pn- <6,01t <180,97g

# pvs
  WARNING: Couldn't find device with uuid CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH.
  WARNING: Couldn't find device with uuid I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs.
  WARNING: VG ubuntu-vg is missing PV CQVk01-WJQL-pjIi-opcT-oESN-UOb1-judhlH (last written to /dev/mapper/ubuntu-vg1).
  WARNING: VG ubuntu-vg is missing PV I5OUXJ-OkxW-403c-rEVJ-BmyG-Rd4M-r7SSFs (last written to /dev/mapper/ubuntu-vg2).
  PV                      VG        Fmt  Attr PSize  PFree   
  /dev/mapper/ubuntu-luks ubuntu-vg lvm2 a--   3,21t <180,97g
  [unknown]               ubuntu-vg lvm2 a-m  <1,40t       0 
  [unknown]               ubuntu-vg lvm2 a-m  <1,40t       0 

# lvs
  LV         VG        Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  backupHome ubuntu-vg -wi-----p-    2,79t                                                    
  home       ubuntu-vg -wi-ao----    2,78t                                                    
  root       ubuntu-vg -wi-ao---- <247,33g                                                    
  swap_1     ubuntu-vg -wi-ao----   16,00g  

Abri um bash, abri o LUKS e ativei o LVM (o LVM foi criado anteriormente na versão 22.04 em 2022):

# cryptsetup luksOpen /dev/nvmeon1p6 ubuntu-luks
# lvchange -ay ubuntu-vg

Então iniciei o aplicativo de instalação e escolhi o modo manual para atribuir as partições, que configurei conforme mostrado acima, com formatação de root e /dev/nvme0n1p5 como partição /boot (não criptografada).

Depois disso, inicializei essas novas instalações instaladas do Linux Mint 22. Mas, além disso, curiosamente, na primeira vez, o diálogo de senha gráfica na sequência de inicialização no início só apareceu uma vez e descriptografou os luks, mas não conseguiu atribuir a partição LVM corretamente. Depois disso, nem mesmo o volume criptografado LUKS foi encontrado ou detectado e em todos os casos acabei depois de um longo tempo de espera no initramfs em caixa ocupado.

Aqui eu sempre tive que repetir as duas instruções acima antes de poder sair do initramfs e continuar inicializando meu sistema.

Descobri que não havia crypttab em /etc/crypttab e instalei um como

# cat /etc/crypttab 
# <target name>         <source device>                           <key file>      <options>
# mounted /, /home, swap_1
ubuntu-luks             UUID=b910aded-9314-403f-a350-7892ba95ffd5 none            luks
# mounted as /backupHome LV part1, partial Loading (mustn't be present during boot)
ubuntu-luks_backupHome1 UUID=b1d9ec9c-7dac-445f-998b-695b2ddf6daa none            luks
#ubuntu-luks_backupHome1 UUID=b1d9ec9c-7dac-445f-998b-695b2ddf6daa none            luks,noauto
# mounted as /backupHome LV part2, partial loading (mustn't be present during boot)
ubuntu-luks_backupHome2 UUID=9c5b65e8-5785-44be-85c7-3009cbc1e02a none            luks
#ubuntu-luks_backupHome2 UUID=9c5b65e8-5785-44be-85c7-3009cbc1e02a none            luks,noauto
usb1TB_202304_luks      UUID=4c4b603f-9146-4cb0-9621-9aa098ec592c none            luks

# ubuntu-luks             UUID=b910aded-9314-403f-a350-7892ba95ffd5 none            luks  # mounted on /
# ubuntu-luks_backupHome1 UUID=b1d9ec9c-7dac-445f-998b-695b2ddf6daa none            luks,noauto  # mounted as /backupHome, part1
# ubuntu-luks_backupHome2 UUID=9c5b65e8-5785-44be-85c7-3009cbc1e02a none            luks,noauto  # mounted as /backupHome, part2

e /etc/fstab:

# cat /etc/fstab 
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system>                           <mount point>   <type>  <options>                 <dump>  <pass>
/dev/mapper/ubuntu--vg-root               /               ext4    errors=remount-ro         0       1
# /boot was on /dev/nvme0n1p5 during installation
UUID=712868f5-29cc-429a-b535-375a3d868fa3 /boot           ext4    defaults                  0       2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=E079-2792                            /boot/efi       vfat    umask=0077                0       1
/dev/mapper/ubuntu--vg-home               /home           ext4    defaults                  0       2
# /ntfs_data was on /dev/nvme0n1p7 during installation
UUID=3B269E2A1843CA0B                     /ntfs_data      ntfs    defaults,umask=007,gid=46 0       0
# /windows was on /dev/nvme0n1p3 during installation
UUID=4C30FF1730FF06AC                     /windows        ntfs    defaults,umask=007,gid=46 0       0
/dev/mapper/ubuntu--vg-swap_1             none            swap    sw                        0       0
/dev/mapper/ubuntu--vg-backupHome         /backupHome     ext4    defaults,nofail           0       2

então atualizei o initramfs com $ sudo update-initramfs -k all -c

Agora eu consertei permanentemente a criptografia do luks (então o diálogo aparece toda vez durante a inicialização, como descrito), mas a ativação do lvm $ lvchange -ay ubuntu-vg não é feita no initramfs!

Como eu poderia realizar esse último passo - ativar o grupo LV?

  • Observação: a mídia lvm de backup, que é uma unidade USB, normalmente não está presente durante a inicialização!!!
    # mounted as /backupHome LV part1, partial Loading (mustn't be present during boot)
    ubuntu-luks_backupHome1  UUID=xxx none            luks
    #ubuntu-luks_backupHome1 UUID=xxx none            luks,noauto
    # mounted as /backupHome LV part2, partial loading (mustn't be present during boot) 
    ubuntu-luks_backupHome2  UUID=xxx none            luks
    #ubuntu-luks_backupHome2 UUID=xxx none            luks,noauto
    

[EDIT 101502013]: Hoje ele inicializou com erro algo como

/sbin/lvchange not found

no initramfs. Uma coisa que descobri que era diferente no initrams, era que lvmos comandos do como lvs, pvs, vgs, lvchange, lvcreateetc. funcionavam apenas com o comando principal lvmcomo prefixo. Também descobri que no /sbinin initramfstem apenas um link simbólico como um alias estranho lvm -> vgchange, parece que arg0 se torna arg1 após aplicar o link. É isso que tento em seguida, colocando esse link no initramfs.

[EDIT2] Coloquei meu script lvm start e activating primeiro em local-top, depois em init-bottom, por último em local-bottom, e atualizei o initramfs de acordo, update-initramfs -k all -c mas sem sucesso, o LUKS é descriptografado, mas o script não é executado ou é executado muito cedo, e cada vez que ele acaba finalmente no console initramfs com seu busybox. Quando eu executo manualmente o script e saio, ele continua inicializando todas as vezes. Mas isso é muito desconfortável e, na mesma medida, demorado por causa dos muitos atrasos de tempo, em vez de executar o script, ele produz repetidamente esta linha de saída:

mdadm: No array found in config file or automatically

Este é o local real do meu script:

# tree /etc/initramfs-tools/
/etc/initramfs-tools/
├── conf.d
│   └── cryptsetup
├── hooks
├── initramfs.conf
├── modules
├── scripts
│   ├── init-bottom
│   ├── init-premount
│   ├── init-top
│   ├── local-bottom
│   │   └── lvm
│   ├── local-premount
│   ├── local-top
│   ├── nfs-bottom
│   ├── nfs-premount
│   ├── nfs-top
│   └── panic
└── update-initramfs.conf

14 directories, 5 files

o script parece executável assim:

#!/bin/sh
# Check and activate LVM volumes regardless of input arguments

# Log the intention to activate LVM volumes
echo "Activating LVM volumes..." > /dev/console

# Activate the volume group
if /sbin/vgchange -ay ubuntu-vg; then
    echo "Logical volume group ubuntu-vg successfully activated." > /dev/console
    /sbin/lvm lvchange -ay ubuntu-vg --activationmode partial
else
    echo "Failed to activate logical volume group ubuntu-vg." > /dev/console
fi

No meio tempo, esvaziei uma imagem initrd para ver onde o comando cryptsetup é executado, mas parece um pouco complicado: unmkinitramfs -v initrd.img-6.8.0-53-generic /tmp/initrd e pesquisei por cryptsetup :

# find /tmp/initrd/ -type f -iname "*" -exec grep -Hn "cryptsetup " {} \;
grep: /tmp/initrd/main/usr/sbin/cryptsetup: binary file matches
grep: /tmp/initrd/main/usr/lib/x86_64-linux-gnu/libcryptsetup.so.12.10.0: binary file matches
grep: /tmp/initrd/main/usr/lib/x86_64-linux-gnu/libmount.so.1.1.0: binary file matches
/tmp/initrd/main/usr/lib/cryptsetup/functions:320:        if [ -e "$CRYPTTAB_OPTION_header" ] && /sbin/cryptsetup isLuks -- "$CRYPTTAB_OPTION_header"; then
/tmp/initrd/main/usr/lib/cryptsetup/functions:324:        if /sbin/cryptsetup isLuks -- "$s"; then
/tmp/initrd/main/usr/lib/cryptsetup/functions:366:    /sbin/cryptsetup -T1 \
/tmp/initrd/main/usr/lib/cryptsetup/functions:396:    /sbin/cryptsetup -T1 \
/tmp/initrd/main/usr/bin/cryptroot-unlock:89:# birth date) of the cryptsetup process with same $CRYPTTAB_NAME.
/tmp/initrd/main/usr/bin/cryptroot-unlock:118:  # find the cryptsetup process with same $CRYPTTAB_NAME
/tmp/initrd/main/usr/bin/cryptroot-unlock:173:      echo "cryptsetup: cryptsetup failed, bad password or options?" >&2
/tmp/initrd/main/scripts/local-top/cryptroot:127:    # our `cryptroot-unlock` script searches for cryptsetup processes
/tmp/initrd/main/scripts/local-top/cryptroot:164:            cryptsetup_message "ERROR: $CRYPTTAB_NAME: cryptsetup failed, bad password or options?"
/tmp/initrd/main/scripts/local-top/cryptroot:177:                /sbin/cryptsetup remove -- "$CRYPTTAB_NAME"

**Alguma ideia? O que eu fiz errado, ou poderia ter feito diferente? **

linux-mint
  • 1 1 respostas
  • 53 Views

1 respostas

  • Voted
  1. Best Answer
    pedda
    2025-02-18T17:53:41+08:002025-02-18T17:53:41+08:00

    De acordo com o comentário de @frostschutz acima, a solução foi remover meu script personalizado de qualquer diretório de script do initramfs.

    O problema: como ele possivelmente cresceu e como eu finalmente o diminuí:

    2 causas raiz:

    1. O sistema deve ter tido uma sequência de inicialização especialmente do LVM montado virtualmente (dm-1 a dm-7) que eventualmente mudou cada vez que eu colocava outro pendrive no meu sistema (eu tenho alguns por diferentes razões). O sistema saiu de ordem e de alguma forma a tela de login do LUKS durante a inicialização e o /etc/crypttab desapareceram do initramfs ou o crypttab não estava presente em nenhum caso.
    2. Amplie meu VG com um dispositivo de backup USB opcional.

    Duas etapas gerais para resolver o problema e uma que também não estava funcionando por alguns motivos, não entendi

    1. Principal 1: Crie /etc/crypttab (veja acima na pergunta meu exemplo) no sistema, fornecido com os UUIDs do LVM
      • UUID do dispositivo físico para volumes físicos criptografados LUKS
      • UUIDs do LVM (virtual) de cada volume logival configurado eu salvei e atualizei o initramfs com sudo update-initramfs -k all -c
    2. A etapa de escrever um pequeno script de ativação, com ativação de modo parcial para a parte ausente do VG falhou, o script não teve nenhum efeito durante a inicialização, mesmo tendo sido colocado nas pastas init-bottom ou local-bottom ou /etc/initramfs/scripts:
      • Então eu o removi do initramfs novamente finalmente
    3. Principal 2: Eu removi a solução de backup USB (então os dois volumes físicos e um lógico) com vgsplit ubuntu-vg ubuntu-vg-backup /dev/mapper/ubuntu-luks_backupHome1 /dev/mapper/ubuntu-luks_backupHome2argumentos VG principal (arg 1), novo VG e volume lógico virtual
    4. Atualizar o initramfs resolveu o problema finalmente e o laptop inicializa através da tela de login do LUKS

    Pequenos problemas de descanso permanecem

    1. se o grupo USB VG opcional não estiver presente, há um tempo limite de 90 s durante a sequência de inicialização, posso superar isso configurando a entrada crypttab para noauto, mas isso significaria que eu teria que montá-la manualmente completa. Como todos os meus dispositivos LUKS compartilham a mesma senha, o sistema descriptografou todos os dispositivos configurados que ele encontrou durante a inicialização automaticamente.
    • 1

relate perguntas

  • Atualizar libinput no Linux Mint

  • linux java -version funciona apenas para usuário root [fechado]

  • Qual é o procedimento correto para substituir o MDM pelo LightDM no Linux Mint?

  • Danos no kernel do Linux Mint

  • Configurações de Arquivo do Gerenciador de Pacotes Synaptic

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve