ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Alexey Gladkov <legion@altlinux.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Subject: Re: [devel] Замена для mkinitrd
Date: Fri, 22 May 2009 17:17:21 +0400
Message-ID: <4A16A5E1.9030501@altlinux.ru> (raw)
In-Reply-To: <20090522000657.GA17907@wo.int.altlinux.org>

On 22.05.2009 04:06, Dmitry V. Levin wrote:
>> Когда я на него смотрел, то мне не понравилось ещё и то что они тянут
>> в initrd glibc всегда.
> 
> По каким причинам сейчас может возникнуть желание не использовать glibc
> внутри initramfs?
> 
> $ du -Lhsc /lib64/ld-linux-x86-64.so.2 /lib64/libc.so.6 
> 136K	/lib64/ld-linux-x86-64.so.2
> 1,3M	/lib64/libc.so.6
> 1,5M	итого

Использовать только glibc слишком толсто. Например, чтобы не
переписывать наш /init initrd я портировал klibc-utils на glibc...
размер динамически собранных утилит оказался больше размера тех же
утилит статически собранных с klibc. Конечно, это копейки, но всё же.

Тот же mkinitcpio показал, что без glibc можно неплохо прожить.

Мы планировали не ударяться в крайности и использовать klibc пока это
возможно, но у нас предусмотрен механизм, чтобы положить на initrd
произвольную утилиту ... и только в этом случае на initrd будут
скопирована glibc и всё что нужно по зависимостям.

Такой подход, даёт в большенстве случаев маленький размер initrd. И
лишь если хочется странного, будут использованы тяжёлые утилиты. Я
надеюсь, что таких случаев будет не много.

> Мне кажется, что можно пожертвовать этими мегабайтами для того, чтобы
> получить взамен свободу использования разного софта внутри initramfs.
> 
>> В этом плане mkinitcpio гораздо привлекательнее.
> 
> Ты ведь наверняка уже смотрел разные реализации.  Не хочешь рассказать,
> где что сделано хорошо, и где что сделано плохо?

Когда я смотрел проекты, я оценивал несколько аспектов:

* как происходит формирование образа;
* возможности по конфигурированию;
* возможности по расширению;
* качество кода.

dracut
------
От души раздувает initrd... копирует туда glibc, sh, coreutils.
Модульность есть, но ограничена сваленными в кучу кусками кода.

Конфигурирование только через командную строку.

Качество кода так себе.

mkinitramfs
-----------
Ещё хуже. Так же всё берётся из системы... только берётся с запасом:
bash (не sh!), awk, sed, grep, find, fsck, passwd ...
Всё прибито гвоздями, модульность отсутствует. Хороший такой монолитик.

Конфигурирование через командную строку.

Качество кода брррр.

initramfs-tools
---------------
Что тут скажешь это откуда vsu@ черпал вдохновение для нашей
initramfs. Вот только у них модули копируются все подряд.

Модульность примерно такая же как в dracut... это не модули а хуки для
подхачивания образа.

Конфигурирование через конфиг и командную строку, но очень условное.
По сути на саму сборку повлиять нельзя (например не копировать
какие-то модули).

Глядя на этот код и на наш код видно что vsu@ проделал большую работу

mkinitcpio
----------
Отличается от перечислнных выше. Он использует только klibc. Для него
написано много утилит под klibc для комфортной жизни в initrd.

Оформленные модули и хуки. Они думали про модульность с самого начала.

Конфигурирование через конфиг и командную строку.

Код хоть и не оптимален, но лучше чем у всех.

К сожалению, сразу обнаружились проблемы в дизайне их /init и системе
загрузки модулей в runtime части. Это приводит к тому, что некоторые
комбинации загрузок а-ля lvm-over-usb работать не будут.

Итог
----
В общем, проглядев все эти решения у меня сложилось стойкая
убеждённость, в том что использовать чужое решение не удастся. Все
вендоры используют свой подход к генерации initramfs и решения у всех
отличаются. Любая адаптация приведёт к контролируемому(или нет) форку.
Собственно, текущая поддержка initramfs это тоже форк. Все эти проекты
имеют хорошие идеи, но также очень неприятные баги и часто в
архитектуре либо сборочной части, либо в runtime части.

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

-- 
Rgrds, legion



  parent reply	other threads:[~2009-05-22 13:17 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-21 12:01 Kirill A. Shutemov
2009-05-21 12:07 ` Eugene Ostapets
2009-05-21 12:12   ` Dmitry M. Maslennikov
2009-05-22  9:50     ` Kirill A. Shutemov
2009-05-22 11:54         ` Sergey Bolshakov
2009-05-22 12:13           ` Mykola S. Grechukh
2009-05-21 23:48   ` Dmitry V. Levin
2009-05-21 23:56     ` Alexey Gladkov
2009-05-22  0:06       ` Dmitry V. Levin
2009-05-22  0:22         ` Led
2009-05-22  0:25           ` Dmitry V. Levin
2009-05-22  1:23             ` Led
2009-05-22  9:02           ` Wartan Hachaturow
2009-05-22  9:25             ` Led
2009-05-22  5:01         ` Kirill A. Shutemov
2009-05-22 13:17         ` Alexey Gladkov [this message]
2009-05-22 13:33           ` Michael Shigorin
2009-05-22 13:46             ` Alexey Gladkov
2009-05-22 13:50               ` Michael Shigorin
2009-05-22 13:41           ` Dmitry M. Maslennikov
2009-05-22 13:45             ` Kirill A. Shutemov
2009-05-22 13:47               ` Mikhail Gusarov
2009-05-22 13:52                 ` Kirill A. Shutemov
2009-05-22 13:49               ` Michael Shigorin
2009-05-22 14:05                 ` Led
2009-05-22 14:17                   ` Vladimir Lettiev
2009-05-22 14:26                     ` Kirill A. Shutemov
2009-05-22 14:38                       ` Led
2009-05-22 18:56                   ` Michael Shigorin
2009-05-22 13:49               ` Dmitry M. Maslennikov
2009-05-23 21:16                 ` Денис Смирнов
2009-05-23 21:21                   ` Mikhail Gusarov
2009-05-23 21:54                     ` Led
2009-05-25 13:24                       ` Wartan Hachaturow
2009-05-23 21:36                   ` Kirill A. Shutemov
2009-05-23 23:25                     ` Денис Смирнов
2009-05-24  4:58                       ` Max Ivanov
2009-05-24 10:18                         ` Michael Shigorin
2009-05-24 10:31                           ` Afanasov Dmitry
2009-05-24 23:02                             ` Marat Khayrullin
2009-05-22 14:03               ` Led
2009-05-22 14:08                 ` Dmitry M. Maslennikov
2009-05-22 14:11                 ` Kirill A. Shutemov
2009-05-22 14:42                   ` Led
2009-05-22 14:46                     ` Kirill A. Shutemov
2009-05-22 21:00                     ` Alexey Gladkov
2009-05-22  5:22       ` Afanasov Dmitry
2009-05-22  5:41     ` Eugene Ostapets
2009-05-21 12:50 ` Alex Gorbachenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A16A5E1.9030501@altlinux.ru \
    --to=legion@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git