
Estou tentando registrar a saída de inicialização inicial do script de inicialização. Isto é o que está funcionando:
mkdir -p /run/log && \
mkdir -p /tmp && \
mkfifo /tmp/stage-1-init.log.fifo1 && \
mkfifo /tmp/stage-1-init.log.fifo2
tee -i < /tmp/stage-1-init.log.fifo1 /run/log/stage-1-init.log &
exec > /tmp/stage-1-init.log.fifo1 2>&1
O trecho acima é colocado no script de inicialização inicial (shell é busybox ash) dentro do initrd, e a saída é registrada no /run/log/stage-1-init.log
arquivo e posso visualizá-la posteriormente dentro do sistema inicializado, e há conteúdo dentro.
No entanto, também estou tentando adicionar um sed
filtro para filtrar linhas vazias:
mkdir -p /run/log && \
mkdir -p /tmp && \
mkfifo /tmp/stage-1-init.log.fifo1 && \
mkfifo /tmp/stage-1-init.log.fifo2
tee -i < /tmp/stage-1-init.log.fifo1 /tmp/stage-1-init.log.fifo2 &
sed '/^$/d' < /tmp/stage-1-init.log.fifo2 > /run/log/stage-1-init.log &
exec > /tmp/stage-1-init.log.fifo1 2>&1
No momento em que mudo para o script inferior, não há saída /run/log/stage-1-init.log
alguma. O arquivo está completamente vazio, mas o arquivo foi criado.
Instalei o busybox localmente no sistema inicializado para testar as versões ASH e busybox de tee e sed, executei a variante inferior e funcionou. Mas, por algum motivo, durante a inicialização, a variante inferior resulta em um arquivo de log vazio.
O que poderia dar errado? Parece que tem algo a ver com o redirecionamento?
Responder1
Resolvi-o. Acontece que eu precisava redefinir os descritores de arquivo stdout e stderr que usei antes de chamar switch_root
o stage-1-init.sh.