Rolando seu próprio init: Como desligar / reiniciar?

3

Depois de ler esta resposta , achei que seria engraçado criar meu próprio init em Python, então eu escreveu isso em /init-python .

#!/usr/bin/python3
import os
import subprocess
# Make / writable!
subprocess.call(['/bin/mount', '-o', 'rw,remount', '/'])
# Became IPython (Now we're at it, get a good shell!)
os.execv('/usr/bin/ipython3', ['init'])

Em seguida, adicionamos init=/init-python à linha linux na configuração do GRUB. Funciona.

Então eu estava pensando agora ... como desligar ou reiniciar meu sistema com o meu init caseiro?

    
por Alicia 15.07.2013 / 09:53

1 resposta

4

Isso pode ser feito com a função reboot ( man 2 reboot ).

import ctypes
libc = ctypes.cdll['libc.so.6']
RB_POWER_OFF = 0x4321fedc
RB_AUTOBOOT  = 0x01234567

def shutdown():
    libc.reboot(RB_POWER_OFF)

def reboot():
    libc.reboot(RB_AUTOBOOT)
    
por 15.07.2013 / 10:28