- 6 Linux дистрибутивов для сисадминов и разработчиков, которые подходят и новичкам
- 1. Ubuntu
- 2. Arch Linux
- 3. Kali Linux
- 4. Debian
- 5. Linux Mint
- 6. CentOS
- CAELinux: дистрибутив Linux для инженеров
- Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1
- Что такое Buildroot?
- Как собрать Linux-систему с Buildroot?
- Прошивка и тестирование системы
- Этапы загрузки системы и вход
- Как сделать это «с нуля»?
- Углубляемся в основы конфигурирования Buildroot
- Углубляемся в процесс сборки Buildroot
6 Linux дистрибутивов для сисадминов и разработчиков, которые подходят и новичкам
Самым значительным преимуществом Linux является его индивидуальная настройка. Не имеет значения, в какой отрасли вы работаете; Есть дистрибутивы, которые вы можете использовать в своей работе. Некоторые дистрибутивы лучше всего подходят для научной работы, которая требует научного подхода и программирования.
Кроме того, большинство дистрибутивов можно использовать для повседневной деятельности. Как технический специалист, всегда полезно попробовать разные дистрибутивы Linux и попытаться понять, какой из них лучше подходит для вас.
1. Ubuntu
Если вы ищете знакомый дистрибутив, чтобы начать, то вы не ошибетесь с Ubuntu. Это всемирно известный дистрибутив. Он лучше всего подходит для тех, кто хочет использовать Linux ежедневно.
Для установки Ubuntu вам потребуется следующие ситсемные требования, необходимые для эффективной работы.
- 4 ГБ ОЗУ
- Двухъядерный процессор 2 ГГц
- 25 ГБ на жестком диске
Это рекомендуемое требование, но вы можете установить Ubuntu на компьютер с 512 МБ ОЗУ, 700 МГц процессором и 5 ГБ на жестком диске.
Итак, что делает Ubuntu таким особенным?
Прежде всего, это простой в использовании функционал.
Во-вторых, он безопасный и предоставляет отличную платформу для новичка.
Технически, Ubuntu основан на Debian. Это также поставляется с Long Team Support(LTS). Это означает, что вы можете установить стабильную версию для вашей машины. Есть и другие версии Ubuntu, которые вы можете попробовать, в том числе Ubuntu Core для безопасной сборки устройств IoT, для корпоративных нужд и Ubuntu Server для серверных нужд.
- Лучший дистрибутив для начинающих
- Хорош для повседневной деятельности
- Предлагает поддержку LTS
- Поставляется с несколькими версиями
- Безопасный
2. Arch Linux
Arch Linux — это легкий, гибкий дистрибутив Linux. Он предлагает отличную настройку из коробки. Однако Arch Linux не для начинающих. Он должен использоваться только опытными пользователями, которые уже знают операционную систему Linux.
Лучше всего подходит для программистов или опытных пользователей Unix. По сути, он разработан по строгому принципу дизайна. Это затрудняет работу. Итак, если вы знакомы с основной работой системы, тогда дистрибутив для вас.
Это также легкий дистрибутив и поставляется с различными инструментами настройки.
Минимальное требование — 1 ГБ дискового пространства, 512 МБ ОЗУ и 64-разрядный процессор.
- Лучше всего для программистов и опытных пользователей
- Облегченный
- Инструменты настройки
- Arch Linux следует строгой философии дизайна
3. Kali Linux
Если вы работаете в сфере кибербезопасности , то Kali Linux для вас. Это продвинутый дистрибутив Linux, который предлагает доступ к сотням инструментов тестирования на проникновение. По сути, Kali Linux основана на Debian. Это означает, что он постоянно обновляется новыми функциями и поддержкой инструментов.
Он опирается на ветку Debian Testing, которая является ультрасовременной веткой, которая содержит все последние функции и исправления ошибок.
Чтобы начать работу с Kali Linux, вам необходимо не менее 512 МБ ОЗУ, архитектура AMD64 или i386 и минимум 3 ГБ на жестком диске. Так что, если вы интересуетесь тестированием или кибербезопасностью, дистрибутив для вас. Изначально проект назывался BackTrack, но затем он перешел на Kali Linux.
Некоторые из основных предустановленных инструментов на проникновение включают Nmap, Wireshark, Aircrack-ng и так далее!
- Подходит для тестеров на проникновение или экспертов по кибербезопасности
- Быстрый и легкий
- Поставляется с тоннами инструментов для тестирования на проникновение
- Основан на Debian
4. Debian
Debian — одна из самых популярных операционных систем на основе Unix. Я перечислил его, потому что вы можете легко найти много дистрибутивов на основе Linux на основе Debian. Главной причиной того, что он является ключевым компонентом современных дистрибутивов, является его огромное хранилище. В настоящее время здесь находится более 50 000 пакетов программ. Коллекция программного обеспечения делает его идеальным местом для изучения.
Debian также очень стабилен, безопасен и быстрый. Любой может использовать это. Он гибок в выборе рабочего стола. В меню загрузки вы можете выбрать XFCE, LXDE и KDE.
Для правильной работы Debian вам потребуется минимум 1 ГГц ЦП, 256 МБ ОЗУ и 10 ГБ на жестком диске.
- Может быть использован любым
- Активное сообщество
- Позволяет пользователям выбирать среду рабочего стола
- Предлагает сочетание открытого и платного программного обеспечения
- Простота установки и обучения
5. Linux Mint
Если вы ищете легкий дистрибутив Linux, то Linux Mint для вас. Он основан на Debian и Ubuntu. Дистрибутив также обеспечивает удобным интерфейсом. Он лучше всего подходит для новичков, но в равной степени полезен и для опытных пользователей.
Linux Mint, как и большинство дистрибутивов, управляется сообществом. В плане интерфейса, вы можете выбрать между Xfce, KDE, GNOME, Cinnamon и MATE. Вы также можете свободно выбирать из хранилища 30 000 пакетов.
Чтобы использовать его правильно, вам нужно минимум 512 МБ ОЗУ, 9 ГБ на жестком диске и современный процессор.
- Основано на Debian и Ubuntu
- Безопасный и простой в использовании
- Современный интерфейс рабочего стола
- Поставляется в нескольких вариантах
- Среда Cinnamon похожа на Mac OS
6. CentOS
CentOS совместим с Red Hat Enterprise Linux (RHEL). Если вы когда-нибудь хотели попробовать Red Hat Enterprise Edition, но не смогли из-за вашего бюджета и возможностей, то CentOS для вас.
CentOS можно использовать на персональном компьютере, но в основном он предназначен для серверов и распределенных сетей. Если вы пытаетесь настроить домашний сервер, то CentOS — это идеальный дистрибутив сервера, который вам нужен. Он очень стабилен и предлагает десятилетний цикл поддержки.
Системные требования CentOS сложны, и поэтому я рекомендую вам ознакомиться с их официальным сайтом для лучшего понимания.
- Лучше всего для домашних серверов
- Предлагает десятилетний цикл поддержки
- Очень стабильный
- Поставляется с последними программными пакетами
Источник
CAELinux: дистрибутив Linux для инженеров
На Хабре о дистрибутиве CAELinux практически не писали (упоминали лишь раз), и совершенно напрасно. Это — специализированный дистрибутив для инженеров, с большим количеством предустановленного ПО для разного рода технических задач.
При этом CAELinux долгое время не обновлялся, более двух лет, и, наконец, вышла версия CAELinux 2013 (видимо, разработчики планировали выпустить обновленный дистрибутив немного раньше). Теперь новый стабильный релиз ОС Computer Aided Engineering (или САЕ) доступен для скачивания.
Стоит отметить, что CAELinux основан на 64-битной версии Xubuntu 12.04 LTS (которая, в свою очередь, является производной Ubuntu). Среди ПО, представляемого вместе с дистрибутивом, есть CAD-программы, различные 3D-инструменты анализа гидродинамики, 3D-инструменты работы с сигналами и их анализом. Есть инструментарий математического моделирования, работы с 3D анимацией и все прочее.
ПО поделено на разделы, среди которых стоит выделить раздел электроники. Здесь есть приложения, позволяющие работать с Arduino, проектировать печатные платы, использовать 3D печать (PyCAM, Dxf2Gcode и GcodeTools, LibreCAD, SagСАD, FreeCAD и OpenSCAD).
Стоит также выделить следующее ПО:
- Пакет для моделирования и анализа протекания термодинамических процессов SALOME_MECA 2013.1;
Системы 2D и 3D проектирования (САПР) и технологической подготовки производства: Salome, Freecad и OpenSCAD (3D CAD), LibreCad, SagCad (2D CAD), PyCAM, GCAM, dxf2gcode, OpenSCAM, CURA (3D-печать)
Скачать можно здесь. Дистрибутив выложен в виде LiveDVD/LiveUSB, с размером в 3,8 ГБ.
Источник
Собираем и устанавливаем свою Linux-систему на микроконтроллер STM32MP1
Примечание переводчика: эта статья уже выходила в блоге, но из-за мисклика вышла как оригинальная статья. Выпускаю ее снова, указав автора оригинала и ссылку на него
В этой статье мы автоматизируем процесс сборки и установки Linux-системы на микроконтроллер STM32MP157-DK2. ОС будет обладать минимальной функциональностью, но зато мы соберём из исходников собственную систему. А поможет нам в этом Buildroot — система сборки Linux-дистрибутивов.
Что такое Buildroot?
Сначала вспомним, что Linux-система состоит из достаточно большого количества разных компонентов. Так как мы здесь говорим про embedded-платформы, выделим следующие компоненты:
- Загрузчик (обычно для архитектуры ARM это U-Boot): выполняет инициализацию HW, загружает ядро Linux и стартует его.
- Собственно, само ядро, управляющее процессами и памятью, содержащее планировщик, файловые системы, сетевой стек и, конечно, все необходимые драйвера для вашей аппаратной платформы.
Пользовательские библиотеки и приложения из open source экосистемы: командные оболочки, библиотеки для работы с графикой, сетью, шифрованием и так далее.
Собрать все эти компоненты воедино мы можем двумя способами:
- Использовать готовый бинарный дистрибутив, например от Debian, Ubuntu или Fedora.
Некоторые из этих дистрибутивов поддерживают архитектуру ARMv7. Основное преимущество этого решения в том, что оно простое: эти бинарные дистрибутивы знакомы большинству пользователей Linux-систем, они имеют красивую и простую в использовании систему управления пакетами, все пакеты предварительно скомпилированы, поэтому нашей цели можно достичь очень быстро. Однако собранные таким образом системы обычно сложно кастомизировать (компоненты уже созданы, поэтому вы не можете легко изменить их конфигурацию в соответствии с вашими потребностями) и сложно оптимизировать (с точки зрения объёма занимаемой памяти или времени загрузки).
Они позволяют собрать Linux-систему непосредственно из исходного кода. А это означает, что систему будет легко оптимизировать и кастомизировать под свои нужды. Конечно же, этот способ намного сложнее, а на компиляцию кода придётся потратить немало процессорного времени.
Мы выбираем второй способ. В этой статье используем Buildroot, потому что с этой системой сборки достаточно просто разобраться и она подходит для embedded-платформ.
Buildroot — это набор make-файлов и скриптов, которые автоматизируют загрузку исходного кода различных компонентов, их извлечение, настройку, сборку и установку. В конечном итоге он генерирует образ системы, готовый к прошивке и обычно содержащий загрузчик, файл-образ ядра Linux и корневую файловую систему.
Важно отметить, что Buildroot не поставляется с исходными кодами Linux, с U-Boot или с другими компонентами. Он всего лишь содержит набор скриптов и инструкций, описывающих, какой исходный код загружать и какие настройки использовать при сборке.
Как собрать Linux-систему с Buildroot?
Начнём с установки самой системы Buildroot, а потом перейдём к её настройке:
Обычно настройка Buildroot делается с помощью команды make menuconfig, которая позволяет указать необходимые опции для вашей системы. Но мы вместо этого используем свою конфигурацию, которую мы создали заранее — специально для STM32MP157-DK2. Она находится в моём репозитории.
Мы могли бы сразу приступить к сборке, так как эта конфигурация работает нормально. Но здесь я хочу показать, как можно изменить конфигурацию и ускорить сборку. Мы изменим всего один параметр. Для этого запустим утилиту menuconfig (она встроена в Buildroot). Если кто-то из вас уже настраивал ядро Linux, этот инструмент должен быть вам интуитивно понятен, поскольку это просто утилита для настройки.
Если команда не сможет работать из-за отсутствия библиотеки ncurses, установите пакет libncurses-dev или ncurses-devel (точное название пакета будет зависеть от версии Linux ОС, на которой вы запускаете Buildroot). Библиотека ncurses предназначена для управления вводом-выводом на терминал.
Успешно выполнив menuconfig, перейдём в подменю Toolchain. По умолчанию в Toolchain Type выбрана опция . Нужно изменить её на , нажав ENTER.
Дело в том, что по умолчанию Buildroot использует собственный кросс-компилятор. Выбрав опцию , мы можем использовать более шустрый кросс-компилятор, специально заточенный под архитектуру ARMv7.
Выходим из menuconfig и сохраняем изменения. Теперь пришло время поработать с командой make. Я люблю всё логировать, поэтому она будет выглядеть вот так:
На этом этапе система сборки Buildroot проверит наличие всех необходимых пакетов. Если чего-то не обнаружит, то выполнение команды прервётся. Если это произойдёт, на сайте Buildroot посмотрите раздел System requirements > Mandatory packages и установите все необходимые зависимости. После этого можно запускать команду заново.
На моей машине команда make работала 10 минут. После сборки появится набор каталогов и файлов (самое интересное лежит в output/images):
- output/images/zImage: здесь лежит ядро Linux;
output/images/u-boot-spl.stm32: загрузчик первой стадии;
output/images/u-boot.img: загрузчик второй стадии;
Прошивка и тестирование системы
Запишем sdcard.img на карту microSD:
Не забудьте проверить, что в вашей системе карта microSD определяется как /dev/mmcblk0 (и на всякий случай предупреждаю: после того, вы запишете туда образ, вся информация на этой карточке будет затёрта)!
Подключите карту к микроконтроллеру.
Соедините USB-кабелем ваш компьютер и micro-USB разъём с надписью ST-LINK CN11 на плате. Ваша машина должна распознать устройство с именем /dev/ttyACM0, через которое вы сможете получить доступ к последовательному порту платы. Установите на свой компьютер и запустите программу для общения с последовательным портом. Лично мне очень нравится picocom:
Он подходит для embedded-систем, так как занимает минимальный объём памяти (менее 20 КБ) и имеет подробную документацию.
Наконец, включите плату, воткнув кабель USB-C в разъём PWR_IN CN6. Затем на последовательный порт начнут приходить сообщения. Нам важно, что в конце появится приглашение залогиниться в системе Buildroot. Можно войти в систему с пользователем root, пароль вводить не нужно.
Этапы загрузки системы и вход
Рассмотрим основные этапы процесса загрузки, изучая сообщения, которые приходят на последовательный порт:
Это сообщение от загрузчика первой стадии: код, содержащимся в файле u-boot-spl.stm32 скомпилирован как часть загрузчика U-Boot. Его непосредственно загружает STM32MP157. Загрузчик первой стадии должен быть достаточно маленьким, чтобы поместиться во внутреннюю память STM32MP157.
Это сообщение от загрузчика второй стадии, который был выгружен из внутренней памяти устройства во внешнюю память загрузчиком первой стадии. Загрузчик второй стадии — это файл u-boot.img, который также является частью загрузчика U-Boot.
Эти сообщения печатает загрузчик второй стадии: мы видим, что он загрузил образ ядра Linux (файл zImage) и блоб дерева устройств (файл stm32mp157c-dk2.dtb), описывающий нашу аппаратную платформу. Хорошо, U-Boot загрузил оба файла в память: теперь он готов к запуску ядра Linux.
И сразу появляются первые сообщения ядра Linux, показывающие версию Linux и дату/время сборки. Далее идут другие, не слишком интересные сообщения… Нам нужно дождаться вот этого:
Это сообщение указывает на то, что ядро смонтировало корневую файловую систему. После этого ядро запустит первый пользовательский процесс. Поэтому следующие сообщения будут связаны с инициализацией пользовательских служб:
И вот, наконец, появляется то самое сообщение от Buildroot с просьбой залогиниться.
После входа в систему вы получите доступ к командной оболочке Linux. Введя команду ps, можно посмотреть список процессов, команда ls/ покажет содержимое корневой файловой системы и так далее.
Также можно немного поиграться с платой — например, включить и выключить один из светодиодов:
Как сделать это «с нуля»?
Углубляемся в основы конфигурирования Buildroot
В начале статьи мы говорили про настройку и оптимизацию конфигурации Buildroot. По идее, для этого нужно сначала изучить основы конфигурирования в этой системе. Поэтому вернёмся в прошлое к команде make menuconfig.
В меню Target options выбрана архитектура ARM Little Endian, а в Target Architecture Variant указан Cortex-A7. На этом процессоре как раз построен наш микроконтроллер.
В меню Build options используем все значения по умолчанию.
Как я писал выше, в меню Toolchain вместо кросс-компилятора по умолчанию был выбран пункт .
В меню System configuration мы произвели следующие изменения:
- Оверлей-каталоги корневой файловой системы определены как board/stmicroelectronics/stm32mp157-dk/overlay/. Эта опция сообщает Buildroot, что содержимое этого каталога должно быть скопировано в корневую файловую систему в конце сборки. Такой подход позволяет добавлять собственные файлы в корневую файловую систему.
В меню Kernel мы выбрали версию Linux и путь для конфигурации ядра:
- Мы загрузили исходники ядра Linux с Github с помощью макроса Buildroot под названием github. В соответствии с выбранной версией (v4.19-stm32mp-r1.2), Buildroot пошёл в репозиторий (https://github.com/STMicroelectronics/linux/) и загрузил оттуда ядро.
Мы указали путь для конфигурации ядра: board/stmicroelectronics/stm32mp157-dk/linux.config. Конфигурацию ядра также можно кастомизировать для ваших нужд (эта тема выходит за рамки данной статьи).
Мы включили опцию и записали в In-tree Device Tree Source file names имя нашего файла stm32mp157c-dk2. И тогда Buildroot сможет сформировать и использовать дерево устройств именно для нашей платформы.
В меню Target packages оставили значения по умолчанию: активен только пакет BusyBox. BusyBox — очень популярный инструмент для embedded-платформ: это легковесная альтернатива Linux shell и другим инструментам командной строки (cp, mv, ls, vi, wget, tar). Для нашей системы нам хватит одного BusyBox!
В меню Filesystem images активировали ext2/3/4root filesystem и выбрали ext4. Эта файловая система отлично подходит для SD-карт.
Теперь в меню Bootloaders активируем U-Boot, для которого выполняем следующий набор действий:
U-Boot используем с предустановленной конфигурацией stm32mp15_basic, которую мы указываем для нашей платы с помощью defconfig.
Вообще, эта конфигурация предполагает использование сторожевого таймера STM32. Но в нашей минималистичной версии Linux его нет. Поэтому мы пойдём в файл board/stmicroelectronics/stm32mp157-dk/uboot-fragment.config и отключим сторожевой таймер для текущей конфигурации. Если мы захотим расширить возможности нашей Linux-системы и добавить его, то использование таймер нужно вновь разрешить.
Подменю U-Boot binary format: тут нужно предупредить Buildroot, что для загрузчика второй стадии должен быть создан образ u-boot.img, и именно его нужно будет поместить в output/images.
Мы также сообщаем Buildroot, что на базе нашей конфигурации для U-Boot будет собран загрузчик первой стадии (файл spl/u-boot-spl.stm32). Его тоже нужно будет разместить в output/images.
В окружение U-Boot мы добавляем опцию DEVICE_TREE=stm32mp157c-dk2. Она понадобится в процессе сборки U-Boot, чтобы использовать дерево устройств именно для нашей платформы.
Вся эта конфигурация сохраняется в простом текстовом файле configs/stm32mp157_dk_defconfig, который мы загружали изначально при запуске make stm32mp157_dk_defconfig.
Углубляемся в процесс сборки Buildroot
Надеюсь, после изучения основ конфигурирования стало понятнее, как происходит сборка (для простоты я опустил несколько промежуточных шагов):
- Загрузка и установка компилятора с веб-сайта ARM и установка библиотек C и C ++ на нашу корневую файловую систему.
Загрузка исходного кода ядра Linux из репозитория STMicroelectronics, сборка ядра в соответствии с нашей конфигурацией, размещение zImage и stm32mp157c-dk2.dtb в каталоге output/images, размещение корневой файловой системы в каталоге /boot. Кроме того, на этом этапе происходит установка модулей ядра в корневую файловую систему.
Загрузка исходного кода U-Boot из репозитория STMicroelectronics, его сборка в соответствии с нашей конфигурацией, размещение u-boot-spl.stm32u-boot.img в каталоге output/images.
Загрузка исходного кода Busybox с официального сайта, его сборка в соответствии с нашей конфигурацией и установка в корневую файловую систему.
Копирование содержимого оверлей-каталогов в корневую файловую систему.
Создание ext4-образа корневой файловой системы и его установка в output/images/rootfs.ext4
Теперь давайте посмотрим на файл board/stmicroelectronics/stm32mp157-dk/genimage.cfg, который советует утилите genimage, как нужно правильно генерировать образ для SD-карты:
Какие конкретно указания даны в этом скрипте:
- Создать файл sdcard.img
Этот файл должен содержать несколько разделов в соответствии с таблицей GPT partition table. Это нужно, чтобы встроенный ROM микроконтроллера STM32MP157 смог найти загрузчика первой стадии.
Два первых раздела должны называться fsbl1 и fsbl2. Там должен храниться «сырой» бинарный код загрузчика первой стадии (отмечу, что в разделах не установлено никакой файловой системы). В коде ROM, встроенном в STM32MP157, жёстко прописано: нужно искать загрузчик первой стадии в первых двух разделах с именами, начинающимися с fsbl.
Третий раздел (тоже без файловой системы) с именем uboot, по аналогии с предыдущим пунктом, хранит сырой бинарный файл загрузчика второй стадии. Действительно, загрузчик первой стадии должен найти загрузчика второй стадии в третьем разделе SD-карты (это определено в конфигурации U-Boot и может быть при необходимости изменено ).
Последний раздел помечен как загрузочный (bootable). Это важно, потому что конфигурация U-Boot для аппаратной платформы STM32MP157 по умолчанию следует концепции U-Boot Generic Distro Concept. При загрузке U-Boot будет искать раздел, помеченный как загрузочный, а затем внутри файловой системы, содержащейся в этом разделе, искать файл /boot/extlinux/extlinux.conf, чтобы узнать, как загрузить систему.
Файл extlinux.conf находится внутри оверлей-каталога нашей файловой системы (board/stmicroelectronics/stm32mp157-dk/overlay/boot/extlinux/extlinux.conf), в корневой файловой системе он будет определяться как /boot/extlinux/extlinux.conf и U-Boot легко найдёт его.
Вот что внутри этого файла:
Таким образом мы говорим U-Boot, чтобы он загружал образ ядра из /boot/zImage, дерево устройств — из /boot/stm32mp157c-dk2.dtb. А строка root=/dev/mmcblk0p4 rootwait должна быть передана ядру Linux во время загрузки. Именно в этом выражении (root=/dev/mmcblk0p4) хранится информация о том, где находится корневая файловая система.
Итак, сформулируем этапы загрузки собранной Linux-системы на нашей аппаратной платформе — с учётом новых подробностей:
- Встроенный в STM32MP157 ROM ищет разделы GPT, чьи имена начинаются с fsbl. Если успешно, то загружает их содержимое во внутреннюю память STM32 и запускает загрузчик первой стадии.
В соответствии с хардкодом, он обязан загрузить из третьего раздела SD-карты загрузчика второй стадии. Так, загрузчик первой стадии инициализирует внешнюю RAM, грузит в неё загрузчика второй стадии и стартует его.
Загрузчик второй стадии выполняет ещё одну инициализацию, а затем ищет раздел, помеченный как загрузочный (bootable). Он обнаруживает, что таковым является четвёртый раздел. Он загружает файл /boot/extlinux/extlinux.conf, благодаря которому узнаёт, где расположены ядро и дерево устройств. Он загружает их и запускает ядро с аргументами, указанными всё в том же файле extlinux.conf.
Ядро Linux работает до момента монтирования корневой файловой системы, расположение которой указано в параметре root=/dev/mmcblk0p4. После монтирования корневой файловой системы ядро запускает первый пользовательский процесс.
P.S. Вы можете найти исходный код для Buildroot, использованный в этой статье, вот здесь.
Облачные серверы от Маклауд быстрые и безопасные.
Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!
Источник