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