Обновить

Комментарии 6

Хорошее, конечно упражнение на терпение и усидчивость...

Полностью с вами согласен. Выходные как раз посвятил тому, чтобы прочитать книгу, выполнить все необходимые действия и получить на выходе работающую систему. Сборку проводит в виртуальной машине под управление Fedora на VirtualBox. Каких-то существенных затруднений не возникло. Если внимательно следовать инструкциям, то их, можно вообще не будет.

В целом опыт интересный, но сказать, что он как-то сильно повлиял на понимание внутреннего устройства GNU/Linux или процесс сборки дистрибутива не могу. Зато пришло понимание, какой огромный труд приходится выполнять разработчикам дистрибутивов. Опять же познакомился с утилитами install и patch, которые в повседневной практике не встречались. Любопытной показалась глава про подходы к управлению пакетами программного обеспечения.

В финальной версии системы нет утилит curl или wget, они идут уже в книге BLFS, так что после загрузки системы получить из сети исходные тексты дополнительных пакетов не получится. Хотя для сборки все необходимое есть.

Может быть, если потратить больше времени, внимательно смотреть на каждый пакет, читать README и документацию от разработчиков пакетов, то и толку будет больше. В любом случае, это интересный проект, который позволит занимательно провести выходные.

В финальной версии системы нет утилит curl или wget, они идут уже в книге BLFS

В свое время я схитрил и собрал это в рамках LFS, заглянув в BLFS. И еще dhcpcd чтобы сеть поднять.

сказать, что он как-то сильно повлиял на понимание внутреннего устройства GNU/Linux или процесс сборки дистрибутива не могу

Оно сильно замыливается рутиной (финальная сборка gcc с тестами O_o), но в целом кое-что прояснилось конкретно для меня - назначение некоторых файлов, права доступа и самое главное - понимание chroot.

 Сборку проводит в виртуальной машине под управление Fedora на VirtualBox

Собирал на реальном железе, еще на предыдущем более слабом компе. Потом перенес собранное на виртуальный hdd

Вы очень точно подметили про огромное количество однообразной монотонной рутинной работы, которая в большинстве своем сводится к ./configure ... && make && make check && make install. В какой-то момент приходится останавливать себя, чтобы не превратиться в зомби, который выполняет команды на автомате, уже не пытаясь осмысливать, что именно он делает и зачем. Я выбрал подход, устраивать большой перерыв между главами, а главу про конфигурацию вообще оставил на утро, ибо известно, что утро вечера мудренее. И опять же, язык книги английский, и это тоже добавляет свой уровень сложности.

Оглядываясь назад, подход, который выбрали авторы проекта, на мой взгляд, направлен на практическое достижение вполне конкретной цели - получить работающий экземпляр операционной системы, способный воспроизвести такой же экземпляр операционной системы.

Исходя из данного подхода они определяют набор программного обеспечения, необходимый для решения задачи, далее выстраивают порядок, разрешая все зависимости, и далее дают конкретный набор действий, чтобы из исходных текстов получить исполняемый файл или библиотеку. В процессе они поясняют, почти для каждого программного пакета, почему при конфигурировании они выбрали тот или иной набор возможностей. Авторы указывают, зачем нужен тот или иной пакет, но, хотя может быть это я упустил, не указываю, зачем этот пакет нужен именно в нашем случае. Конечно, в каких-то случаях можно догадаться, что, например, архиватор tar и набор компрессоров gzip, bzip2, xz, lz4 нужны для извлечения файлов из сжатых архивов, в которых поставляется программное обеспечение, но вот зачем в нашем минималистичном окружении пакет readline, уже не столь очевидно. Или для чего нам система сборки Ninja, когда у нас уже есть make? Хотя в процессе сборки последующих пакетов, ответ на этот вопрос становится очевидным.

Мне кажется, что было бы интересно подойти к процессу подготовки минималистичной работающей системы несколько и иной стороны. То есть не со сборки программного обеспечения из исходных текстов программ, а с того, что необходимо иметь, чтобы просто запустить интерактивный сеанс пользователя. Например, взять уже готовое ядро, систему инициализации, минимальный набор библиотек и утилит, командный интерпретатор, загрузчик, и получить приглашение для ввода пользователя. А далее, в процессе решения практических задач, например, как создать текстовый файл, отредактировать его, произвести конфигурирование системы, получить пакет программного обеспечения, установить его и т.д., уже добавлять инструменты, описывать подходы. Тем более, что часть можно уже показать даже в процессе эволюционного развития. Например, подход к редактированию файлов, начать с текстового редактора ed, потом взять sed, а добраться, например, до emacs или vim.

Хотя это даже такое краткое описание уже звучит как очень сложный и комплексный проект. Может быть кто-нибудь, когда-нибудь сможет его реализовать.

А для чего самим собирать линукс?

Я делал это чисто в познавательных целях, just for fun. Имхо это полезный опыт для дистибутивостроителя

Вообще, мне конечно нравится эта фаза "а для чего...?"

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости