Como obter algo para iniciar na próxima inicialização apenas uma vez no Haiku

4

Eu quero fazer algo iniciar após a próxima reinicialização, mas apenas uma vez, e não depois de qualquer outra reinicialização. Assim como a primeira inicialização de uma imagem do Haiku em um pendrive, o Instalador é executado, e, quer você o use ou não (talvez você queira apenas executá-lo sempre, por exemplo), ele nunca é executado na inicialização depois disso. Como posso fazer algo assim, como um lembrete único para a próxima inicialização?

Se eu montar uma imagem baixada recentemente e comparar os seguintes diretórios nela à minha unidade de inicialização instalada:

/image/home/config/boot
/image/system/boot
/image/common/boot

... os arquivos são idênticos. Então, como o Haiku sabe se o instalador de execução única foi executado? Não de lá, de qualquer maneira ...

Atualização: eu encontrei o arquivo /image/common/settings/fresh_install que não existia na minha instalação, contendo o texto "Este arquivo só deveria existir em instalações novas do Haiku." No entanto, copiá-lo para a minha instalação e reinicialização apenas resultou na atualização do atualizador do tipo MIME, não no instalador.

    
por Kev 08.04.2013 / 18:53

1 resposta

0

Certifique-se de que /boot/common/settings/fresh_install exista e, em seguida, crie um script de shell que termine em .sh in /boot/common/settings/boot/post_install . Ele será executado na próxima inicialização e, em seguida, fresh_install será automaticamente excluído, fazendo com que o script de shell não seja executado em inicializações subseqüentes.

Eu acho que essa abordagem poderia ter sido tomada desde o início, mas talvez isso seja melhor porque é "embutido"? Basicamente, você pode roubar o seguinte código de /boot/system/boot/Bootscript para realizar a mesma coisa com um arquivo diferente de fresh_install , não .sh scripts, etc., se quiser ajustá-lo:

# Check for fresh install and run post install scripts.
freshInstallIndicator=/boot/common/settings/fresh_install
postInstallDir=/boot/common/boot/post_install
if [ -e $freshInstallIndicator ]; then
    # wait a moment for things to calm down a bit
    sleep 3

    # execute scripts
    for f in $postInstallDir/*.sh; do
        if [ -f $f ]; then
            echo "Running post install script $f ..." > /dev/dprintf
            $f
        fi
    done

    sync
    rm $freshInstallIndicator
fi

... e coloque-o no seu UserBootScript, por exemplo.

(Ainda não tem certeza do que faz o próprio instalador rodar - deve ser um caso ainda mais especial, porque ele é iniciado antes da inicialização do Deskbar ou do Tracker).

    
por 16.04.2013 / 18:32

Tags