Recuperar de rm -rf / proc / sys / / dev / pts / dev sem reiniciar?

2

Não é um problema grave, pois pode ser corrigido com uma reinicialização, mas estou curioso para saber se há uma maneira de restaurar arquivos (provavelmente não todos, mas o máximo possível) em /proc , /sys , /dev/pts e /dev .

Eu os excluí parcialmente ao remover um diretório chroot dos diretórios montados com

mount -t proc proc [path/to/chroot]/proc
mount -t sysfs sys [path/to/chroot]/sys
mount --bind /dev/[path/to/chroot]/dev
mount -t devpts /dev/path [path/to/chroot]/dev/pts

no Ubuntu 16.10 amd64. A remoção falhou para alguns arquivos (eu não gravei a mensagem de erro) porque a remoção de arquivos foi recusada, o que eu posso entender. Eu acho que as soluções serão aplicadas a todos os sistemas baseados no Debian.

Depois de sair do chroot , vejo coisas como

$ ls -bash: /dev/null: Keine Berechtigung
bash: _upvars: '-a2': invalid number specifier
-bash: /dev/null: Keine Berechtigung
bash: _upvars: '-a0': invalid number specifier

durante o preenchimento automático com a aba em ls (depois de exportar LANGUAGE=en ).

    
por Karl Richter 12.02.2017 / 21:07

1 resposta

4

Você não pode realmente excluir a maioria dos arquivos de /proc ou /sys . Eles são interfaces para o kernel, não para coisas armazenadas em um disco, e a maioria das interfaces de kernel é o que o kernel quer fornecer e não pode ser influenciada pela userland.

Cuidado com as exceções possíveis - é incomum, mas é possível que um driver atribua um significado à remoção de um arquivo de um sistema de arquivos do kernel. Este é infamously o caso de evivarfs , que é tipicamente montado sob /sys/firmware/efi/efivars em sistemas que possuem UEFI. Removendo arquivos lá pode brick seu computador, removendo sua configuração de inicialização. E systemd usado para montar o read-write

Para restaurar os sistemas de arquivos no kernel, basta remontá-los. De fato, rm -rf /proc /sys não os teria removido, porque a maioria desses arquivos simplesmente não pode ser removida, e os pontos de montagem não podem ser removidos contanto que algo seja montado neles. Mas se você, de alguma forma, entrou em um estado em que /proc e /sys não existem mais, você pode recriar os diretórios e montá-los.

mkdir /proc /sys
mount -t proc proc /proc
mount -t sys sysfs /sys

Claro que você precisará de um shell de root. Você ainda pode fazer login como root sem /proc e /sys , mas provavelmente não sem /dev .

Quanto a /dev , normalmente é preenchido pelo udev. Você pode dizer ao udev para recolocá-lo.

mkdir /dev
mount -t devtmpfs -o mode=0755 udev /dev
mount -t devpts devpts /dev/pts
udevadm trigger
    
por 12.02.2017 / 23:52