O Linux live OS determina a mídia de inicialização atual (CD / USB) que é usada para inicializar o kernel e rootfs que residem na mesma mídia

0

Existe uma maneira de detectar a mídia de inicialização atual usada para inicializar um Linux Live OS ? Em um sistema operacional ao vivo, gostaria de determinar exclusivamente a mídia de inicialização atual ( CD / USB ) que foi usada para inicializar o disco. Eu gostaria de determinar isso no nível do sistema operacional, não no nível do gerenciador de inicialização.

A mídia de inicialização atual no meu caso significa a mídia em que o carregador de inicialização que foi usado para iniciar o sistema operacional reside.

Eu inspecionei o seguinte, mas nenhum parece ter as informações do caminho dev da mídia de inicialização atual (por exemplo, / dev / sr0 indicando que o caminho de inicialização atual é cd)

  • Verificando os logs journalctl do systemd.
  • Verificando registros dmesg .
  • Possíveis interfaces no utilitário udev e udevadm .
  • rdev Busybox como sugerido no link . O procedimento para comparar stat / com o maior: menor número de dispositivo de / dev / sr0 não parece corresponder.

Também verifiquei no GRUB2, link onde as variáveis de ambiente GRUB root e prefixo estão definidas. Por exemplo, em um shell GRUB2 que foi inicializado a partir de um CD, se eu digitar echo $ root , obtenho hd31 . Agora, como faço um mapeamento disso para um caminho de dispositivo de bloco do Linux como / dev / sr0 para o CD ou algum / dev / sdb1 para um pen drive? Eu também verifiquei Linux: obtenha o nome do dispositivo do disco de inicialização atual e link mas ambos não parecem ajudar.

Idealmente, eu gostaria de evitar montar cada CD / USB (/ dev / sr0 ou / dev / sdb1 e similares) para verificar manualmente a presença de arquivos initrd e kernel. Este método não é infalível. Existe alguma maneira simples de fazer isso?

    
por 1337ninja 30.09.2015 / 09:34

2 respostas

0

Encontrei o seguinte, mas não tenho certeza do que definiria. Talvez o kernel / grub, caso em que você deve estar definido.

"Também poderia ser a referência do nó do dispositivo para o ponto de montagem de outro sistema de arquivos LiveOS, incluindo o atualmente em execução (como um Live CD / DVD / USB inicializado, onde / run / initramfs / links vivaev para o dispositivo LiveOS inicializado ). "

De link

    
por 10.12.2015 / 21:58
0

O próprio kernel Linux não se importa de onde é carregado - e considera o trabalho do bootloader. O ideal é que o gerenciador de inicialização registre essas informações em algum lugar onde o kernel possa obtê-lo mais tarde - o que é trivial com o bootloader do U-Boot, mas não com o BIOS / UEFI x86.

Como resultado, eu realmente não acho que você possa obter essa informação do próprio Linux, apesar de onde o sistema de arquivos raiz mora é provavelmente onde o Linux foi carregado a maior parte do tempo. É 100% possível carregar o kernel de um lugar e ter o sistema de arquivos raiz vindo de outro lugar, o que é comum em plataformas embarcadas.

Então, algumas coisas que você pode tentar.

  • cat /proc/cmdline provavelmente lhe dirá onde o sistema de arquivos raiz foi carregado - o parâmetro de linha de comando do kernel root= informa onde o kernel foi avisado para encontrar o sistema de arquivos raiz quando foi carregado.

  • Você também pode emitir um comando mount e localizar o sistema de arquivos / e examinar seu dispositivo.

por 10.12.2015 / 22:12