Автор Тема: сборка custom-ного ядра  (Прочитано 325 раз)

Оффлайн Olej

сборка custom-ного ядра
« : Июнь 11, 2018, 11:08:58 am »
Эта тема переползла вот отсюда как увеличить размер директории root?.

Это настолько важное (для меня! IMHO) действие, что я перецитирую оттуда сообщения, имеющие отношение.
Тех, кто считает, что это совершенно частный вопрос - просьба не беспокоиться ;D ... продолжайте читать другие темы...

 

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #1 : Июнь 11, 2018, 11:11:58 am »
перецитирую оттуда сообщения, имеющие отношение.
Собрал от нечего делать, minimal-network-image по этому гайду: https://forum.armbian.com/topic/6831-customize-imagesh-for-orangepizero-minimal-network-install-image/
Размер имиджа для OPiPC получился 452 mb , с помощью Win32DiskImage накатил на карту 4Gb
Загружаю на OPiPC а там:
fdisk /dev/mmcblk0
p
Device         Boot Start    End Sectors  Size Id Type
/dev/mmcblk0p1       8192 925695  917504  448M 83 Linux
--------------------------------------------------------------
разширил раздел так:
fdisk /dev/mmcblk0
Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-7744511, default 2048): 8192
Last sector, +sectors or +size{K,M,G,T,P} (8192-7744511, default 7744511):

Created a new partition 1 of type 'Linux' and of size 3.7 GiB.
Partition #1 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N

Command (m for help):w
-------------------------------------------------------------
reboot и:
-------------------------------------------------------------
resize2fs /dev/mmcblk0p1
resize2fs 1.43.4 (31-Jan-2017)
Filesystem at /dev/mmcblk0p1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 15
The filesystem on /dev/mmcblk0p1 is now 3868160 (1k) blocks long.
-------------------------------------------------------------
Всё. Проверил:
fdisk /dev/mmcblk0
p
Device         Boot Start     End Sectors  Size Id Type
/dev/mmcblk0p1       8192 7744511 7736320  3.7G 83 Linux

Кстати, этот mini Debian работает, и память кушает мало.
Собрал от нечего делать, minimal-network-image по этому гайду: https://forum.armbian.com/topic/6831-customize-imagesh-for-orangepizero-minimal-network-install-image/
Размер имиджа для OPiPC получился 452 mb , с помощью Win32DiskImage накатил на карту 4Gb
Это, безусловно, очень интересно!
Но в публикации там в основном понятно, но возникают мелкие вопросы по деталям.
Не могли бы вы прокомментировать и обсудить то, что сделали?

P.S. Но лучше, наверное, не здесь, чтобы не размывать темы ... а, скажем, здесь: как добавить новое ядро в uboot ... или даже в новой теме?

P.P.S. Как я это понял, сборка делается в том же tools от Armbian, но с подменой ./config-default.conf ? Или не? ;)
сборка делается в том же tools от Armbian.
не, config-default.conf только редактируется, у меня OpiPC
добавил в config-default.conf только BOARD="orangepipc" и меняем yes на no

 EXTERNAL="no"
 EXTERNAL_NEW="no"
 KERNEL_ONLY="no"
 BOARD="orangepipc"
создал lib.config в папке userpatches
PACKAGE_LIST="linux-base u-boot-tools initramfs-tools"
PACKAGE_LIST_RELEASE=""
PACKAGE_LIST_ADDITIONAL=""

в папке userpatches создал папку sources , а там файл sun8i.conf (не понял зачем)
CAN_BUILD_STRETCH=yes 
ну и создать файл customize-image.sh в папке userpatches с этого поста https://forum.armbian.com/topic/6831-customize-imagesh-for-orangepizero-minimal-network-install-image/
только свою плату надо вставить вместо orangepizero, в коннце файла в этой строке.
if [[ $BOARD == orangepizero ]]; then
собирал как  Debian 9, server.

Добавлю:
По умолчанию,  для суперпользователя root вход по SSH не работает.
надо:
apt install ssh -y
nano /etc/ssh/sshd_config

и редактируем параметр PermitRootLogin — задаем значение yes:

PermitRootLogin yes

Перезапускаем ssh server:
systemctl restart ssh || systemctl restart sshd
ну и по мелочи:
apt-get install ntp
изменить временную зону # ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
чувак, ты молодец
Если-бы, молодец это lrrr с с форума armbian.
lrrr был бы молодец, если бы вместо вот это глупости:
Цитировать
	case $RELEASE in
jessie)
;;
stretch)
;;
esac
- смог бы указать как выполнить сборку, взяв произвольную версию ядра.
Так как это делает, например, проект BuildRoot.

Там в файл lib.config вставить KERNELBRANCH="branch:v4.15.y".
для u-boot вроде BOOTBRANCH="branch:v2015.10" (не проверял)
« Последнее редактирование: Июнь 11, 2018, 11:20:48 am от Olej »

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #2 : Июнь 11, 2018, 11:16:08 am »
Т.е. всё началось в вот этого сообщения на Armbian customize-image.sh for orangepizero minimal network-install image.
Цитировать
I've tested with jessie and stretch, and with branches default, next, and dev. The image should boot up, get eth0 dhcp address, and have serial console on ttyS0.  Script option to remove systemd and use sysvinit.  Might be modded to work with other boards?

Set the following options and use the customize-image.sh.  If script breaks due to upstream changes, use last tested commit:  git checkout -f a66121

# required options for ./config-default.conf to prevent external packages
EXTERNAL="no"
EXTERNAL_NEW="no"
KERNEL_ONLY="no"
BOARD="orangepizero"

# required options for ./userpatches/lib.config to set minimal package install
PACKAGE_LIST="linux-base u-boot-tools initramfs-tools"
PACKAGE_LIST_RELEASE=""
PACKAGE_LIST_ADDITIONAL=""

# to build stretch, set in ./userpatches/sources/sun8i.conf
CAN_BUILD_STRETCH=yes

# ./userpatches/customize-image.sh
WITHOUT_SYSTEMD=yes # yes for sysvinit, no for systemd.
SERIAL_CONSOLE=yes  # enable serial console with sysvinit
Описываемый там скрипт customize-image.sh я прикрепил.
 
« Последнее редактирование: Июнь 11, 2018, 11:19:15 am от Olej »

Оффлайн ua3nbw

Re: сборка custom-ного ядра
« Ответ #3 : Июнь 11, 2018, 08:17:06 pm »
заметил тему.
да, ядро собирается и запускается.
На выходе девственно чистый Debian, но ядро конечно с патчами команды armbian,  и нет их скриптов.
Всё необходимое легко устанавливается.
легко  сравнить системы инициализации sysvinit и  systemd

сейчас гоняю sysvinit

при сборке в фале customize-image.sh
параметр WITHOUT_SYSTEMD=yes # yes for sysvinit, no for systemd.

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #4 : Июнь 11, 2018, 09:23:17 pm »
да, ядро собирается и запускается.
Именно ядро вы собирали, или целиком образ с ядром?
На выходе девственно чистый Debian, но ядро конечно с патчами команды armbian,  и нет их скриптов.
Ещё и дополнительные патчи сторонние можно перед сборкой применить (это мне на форуме Armbian подсказали как).
легко  сравнить системы инициализации sysvinit и  systemd
сейчас гоняю sysvinit
при сборке в фале customize-image.sh
параметр WITHOUT_SYSTEMD=yes # yes for sysvinit, no for systemd.
А вот это, как по мне - самое не интересное и не нужное. Зачем?

Оффлайн ua3nbw

Re: сборка custom-ного ядра
« Ответ #5 : Июнь 12, 2018, 08:02:06 am »
Именно ядро вы собирали, или целиком образ с ядром?
.img собирал, 
Размер имиджа для OPiPC получился 452 mb , с помощью Win32DiskImage накатил на карту 4Gb
Ещё и дополнительные патчи сторонние можно перед сборкой применить (это мне на форуме Armbian подсказали как).
Конечно можно, если они есть.
легко  сравнить системы инициализации sysvinit и  systemd
сейчас гоняю sysvinit
при сборке в фале customize-image.sh
параметр WITHOUT_SYSTEMD=yes # yes for sysvinit, no for systemd.
А вот это, как по мне - самое не интересное и не нужное. Зачем?
согласен, пользую systemd, но кто-то предпочитает sysvinit

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #6 : Июнь 12, 2018, 11:57:53 am »
Ещё и дополнительные патчи сторонние можно перед сборкой применить (это мне на форуме Armbian подсказали как).
Конечно можно, если они есть.
Я здесь на форуме сижу и детали выясняю ... да, собственно, и на Orange Pi оборудование стал тратиться - ради единственной задачи: Xenomai & realtime. И оно того стоит ... оно стоит всех в сумме всех задач, называвшихся и решавшихся на этом форуме. Это - совсем другая жизнь для SoC.
А там есть что патчить и собирать... - начать да кончить. ;D

Если не добиться hard realtime от SoC, то я и не вижу никаких особых достоинств их использования ... что, мультимедийные свистелки-перделки для дома делать?

 
« Последнее редактирование: Июнь 12, 2018, 11:59:43 am от Olej »

Оффлайн ua3nbw

Re: сборка custom-ного ядра
« Ответ #7 : Июнь 12, 2018, 07:53:50 pm »
Ещё и дополнительные патчи сторонние можно перед сборкой применить (это мне на форуме Armbian подсказали как).
Конечно можно, если они есть.
Я здесь на форуме сижу и детали выясняю ... да, собственно, и на Orange Pi оборудование стал тратиться - ради единственной задачи: Xenomai & realtime. И оно того стоит ... оно стоит всех в сумме всех задач, называвшихся и решавшихся на этом форуме. Это - совсем другая жизнь для SoC.
А там есть что патчить и собирать... - начать да кончить. ;D

Если не добиться hard realtime от SoC, то я и не вижу никаких особых достоинств их использования ... что, мультимедийные свистелки-перделки для дома делать?
А разве возможен hard realtime в Linux, Сейчас  реально можно работать с RT патчем. Планировщик можно запускать на отдельном ядре, а (псевдо) realtime задачи на любом выбранном ядре.
Уверен, что народ который строит станки CNC,  если это действительно стоящая вещь ужеб раскрутили.
Или Xenomai только в реакторах студенты используют ?  :)

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #8 : Июнь 12, 2018, 09:22:57 pm »
А разве возможен hard realtime в Linux,
Да возможен. И не менее hard realtime, чем QNX или VxWorks и pSOS.
Сейчас  реально можно работать с RT патчем. Планировщик можно запускать на отдельном ядре, а (псевдо) realtime задачи на любом выбранном ядре.
Все эти RTLinux-патчи (общеизвестные, в общем) только полумеры и глупости.
Или Xenomai только в реакторах студенты используют ?  :)
Вопрос даже не в Xenomai, а в проекте Adeos.
Xenomai - это только отдельное realtime микроядро, которое работает пол диспетчером Adeos параллельно и независимо от ядра Linux.

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #9 : Июнь 12, 2018, 10:03:16 pm »
А разве возможен hard realtime в Linux,
Возможен.
И это достаточно хорошо известно и описано в публикациях. Проекту Xenomai >15 лет, и его время от времени используют крупнейшие бренды мирового IT в своих отдельных embedded изделиях.
Извините, вам запрещён просмотр содержимого спойлеров.

Почему используют только "время от времени" в "отдельных embedded изделиях"?
Потому что а). такое качество не всегда и нужно и б). использование его в каждом отдельном случае (под конкретное оборудование) требует сильно тягомутной возни с адаптацией: патчить ядро Linux + устанавливать библиотеки и микроядро Xenomai + особенная сборка с этими библиотеками POSIX пользовательских приложений...     
« Последнее редактирование: Июнь 13, 2018, 06:39:36 am от Olej »

Оффлайн Olej

Re: сборка custom-ного ядра
« Ответ #10 : Июнь 13, 2018, 06:20:16 am »
Возможен.
Я бы не говорил так определённо, если бы мы ранее (недавно) не собрали (обратите внимание на прошедшее время глагола ;)) realtime Ubuntu вот для такой x86 штучки от Intel UDOO X86:

А кроме того, я собрал realtime Mint 18.3 под VirtualBox и имею его под рукой для экспериментов и сравнений.
И всё это было обкатано для проверки и тестирования тех результатов, которые изложены в отчёте Кембриджского университета How fast is fast enough? Choosing between Xenomai and Linux for real-time applications (загляните в документ - там интереснейшие графики :) ) ... или Томского политехнического АНАЛИЗ ВОЗМОЖНОСТЕЙ СОЗДАНИЯ РАСПРЕДЕЛЕННОЙ СИСТЕМЫ УПРАВЛЕНИЯ НА БАЗЕ ОС РЕАЛЬНОГО ВРЕМЕНИ LINUX/XENOMAI.
А в дополнение к этому они (Xenomai) ещё и интегрировали в себя другой давний свободный проект, realtime Ethernet - RTnet – A Flexible Hard Real-Time Networking Framework.
Уверен, что народ который строит станки CNC,  если это действительно стоящая вещь ужеб раскрутили.
А народ который строит станки CNC - использует известный PREEMPT_RT патч ядра Linux, который не так давно даже вошёл в основную ветку Linux kernel, и который обеспечивает только так называемый soft realtime режим. И если народу этого достаточно для станков CNC - то и достаточно.
Но вот тот отчёт Кембриджского университете (ссылка выше) и сравнивает PREEMPT_RT (он у них на графиках назван "rt linux") с настоящим hard realtime, который действительно гарантирует латентность в микросекундном диапазоне.   
И более того, показано в последних версиях, что ничто не препятствует использование микроядра Xenomai совместно (в паре) с ядром Linux, патченным PREEMPT_RT.
« Последнее редактирование: Июнь 13, 2018, 06:40:05 am от Olej »