:: Re: [DNG] Mini init script written …
Página Inicial
Delete this message
Reply to this message
Autor: Didier Kryn
Data:  
Para: dng
Assunto: Re: [DNG] Mini init script written in Perl boots.
Le 16/06/2016 23:16, Steve Litt a écrit :
> If the machine were anything but a demonstration experimental machine,
> so would I contemplate suicide or systemd. Same with Python, Ruby, and
> (urk) Javascript. But truth be told, if PID1 were written in Lua, I
> would not be dismayed in the slightest.
>


     IIUC (not having a very strong practice on English), you don't like 
it in Perl (except for demo) but you would love it written in Lua. I 
have written a program in Lua long ago and got a good opinion of this 
language, but he problem is that Lua is not as easily available as Perl. 
Even in the tiny Busybox, you can have Perl, or even a subset called 
Miniperl which is probably enough to run an init program.



Le 17/06/2016 03:44, Adam Borowski a écrit :
> Yeah, we need to use an efficient language!
>
> .globl _start
> .data
> nopid1:    .ascii "No pid 1, no fun.\n"
> command: .ascii "/sbin/osloader.sh"
> norc: .ascii "Starting /sbin/osloader.sh failed!\n"
> .text
> _start:
>     mov    $39, %rax    # getpid
>     syscall
>     cmp    $1, %rax
>     je    pid1
>     mov    $1, %rax    # write
>     mov    $1, %rdi
>     mov    $nopid1, %rsi
>     mov    $18, %rdx
>     syscall
>     mov    $60, %rax    # _exit
>     mov    $1, %rdi
>     syscall
> pid1:
>     mov    $57, %rax    # fork
>     syscall
>     cmp    $0, %rax
>     jne    child
> parent:
>     mov    $61, %rax    # wait4
>     mov    $-1, %rdi
>     xor    %rsi, %rsi
>     xor    %rdx, %rdx
>     syscall
>     jmp    parent
> child:
>     mov    $59, %rax    # execve
>     mov    $command, %rdi
>     xor    %rsi, %rsi
>     xor    %rdx, %rdx
>     syscall
>     mov    $1, %rax    # write
>     mov    $1, %rdi
>     mov    $norc, %rsi
>     mov    $36, %rdx
>     syscall
>     mov    $60, %rax    # _exit
>     mov    $1, %rdi
>     syscall

>
> Hmmm... I think I'd go with Perl after all.


     Here again, I'm not sure if you are serious, but I take it 
seriously. I wouldn't like to have init written in assembly language 
because it is arch-dependent, but wether it is in C or Perl, I think it 
doesn't matter - I prefer the C language because I know it well while I 
don't know Perl, but this is just personnal.


     However I think init must do more on the long run than reaping 
zombies. It should ensure in some way that at least someone can login to 
the system to do something, for example it should supervise a 
supervisor, or at least supervise a getty. Otherwise the only way to 
reboot a locked-in system is power-down.


     Didier