Показать сообщение отдельно
  #8  
Старый 18.03.2023, 14:22
Alexey Vissarionov
Guest
 
Сообщений: n/a
По умолчанию Нardcore linux for students

Alexey Vissarionov написал(а) к Alexandr Strelnikov в Mar 23 12:44:44 по местному времени:

Доброго времени суток, Alexandr!
18 Mar 2023 08:50:26, ты -> Ivan Agarkov:

IA>> Легко. Собирать - это значит:
IA>> - Сделать FSН ( mkdir -p, да-да, с chown/chmod после )
IA>> - Положить ядро в /boot, initrd в /boot, накатить grub ручками, без
IA>> инсталлера - Положить либы в lib, бинари в bin, написать ld.so.conf -
IA>> Написать ручками fstab, crypttab, etc - Написать свой микро-init,
IA>> который замаунтит всё, настроит сеть и запустит баш. - ... - PROFIT
AS> А студентам это в будушем нужно будет? Как будто из начала 2000-х
AS> выплыл...

Вот прям из перечисленного? Скорее, появится (и пригодится) понимание, что:
0. initrd не нужен (исключение - сетевая загрузка)
1. Загрузчик должен быть в firmware компутера (EFI - на грани разумного)
2. Любые файлы должны появляться в системе только из пакетов
3. bash используют те, кто не знает про более удобные шеллы

А насчет микро-init... вот работоспособный пример:

#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(void)
{
enum {STDERR = 2};
static const char panicmsg[]=
"Unable to run neither startup script nor shell\n";

if(getpid() != 1)
return 1;

if(fork())
{
for(;;)
wait(NULL);
}
else
{
execve("/etc/rc", (char []){"rc", NULL}, (char []){NULL});
return write(STDERR, panicmsg, sizeof(panicmsg)-1);
}
}

Несмотря на его работоспособность, в нем есть три ошибки, которые могут проявляться непредсказуемым образом, а толковый студент должен уметь их обнаружить и исправить.


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Рекурсия (сущ.): см. "рекурсия"
--- /bin/vi
Ответить с цитированием