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
next prev 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