Debian: Nova mensagem de erro atualizando o kernel (para 4.9) - recarrega o erro ioctl

2

Estou atualizando o kernel no Debian 9.0. Estenda para o kernel para 4.9.0-1-amd64.

O pacote está instalado, no entanto, no final do procedimento, recebi o erro enigmático:

device-mapper: reload ioctl on osprober-linux-sda2 failed: Device or resource busy
Command failed

Também estou preocupado com a reinicialização e não a inicialização correta.

A execução de dpkg-reconfigure linux-image-4.9.0-1-amd64 também produz o mesmo erro.

Curiosamente, em /etc/fstab não tenho sda2 partição, e o procedimento usado para trabalhar até agora. Ele simplesmente parou de funcionar após os últimos upgrades de pacotes (na verdade, eu poderia jurar que vi o erro primeiro após a última atualização do pacote udev para 232-18). VMs com Jessie ainda estão funcionando bem.

Então fstab é:

$cat /etc/fstab
/dev/sda1 / ext3 errors=remount-ro,noatime 0 1
/dev/sda3 none swap sw 0 0

No entanto, executando blkid , lembro-me agora /dev/sda2 é a partição de registro no diário ext3:

/dev/sda1: UUID="43dcd715-1914-4da8-8e55-27879705920a" EXT_JOURNAL="b153f326-cb4e-491b-9b38-f9750dcf5165" TYPE="ext3" PARTUUID="8aac691c-01"
/dev/sda2: LABEL="j-my-dev" UUID="b153f326-cb4e-491b-9b38-f9750dcf5165" LOGUUID="b153f326-cb4e-491b-9b38-f9750dcf5165" TYPE="jbd" PARTUUID="8aac691c-02"
/dev/sda3: UUID="a04c0b69-07d5-40e1-8c80-6914118f6df4" TYPE="swap" PARTUUID="8aac691c-03"

Depois de investigar um pouco mais, também encontrei um arquivo pendente que ainda menciona o antigo sda2 (já que essa VM foi migrada de um servidor com o LVM há muitas luas)

O conteúdo de /etc/blkid.tab foi:

<device DEVNO="0x0802" TIME="1414777337.116803" UUID="B24u3l-mvwB-vyxK-GRNw-vc6o-r2sS-NDgVru" TYPE="LVM2_member">/dev/sda2</device>

Eu o excluí, no entanto, provavelmente não faz diferença, pois o blkid.tab adequado é o esperado em /var/run/blkid/blkid.tab

<device DEVNO="0x0801" TIME="1487991512.317454" UUID="43dcd715-1914-4da8-8e55-27879705920a" EXT_JOURNAL="b153f326-cb4e-491b-9b38-f9750dcf5165" TYPE="ext3" PARTUUID="8aac691c-01">/dev/sda1</device>
<device DEVNO="0x0802" TIME="1487991415.63466" LABEL="j-my-dev" UUID="b153f326-cb4e-491b-9b38-f9750dcf5165" LOGUUID="b153f326-cb4e-491b-9b38-f9750dcf5165" TYPE="jbd" PARTUUID="8aac691c-02">/dev/sda2</device>
<device DEVNO="0x0803" TIME="1487991512.507280" UUID="a04c0b69-07d5-40e1-8c80-6914118f6df4" TYPE="swap" PARTUUID="8aac691c-03">/dev/sda3</device>

A execução do dpkg-reconfigure anterior continua com o mesmo erro.

Eu também consegui identificar o erro para upgrade-grub sendo chamado em dpkg-reconfigure . Correndo separadamente:

#update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-1-amd64
Found initrd image: /boot/initrd.img-4.9.0-1-amd64
device-mapper: reload ioctl on osprober-linux-sda2 failed: Device or resource busy
Command failed
done

stracing upgrade-grub , é evidente que isso acontece em /etc/grub.d/30_os-prober e, lendo esse script, o comando incorreto é os-prober .

Então, rodando:

#os-prober 
device-mapper: reload ioctl on osprober-linux-sda2 failed: Device or resource busy
Command failed

O erro vem de os-prober calling:

#/usr/bin/linux-boot-prober /dev/sda2
device-mapper: reload ioctl on osprober-linux-sda2 failed: Device or resource busy
Command failed

Olhando para 30_os-prober , também descubro sobre GRUB_OS_PROBER_SKIP_LIST .

if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" ] && [ "x'echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b''" != "x" ] ; then
  echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
  continue
fi

Pesquisando este artigo: Faça o grub2 ignorar uma determinada partição , o que levou eu para colocar em /etc/default/grub :

GRUB_OS_PROBER_SKIP_LIST="b153f326-cb4e-491b-9b38-f9750dcf5165@/dev/sda2"

No entanto, o erro ainda acontece, e colocar o script 30_os-prober no modo de depuração mostra que o bloco de código responsável por manipular GRUB_OS_PROBER_SKIP_LIST não é executado. por exemplo. ele nem alcança a linha if exibida acima.

Minha versão do GRUB é 2.02~beta3-5 . O que fazer?

UPDATE: conforme solicitação @ GaD3R, o libmapper-dev é 1.02.1

    
por Rui F Ribeiro 25.02.2017 / 04:53

2 respostas

4

Dado que GRUB_OS_PROBER_SKIP_LIST aparentemente não está sendo usado (bug?), eu tive que configurar o GRUB / os-prober para não procurar pelo SO em todas as partições.

Por isso, foi adicionado a /etc/default/grub da linha:

GRUB_DISABLE_OS_PROBER=true

Agora, os comandos dpkg-reconfigure linux-image-4.9.0-1-amd64 e update-grub funcionam corretamente.

O servidor em questão também foi reinicializado com o kernel 4.9.0-1-amd64 com sucesso.

Uma questão relacionada, que encontrei depois de toda a depuração e da solução, aqui , também defende a remoção de os-prober como uma alternativa. Essa solução também funcionará quando os scripts verificarem a existência do binário antes de invocá-lo.

Eu suspeito que os-prober é necessário apenas para o multi-OS grub, o que não é o meu caso.

Após o comentário de @Ferenc Wágner sobre problemas históricos com os-prober , e também compartilhando a opinião de que isso não prejudica a remoção do os-prober em um contexto de VMs somente Linux, eu realmente o removi de minhas VMs.

    
por 25.02.2017 / 04:53
0

Recebi este erro device-mapper: reload ioctl on osprober-linux-sda1 failed: Device or resource busy devido a ter um zfs mirror.

/etc/grub.d/30_os-prober confia na saída de os-prober para dispositivos correspondentes:

OSPROBED="'os-prober | tr ' ' '^' | paste -s -d ' ''"

os dispositivos são verificados em loop :

for OS in ${OSPROBED} ; do

& como os-prober fornece um erro ioctl em vez de devolver um dispositivo, a verificação de $OS em relação a $GRUB_OS_PROBER_SKIP_LIST em /etc/grub.d/30_os-prober não tem efeito.

A solução foi adicionar os dispositivos a /etc/default/grub na forma de UUID@device_path :

GRUB_OS_PROBER_SKIP_LIST="1234567899273705219@/dev/sda1 1234567899273705219@/dev/sdb1"

& editar /usr/bin/os-prober :

--- /usr/bin/os-prober  2018-10-15 17:46:19.420933449 +0100
+++ /usr/bin/os-prober.bak  2018-10-15 16:44:49.927531809 +0100
@@ -167,12 +167,6 @@ for partition in $(partitions); do
        continue
    fi

-   # Skip user defined devices in /etc/default/grub
-   if echo $GRUB_OS_PROBER_SKIP_LIST | grep -qw $partition; then
-       debug "$partition: probing disabled by user"
-       continue
-   fi
-
    # do btrfs processing here; both mounted and unmounted will
    # be handled by 50mounted-tests so we can do a subvol only once.
    type=$(blkid -o value -s TYPE $mapped || true)
  • Testado em um sistema de inicialização dupla do Windows / Arch Linux .

ANTES:

[stuart@manjaro ~]$ sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux-hardened
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-linux-hardened.img
Found initrd fallback image: /boot/initramfs-linux-hardened-fallback.img
Found linux image: /boot/vmlinuz-4.14-rt-x86_64
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-4.14-rt-x86_64.img
Found initrd fallback image: /boot/initramfs-4.14-rt-x86_64-fallback.img
device-mapper: reload ioctl on osprober-linux-sda1  failed: Device or resource busy
Command failed.
device-mapper: reload ioctl on osprober-linux-sdb1  failed: Device or resource busy
Command failed.
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
###### - Grub-btrfs: Auto-detect Start - ######
# found 0 snapshot(s)
# No snapshot found 
# make sure you have at least one snapshot 
# or please file a bug report at "https://github.com/Antynea/grub-btrfs"
###### - Grub-btrfs: Auto-detect End   - ######
Found memtest86+ image: /boot/memtest86+/memtest.bin
/usr/bin/grub-probe: warning: unknown device type nvme0n1.
done

DEPOIS:

[stuart@manjaro ~]$ sudo update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux-hardened
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-linux-hardened.img
Found initrd fallback image: /boot/initramfs-linux-hardened-fallback.img
Found linux image: /boot/vmlinuz-4.14-rt-x86_64
Found initrd image: /boot/intel-ucode.img /boot/amd-ucode.img /boot/initramfs-4.14-rt-x86_64.img
Found initrd fallback image: /boot/initramfs-4.14-rt-x86_64-fallback.img
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
###### - Grub-btrfs: Auto-detect Start - ######
# found 0 snapshot(s)
# No snapshot found 
# make sure you have at least one snapshot 
# or please file a bug report at "https://github.com/Antynea/grub-btrfs"
###### - Grub-btrfs: Auto-detect End   - ######
Found memtest86+ image: /boot/memtest86+/memtest.bin
/usr/bin/grub-probe: warning: unknown device type nvme0n1.
done
    
por 15.10.2018 / 19:39