Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 29 Apr 24 03:15:24, всего сообщений: 8279
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 7939 из 8279 ========================================= RU.LINUX =
От   : Alexey Vissarionov               2:5020/545         18 Mar 23 12:44:44
Кому : Alexandr Strelnikov                                 18 Mar 23 12:44:44
Тема : Hardcore linux for students
FGHI : area://RU.LINUX?msgid=2:5020/545+64158dcb
На   : area://RU.LINUX?msgid=2:5026/15@fidonet+64155233
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
Доброго времени суток, Alexandr!
18 Mar 2023 08:50:26, ты -> Ivan Agarkov:

IA>> Легко. Собирать - это значит:
IA>> - Сделать FSH ( mkdir -p, да-да, с chown/chmod после )
IA>> - Положить ядро в /boot, initrd в /boot, накатить grub ручками, без
IA>> инсталлера - Положить либы в lib, бинари в bin, написать ld.so.conf -
IA>> Hаписать ручками fstab, crypttab, etc - Hаписать свой микро-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
* Origin: ::1 (2:5020/545)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.044855 секунды