Para pivot_root Eu quero matar todos os processos que o oldroot está usando para que eu possa desanexar a partição MTD .. e sair do shell e voltar

0

Eu tenho um linux embutido no arm7.

Eu tenho um rootfs montado na partição MTD 10 (por exemplo), ou seja, / dev / mtd10, que é um dispositivo flash. O volume é UBI0 do dispositivo UBIFS (/ dev / ubi0).

Eu configurei um tmpfs pivot_root (semelhante a um chroot) aproximadamente seguindo as instruções daqui: redimensionar-a-raiz-viva-fs-a-howto .

Eu quero apagar / re-formatar o mtd10 (UBI0) O problema que eu tenho é que eu não posso separar / formatar o UBI0 até que eu tenha porque ele me diz que está ocupado. Então, eu uso o comando:

fuser -vm /dev/mtd10 e isso me dá uma lista de processos que eu posso matar, então eu faço tudo isso e então desmonto (ou desisto -l) todas as partições que estão montadas em UBI0.

Então meu sistema não tem mais nenhuma dependência do UBI0 ... exceto o shell que estou executando. Eu tentei combinações de muitas coisas, mas a única coisa que parece funcionar (depois de eu ter arrumado) é sair (usando o comando exit ) e depois logar de volta (para mim eu só tenho que digitar o nome de usuário root ).

Assim que eu sair / executar telinit u neste momento, vejo o UBI0 ir embora e posso detê-lo.

update: matar rc_mxc.S tem um efeito semelhante ao logout (ou seja, termina meu shell e eu preciso fazer o login novamente. Mas isso também termina meu script: (

O problema aqui é que eu não sei como posso escrever isso. Executar exit em um script apenas finaliza o script.

    
por code_fodder 03.10.2018 / 10:24

1 resposta

0

Execute find /proc/$$ -type l -ls no shell que está mantendo o FS aberto. Para cada um desses links que apontam para esse FS, tome as medidas adequadas:

  • No subdiretório fd : execute exec n>replacement , em que n é o número do descritor de arquivo e replacement é o arquivo para o qual ele deve apontar, ou &- para fechar esse descritor.
  • Como exe ou no subdiretório map_files : execute exec /bin/sh , substituindo /bin/sh pelo caminho de qualquer shell que você desejar na raiz do seu tmpfs.
  • Como cwd : cd para algum outro diretório.
  • Como root : vá para a raiz do tmpfs e chroot . .
por 04.10.2018 / 02:19