The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

18.04.2017 22:39  Оценка пригодности ядра Linux для систем с несколькими мегабайтами ОЗУ

Майкл Опденакер (Michael Opdenacker), занимающийся разработкой встраиваемых систем, рассказал о методах, которые позволяют сформировать минимальную сборку ядра и системного окружения, пригодную для применения на системах с несколькими мегабайтами оперативной памяти или используемую в качестве загрузчика других систем. В частности, показано, что несмотря на существенное разрастание кодовой базы ядра и забвение проекта по минимизации ядра, вполне реально урезать современное ядро Linux до состояния, способного работать на системах с 2-6 Мб ОЗУ и требующего 2-4 Мб для размещения на постоянном носителе.

Сокращение размера достигается не только отключением расширенной функциональности ядра ("make tinyconfig"), но и оптимизацией процесса сборки. Например, сборка ядра Linux 4.10 при помощи gcc 6.2 для ARM позволяет на 0.4% сократить размер, по сравнению со сборкой в gcc 4.7. Включение режима "-Os" и оптимизаций на этапе связывания (LTO) в GCC ("gcc -Os -flto") даёт возможность сократить размер на 2.8%. Применение Clang 3.8.1 по сравнению с gcc 6.2 без LTO обеспечивает сокращение размера на 5%, а с LTO на 2.3%. Применение сборки с использованием набора инструкций Thumb ("-mthumb", смесь 16- и 32-разрядных инструкций для ARM) вместо ("-marm", 32-разрядные инструкции) позволяет сократить размер на 6.8%. Сжав ядро методом XZIP можно выиграть 6-10 Кб, а собрав ядро без поддержки ptrace можно сократить размер на ещё 14 Кб.

Проект LLVM Linux, нацеленный на обеспечение сборки ядра при помощи Clang, заброшен в 2015 году, но разработчики из Linaro возродили работу и уже адаптировали патчи для ядра 4.9. В 2012 году для ядра были предложены патчи, использующие LTO для отбрасывания неиспользуемого кода (например, для ARM патчи позволяли сократить размер на 6%), но они не были приняты в состав ядра так как Линус выступает против подобных оптимизаций, которые могут привести к непредсказуемому поведению.

Аналогично показаны способы создания минимального системного окружения, которое требует для полноценной работы 8-16 Мб ОЗУ и, в зависимости от задач, занимает от нескольких сотен килобайт до 8-16 Мб дискового пространства. Окружение строится на основе системной библиотеки musl и универсальном наборе системных утилит toybox, занимающим всего 84KB (BusyBox занимает 100Кб). Для сокращения размера файловой системы рекомендуется использовать initramfs, что позволит также обойтись без инициализации ФС и драйверов хранилища. Для встраиваемых систем с достаточным размером ОЗУ для сокращения размера рекомендовано использовать ФС со сжатием, такие как SquashFS, JFFS2 и ZRAM.



  1. Главная ссылка к новости (https://www.linux.com/news/eve...)
  2. OpenNews: Анонсирован проект LLVMLinux, нацеленный на обеспечение сборки ядра Linux при помощи Clang
  3. OpenNews: Оптимизация кода компилятором может привести к появлению проблем безопасности в приложениях
  4. OpenNews: Проект по задействованию LTO-оптимизации при сборке ядра Linux
  5. OpenNews: Линус Торвальдс выступил с резкой критикой GCC 4.9.0
  6. OpenNews: Дэниэл Бернштейн выступил с инициативой создания Си-компилятора для защищённого ПО
Лицензия: CC-BY
Тип: Обобщение
Ключевые слова: kernel, linux
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, dimqua (ok), 23:36, 18/04/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +2 +/
    >всего 84KB (BusyBox занимает 100Кб)

    Целых 16кб разница!

     
     
  • 2.43, папа карло (?), 14:38, 19/04/2017 [^] [ответить]    [к модератору]
  • +11 +/
    Это целая банка памяти в спектруме!
     
  • 2.64, scorry (ok), 12:01, 21/04/2017 [^] [ответить]    [к модератору]
  • +/
    А десять бабушек — уже рубль.
     
  • 1.2, Аноним (-), 23:38, 18/04/2017 [ответить] [показать ветку] [···]    [к модератору]
  • –19 +/
    > 2017
    > несколько мегабайт озу на устройстве
    > у худшей Малинки целых 256
     
     
  • 2.7, Андрей (??), 00:38, 19/04/2017 [^] [ответить]    [к модератору]
  • +7 +/
    А у микроконтроллера, который навороченный, что его уже SoC называют, а не просто uC - STM32 (Cortex-M4/M7/H7) всё равно "только" 1-2 МБ на борту. А вот если ужать до 6 МБ, придётся подключить только небольшую SDRAM микросхемку и наслаждаться Ядром.
     
     
  • 3.8, h31 (ok), 01:01, 19/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    Линукс там всё равно не запустишь, потому что там нет MMU. Был MMU-less форк ядра, но он не обновлялся со временен 2.4.
     
     
  • 4.13, Андрей (??), 05:09, 19/04/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Раньше нет А в последнее время там разве ничего не поменялось Ведь идут коммит... весь текст скрыт [показать]
     
     
  • 5.14, Андрей (??), 05:18, 19/04/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    arch arm Kconfig config MMU bool MMU-based Paged Memory Management Sup... весь текст скрыт [показать]
     
  • 4.56, Аноним (-), 02:29, 20/04/2017 [^] [ответить]    [к модератору]  
  • +/
    > Линукс там всё равно не запустишь,

    Однако на STM32F4 ядро все-таки запускают. См. arch/arm/mach-stm32 и пр.

     
  • 3.60, Аноним (-), 10:20, 20/04/2017 [^] [ответить]    [к модератору]  
  • +/
    >>и наслаждаться Ядром.

    Вижу ценителя тонкой иронии

     
  • 1.3, Dkg (?), 23:39, 18/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –3 +/
    Use boinc
     
  • 1.4, Аноним (-), 23:50, 18/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Openwrt с не самым старым ядром (4.4) запускается на маршрутизаторах с 8Mb оперативной памяти. Найти что-то с меньшим объемом памяти сейчас довольно сложно.
     
     
  • 2.5, Аноним (-), 00:05, 19/04/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    > Найти что-то с меньшим объемом памяти сейчас довольно сложно.

    Почти любой MCU.

     
     
  • 3.10, h31 (ok), 01:04, 19/04/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Для MCU есть свои ОС со своими плюсами и минусами. Да и задачи там совсем другие, многим из которых хватает и пары десятков килобайт ОЗУ.
     
     
  • 4.33, Аноним (-), 10:59, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Но при этом в этой отрасли существует большой спрос на вроде бы микроконтроллерные NuttX, VxWorks, QNX и т.п. из-за их POSIX/SUS-совместимости.
     
     
  • 5.58, h31 (ok), 05:11, 20/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    QNX, VxWorks - ни разу не микроконтроллерные ОС. Это абсолютно полноценные системы для полноценных процессоров.
    А используют в индустрии из-за поддержки реалтайма и большого количества наработок.
     
  • 2.9, Аноним (-), 01:01, 19/04/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    А можно пример устройства с 8mb ram на котором запускается openwrt?
     
     
  • 3.11, Ahulinux (ok), 02:00, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    https://wiki.openwrt.org/toh/start
    https://wiki.openwrt.org/toh/asus/wl600g
     
     
  • 4.12, Аноним (-), 02:51, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Там же 2 чипа по 8 (общий объем 16) или я чего не понял?
     
     
  • 5.24, dmytro18 (ok), 09:05, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Да, там 16. И на офсайте информация, что нужно не менее 4 МБ пзу и 16МБ озу. А рекомендуется от 32 МБ озу.
     
     
  • 6.36, Аноним (-), 12:36, 19/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    На моей сетевой кормушке с openwrt:
    Total Available 6720 kB / 28580 kB (23%)
    Если отключить cron, dhcpd, lua и logd, то можно и 16mb ограничиться.
     
     
  • 7.54, dmytro18 (ok), 22:39, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    Думаю, можно самому собрать под 16 МБ Но если это чудо заставить работать шлю... весь текст скрыт [показать]
     
  • 1.15, Balancer (ok), 05:26, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +21 +/
    На моей первой машине с Linux было 4Мб ОЗУ. 486DX2-66. Так там ещё и GUI стоял :)
     
     
  • 2.23, Константавр (ok), 08:27, 19/04/2017 [^] [ответить]    [к модератору]  
  • +7 +/
    Не тереби душу, как подумаешь, что в этих четырёх мегабайтах ещё и прикладное ПО крутилось, помимо ядра и гуёв...
     
  • 2.26, Aviagr (?), 09:32, 19/04/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Буржуй! Я начинал экспериментировать с "обезьянкой" еще на 386: приходя с работы, нажимал кнопку Включения и успевал поужинать - пока комп загрузится... :-)
    Но трава была зеленее и звезды ярче! :-)
     
     
  • 3.28, Константавр (ok), 10:07, 19/04/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Да, всё было медленно, но это обуславливалось дисками, шинами и т д При этом ка... весь текст скрыт [показать]
     
     
  • 4.31, devl547 (ok), 10:53, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    >Возможно ли вообще такое?

    Уже очень и очень давно.
    make localmodconfig, make localyesconfig.

     
     
  • 5.32, Константавр (ok), 10:55, 19/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    О, не знал (не особо и лез в эти дела). Спасибо. И что, прям можно сканпелять и будет работать? А принтеры потом не отвалятся, или флэшки или пр.?
     
     
  • 6.38, cmp (ok), 13:22, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    Вообще любой дистр запускается через initrd куда кладется модуль ядра - драйвер ... весь текст скрыт [показать]
     
     
  • 7.39, cmp (ok), 13:26, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    А ну и соответственно в любой дистр входит тулза mkinitrd, которая как раз и опр... весь текст скрыт [показать]
     
  • 6.46, annual slayer (?), 16:27, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    его демон дожен провисеть достаточно долго пока ты юзаешь полное ядро он просто ... весь текст скрыт [показать]
     
     
  • 7.52, Константавр (ok), 19:33, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Спасибо, буду знать. Хотя, сомневаюсь, что это сильно уменьшит размер ядра в памяти, скорее место на диске чуть сэкономит.
     
     
  • 8.61, annual slayer (?), 11:56, 20/04/2017 [^] [ответить]     [к модератору]  
  • +/
    значительно ускорит сборку, когда я пробовал получилось раз в 5 быстрее... весь текст скрыт [показать]
     
  • 3.76, pavlinux (ok), 03:01, 25/04/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Чо вы пя тите, на 386SX-40 с 2 мегами он 1-1 5 мин грузится ... весь текст скрыт [показать]
     
  • 2.63, Валик228 (?), 06:21, 21/04/2017 [^] [ответить]     [к модератору]  
  • +/
    на моей первой машине с линукс было тоже 4Мб ОЗУ Это был Cyrix 6x86 И там ма... весь текст скрыт [показать]
     
     
  • 3.77, pavlinux (ok), 03:02, 25/04/2017 [^] [ответить]     [к модератору]  
  • +/
    Это уже Пень, иди отседа, молодой ещё -P... весь текст скрыт [показать]
     
  • 1.17, Аноним (17), 06:09, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +10 +/
    на моем первом пентиуме ОЗУ - 32 мб и надо сказать - 95-я винда крутилась, офис, в пэйджмэйкере верстал газету, в кореле отрисовывал логотипы. Что-то сейчас так может?
     
     
  • 2.18, angra (ok), 07:00, 19/04/2017 [^] [ответить]    [к модератору]  
  • +6 +/
    Тебе расказать, что считалось в своё время на программируемых калькуляторах с 105 байт(не мега, не кило, просто байт) на код и 15-ю регистрами памяти?
     
     
  • 3.20, жабабыдлокодер (ok), 07:45, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Это у самой крутой модели. А у большинства - 98 и 14.
     
     
  • 4.44, Balancer (ok), 15:24, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    > Это у самой крутой модели. А у большинства - 98 и 14.

    МК-61 и МК-52 были на порядок распространённее, чем Б3-34 и МК-54 :)

     
     
  • 5.47, Aviagr (?), 17:13, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    У меня до сих пор МК-61 со справочником Дьяконова и старыми тетрадками с лекциями где-то на чердаке валяется... Выручал здорово, но стоил целую стипендию!
    Эпоха... Есть что вспомнить... :-)
     
     
  • 6.69, Balancer (ok), 13:56, 21/04/2017 [^] [ответить]     [к модератору]  
  • +/
    Аналогично Дьяконов, Шелест А тетрадка с программами даже в djvu переведена ... весь текст скрыт [показать]
     
     
  • 7.71, iZEN (ok), 17:50, 21/04/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    А я могу http www pixic ru i I0G1W3F8i1l0e8n4 jpg неужели ваш линукс так дегр... весь текст скрыт [показать]
     
  • 5.50, _ (??), 18:15, 19/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    И эта ... там байтов - не было :) Ну если уж совсем занудничать :)
     
     
  • 6.68, Balancer (ok), 13:52, 21/04/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Байты были Просто хранились не в параллельно адресуемой памяти, а в кольцевом б... весь текст скрыт [показать]
     
  • 5.65, scorry (ok), 12:23, 21/04/2017 [^] [ответить]    [к модератору]  
  • +/
    >> Это у самой крутой модели. А у большинства - 98 и 14.
    > МК-61 и МК-52 были на порядок распространённее, чем Б3-34 и МК-54 :)

    Это смотря в каком году оценивать.

    Не забывайте ещё и про Б3-21.

     
     
  • 6.67, Balancer (ok), 13:48, 21/04/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    В абсолютных числах Б3-34 было выпущено мало И они были экзотикой А вот МК-... весь текст скрыт [показать]
     
     
  • 7.70, scorry (ok), 15:29, 21/04/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    пожав плечами Программируемый калькулятор на моём первом курсе _вообще_ был эк... весь текст скрыт [показать]
     
     
  • 8.72, Balancer (ok), 21:13, 21/04/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Это в каком году Я ПМК увлёкся в 1988 году Тогда Б3-34 уже вообще давно не вып... весь текст скрыт [показать]
     
     
  • 9.73, scorry (ok), 18:29, 22/04/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    1984 Вы так спрашиваете, будто до 1988 года и других годов-то не было - ... весь текст скрыт [показать]
     
  • 2.19, angra (ok), 07:17, 19/04/2017 [^] [ответить]     [к модератору]  
  • +5 +/
    Ну и чуть чуть арифметики Для времен win95 рабочее разрешение экрана было 640x4... весь текст скрыт [показать]
     
     
  • 3.25, ryoken (ok), 09:27, 19/04/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Это, простите, где такие ужасы были Лично застал появление вин95, причём не в м... весь текст скрыт [показать]
     
     
  • 4.27, Онаним (?), 09:40, 19/04/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    >Это, простите, где такие ужасы были?

    В Windows 3.1. Фотку моих седых мудей сам найдешь.

     
  • 4.29, angra (ok), 10:37, 19/04/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    Это зависит от того, где видели Если у людей, работавших с графикой, то там кон... весь текст скрыт [показать]
     
     
  • 5.40, Аноним (-), 13:31, 19/04/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    > S3Trio64 с одним метром памяти и там 800x600 hicolor не поставишь

    У меня такая была. Ставил.

     
  • 5.45, Balancer (ok), 15:32, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    Эта карта появилась на свет только в 1995 году, а в России стала популярна тольк... весь текст скрыт [показать]
     
  • 5.49, iZEN (ok), 17:47, 19/04/2017 [^] [ответить]     [к модератору]  
  • +/
    С 1МБ видеокартой S3Trio64 получалось 65536 цветов 800x600 пикселей на 14 монит... весь текст скрыт [показать]
     
  • 4.66, scorry (ok), 12:24, 21/04/2017 [^] [ответить]    [к модератору]  
  • +/
    > Везде, где это видел - было от 800х600 HiColor,

    800 на 600 ещё надо было заработать. Как и сопроцессор, кстати.


     
  • 3.78, www2 (ok), 18:12, 25/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    >Также в 1mb можно уложиться при разрешении 800x600 и теми же 256 цветов.

    Я пользовался разрешением 1024x768 при 256 цветах - в мегабайт вмещалось. Работалось достаточно комфортно. Сейчас только глубина цвета увеличилась до 32 бит и экран расползся вширь, что комфорта работе не добавило ничуть. Видео на ютубе, конечно, при 256 цветах не посмотришь, но если бы браузер при развёртывании видео на полный экран переключался бы в режим 800x600 при 16 бит, то этого было бы вполне достаточно для просмотра видео - это разрешение тоже умещается в 1 мегабайт.

     
     
  • 4.79, scorry (ok), 11:28, 26/04/2017 [^] [ответить]    [к модератору]  
  • +/
    > при 16 бит, то этого было бы вполне достаточно МНЕ для просмотра
    > видео - это разрешение тоже умещается в 1 мегабайт.

    Исправил, не благодари.

     
  • 1.21, anonymous (??), 08:07, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Busybox - это же как архиватор, что засунешь в него, то он и будет уметь. И места жрать соответственно.
     
     
  • 2.30, Andrey Mitrofanov (?), 10:46, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    > Busybox - это же как архиватор, что засунешь в него, то он
    > и будет уметь. И места жрать соответственно.

    Пермиссивным борцам с GPL это все равно.

     
  • 1.22, Аноним (-), 08:15, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Актуально для LEDE и желающих оставить поддержку роутеров с 4Mb RAM!
     
  • 1.34, grsec (ok), 11:27, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Я не очень понимаю. Они пытаются приспособить ядро+userspace (минимальный) к 8-16 MB RAM, когда на 8ми работали 95е форточки. Где подвох?
     
     
  • 2.35, angra (ok), 11:51, 19/04/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Линукс времен win95 тоже требовал мало памяти. Но ни его, ни форточки на современном железе уже не запустишь. Ну и железки, где стоит такое количество памяти, совсем не десктопы и гуй там не нужен.
     
     
  • 3.42, Аномномномнимус (?), 14:08, 19/04/2017 [^] [ответить]    [к модератору]  
  • +/
    Есть ещё ESP8266 и аналоги! Очень распространённые семки =) Но взять какой-нить нормальный одноплатник всё равно проще и не шибко дороже.
     
  • 3.57, Ну тот который (?), 02:57, 20/04/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Ну почему?
     
  • 2.51, _ (??), 18:20, 19/04/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    >когда на 8ми работали 95е форточки. Где подвох?

    Запусти 10-ку на таком объёме памяти, потом приходи всех поливать ...
    Ну а не запустишь - утопись в нём сам! :))))

     
  • 1.37, Нанобот (ok), 13:06, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    судя по оригинальной презентации, время от времени кто-то пытается что-то начать делать, но потом забрасывает. потому что добавить 16мб памяти дешевле, чем тратить время разработчиков на оптимизации
     
  • 1.41, King (??), 14:05, 19/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Проблема современного ПО даже не в том, что оно жрет память как свинья, а в том, что не понятно зачем ему столько памяти. Если с видео памятью все понятно разрешение X глубина цвета+ N буферов, то с оперативкой мрак полный.
     
     
  • 2.48, antonkachsheev (?), 17:15, 19/04/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    Ну как же. Жабаскриптом транслировать видео про котиков в 4k.
     
  • 1.53, Аноним (-), 22:14, 19/04/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • –1 +/
    Кто бы написал статью - минимальный линукс для нормального десктопа по шагам с л... весь текст скрыт [показать]
     
     
  • 2.55, Аноним (-), 00:47, 20/04/2017 [^] [ответить]    [к модератору]  
  • +/
    LFS?
     
  • 2.59, Andrey Mitrofanov (?), 09:12, 20/04/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Кто бы написал статью - минимальный линукс для нормального десктопа по шагам
    > с легким GUI.

    BLFS не возьмёте?

     
  • 1.62, anonim (ok), 22:35, 20/04/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Почитайте более интересную статистику https://lkml.org/lkml/2017/4/4/710
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor