Как сделать свою жизнь и рабочее время гораздо комфортнее, если значительную часть этого самого времени ты проводишь перед синим экраном монитора?

Можно установить на него свою любимую операционную систему. Astra Linux, Alt Linux или Debian, конечно же, меня устраивают, но так приятно окунуться в привычный комфорт самой дружелюбной и лояльной к своим пользователям ОС. В общем, перед соблазном поставить любимый Arch Linux на Baikal-M просто невозможно устоять.

Установка по шагам

Вообще, поддержка Arch Linux для Baikal-M нигде не заявлена, но нас это почему-то не остановило. А все дело в том, что процессы установки практически любой ОС концептуально не различаются. Мы с вами просто достаточно хорошо понимаем, что он собой представляет, поэтому готовы установить много чего много куда. Если, конечно, мы имеем определенное представление о том, что такое загрузчик ОС, с которым нам предстоит иметь дело, и у нас есть ядро ОС, которое готово работать с нашим устройством.

Так что, прочитав эту статью, вы научитесь устанавливать на Baikal не только Arch Linux, но и практически любую ОС. Все, что понадобится сделать — это найти bootstrap-образ интересующей вас системы. Его, если не удастся скачать с официального сайта, можно извлечь из .ISO-образа операционной системы, в виде которых они сейчас чаще всего и распространяются.

Разметка диска

Перейдем к самой установке. Начнем с того, что разметим диск.

Нам понадобятся как минимум /boot (для UEFI) и корневой разделы (/). Я предлагаю этим не ограничиваться и также создать swap-раздел и выделить специальную область на диске под домашнюю директорию, чтобы, например, иметь возможность переустановить систему с сохранением личных данных, да и не только. Способов разметки диска много: можно использовать для этого или сам Baikal (но какая-то ОС на нем уже должна быть установлена), или любую другую рабочую станцию, как на Linux, так и на Windows, где у вас есть права администратора.

Под Linux для этого существует уйма программ, но можно отдельно отметить Gparted - софт вполне интуитивный и простой в применении даже для тех, кто пользуется им впервые. Форматируем диск и начинаем работу с ним. Первый раздел (должен быть первым на диске в буквальном смысле), который необходим UEFI, должен быть отформатирован как fat32 (этого хочет EDK II), а что касается размера — возьмем с запасом, 512 МБ. В самой системе этот раздел можно даже не монтировать, но если вы планируете с ним работать, я предлагаю его монтировать как /boot.

Дальше можем разместить раздел подкачки — swap. Что касается размера — «думайте сами, решайте сами». Но следует иметь в виду, что у Baikal-М 8 ядер, поэтому их одновременная загрузка различными процессами (например, ресурсозатратной сборкой какого-нибудь проекта из исходников) может использовать МНОГО памяти. Поэтому, если ее у вас на самом деле мало, раздел подкачки может пригодиться. Кстати, универсальный совет: если вы столкнулись с ситуацией, когда при компиляции какого-то проекта вам не хватает памяти, иногда лучшим решением может оказаться параллельная сборка на меньшем количестве ядер.

В итоге такая умеренная сборка без использования swap-раздела может оказаться быстрее, чем сборка на большем количестве ядер, но со swap'ом.

Затем я предлагаю разместить корневой раздел. Какого он должен быть размера, решать вам, а все оставшееся пространство оставим для домашней директории. Вообще, ядро Linux для Baikal-М, являющееся частью SDK от компании «Байкал Электроникс», умеет работать со множеством файловых систем, но меня вполне устраивает EXT4.

Установка образа системы на диск

Теперь отправляемся по адресу archlinuxarm.org, переходим в раздел загрузок и скачиваем bootstrap-образ системы. Нас интересует ARMv8 AArch64 Multi-platform.

На момент написания статьи этот образ перестал быть минималистичным и теперь весит целых 615 МБ. При этом содержит кучу того, что большинству людей, скорее всего, вовсе не понадобится. Например, там теперь лежит оконный менеджер i3.
Мне i3 нравится, но немного удручает тот факт, что кто-то уже за меня подумал и решил установить его мне на рабочую станцию, хотя я бы с этим прекрасно сам справился, если бы он мне был нужен.

Монтируем получившийся диск в нашей системе как /mnt, /mnt/boot и /mnt/home соответственно и распаковываем туда архив с помощью команды:

$ tar xzf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt

Файлы из дирректории /mnt/boot нам не пригодятся, можем их почистить командой

$ rm -rf /mnt/boot/*

Теперь отредактируем файл /mnt/etc/fstab. Думаю, все уже знают, что делать. Те, кому лень гуглить, что там к чему, могут посмотреть справку:

$ man 5 fstab

В моем случае его содержимое должно выглядеть так:

# <file system> <dir> <type> <options> <dump> <pass>
/dev/sda1     /boot     vfat   defaults   0   1
/dev/sda2    none      swap   sw         0    0
/dev/sda3     /         ext4   defaults   0   1
/dev/sda4     /home     ext4   defaults   0   1

Подготовка BIOS

В качестве загрузчика (в просторечии— BIOS’a) системы выступает tianokore EDK II, «открытая» имплементация интерфейса UEFI. Теперь нам пригодится кое-что из содержимого SDK, которое упоминалось выше. Открываем новую вкладку браузера, вбиваем в адресную строку baikalelectronics.ru, щелкаем на раздел «Продукты», выбираем Baikal-M и ищем внизу страницы ссылку на SDK для Baikal.
Выберем, например, последний — Software development kit (SDK) v5.3. И еще нас интересует скрипт baikal-arm64-5.3-20210924.run.
Скачиваем его, сохраняем куда следует и делаем исполняемым, например, так:

$ chmod +x baikal-arm64-5.3-20210924.run

И запускаем:

$ ./baikal-arm64-5.3-20210924.run

В распакованной директории ./baikal/prebuilts/ ищем интересующее нас ядро. В моем случае это mbm10.Image. Копируем его в /mnt/boot.

Желающие могут также собрать это ядро из исходников, которые тоже являются частью распакованного архива. Сделать это проще всего с помощью скриптов из директории ./baikal/tools/

А вот сейчас будет сложно и непонятно.
В самом простом случае, если EDK II не знает, что ему делать, он ищет на первом разделе текстовый файл с именем startup.nsh и выполняет имеющиеся в нем инструкции. Там можно прописать много всего, но я предлагаю только минимум, необходимый для запуска системы:

mbm10.Image root=/dev/sda3 rw

Сохраняем. Все готово к запуску.

Первый старт

В принципе, все готово. Подсоединим диск к плате, оказавшейся в нашем распоряжении, и нажмем на кнопку включения. Пароли пользователей совпадают с их именами. Разработчики дистрибутива из проекта archlinuxarm заботливо создали для нас дополнительного пользователя alarm, но я предлагаю залогиниться как root, чтобы чувствовать себя увереннее.

Теперь, перед тем как скачать все ваши любимые программы, нужно выполнить:

# pacman-key --init
# pacman-key --populate archlinuxarm

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

# pacman -Sy plasma kde-applications sddm chromium telegram-desktop
# systemctl enable sddm

А теперь перезагрузим компьютер.

Все получилось. К сожалению, сейчас весь рендеринг изображения выполняется софтверно, т.е. без участия встроенной видеокарты - mali. Все выглядит неплохо, хотя можно сделать гораздо лучше.
Но о том, как перенести рендеринг изображения на видеокарту, пожалуй, расскажу в другой раз.

Заключение

Вот и все. В результате несложных действий мы установили одну из самых популярных операционных систем в мире на компьютер с отечественным процессором Baikal-M. Следуя этому алгоритму, на Baikal-M можно установить практически любой Linux, в том числе те, для которых нет официальной поддержки, как в случае с Arch Linux Arm. Заодно мы вспомнили, что для установки системы нужно:

  • разметить диск;

  • расположить на нем файлы, необходимые для работы системы;

  • добавить ядро ОС, которое способно работать с нашим устройством;

  • подготовить загрузчик (BIOS) к работе с ОС.

Надеюсь, что многим данная статья окажется полезна.

Комментарии (33)


  1. achekalin
    02.12.2021 14:36
    +4

    Странно в блоге Байкал Электроникс читать фразу:

    Вообще, поддержка Arch Linux для Baikal-M нигде не заявлена, но нас это почему-то не остановило.

    "Почему-то"... Ну да!


    1. Leonid_Baikalskiy
      02.12.2021 14:52
      +4

      Конечно, как же иначе поднять интерес к прочтению? Говорить только правду: поддержка нигде не заявлена. И да, нас это не остановило. Почему-то :)


      1. khajiit
        06.12.2021 08:47

        Но есть ньюанс: вы располагаете исходниками и блобами.
        Это все равно что сказать, что новый макбук стоит €4,000, но вас это не остановило — и умолчать о том, что в кармане было €400,000,000.


  1. echo10
    02.12.2021 14:45
    +3

    Растолкуйте, я не понимаю, чем отличие китайского ARMа и "русского" изготовленного за рубежом? это даже не КР580 местного производства, а заказ иностранцам из TSMC наподобие как в китае заказывают инструмента типа дрелек, шуруповертов, шлифмашинок итд - отличие, порой, в цвете корпуса. А как здесь? Что такого, на ARMе запускать арм -совместимых линукс?


    1. Leonid_Baikalskiy
      02.12.2021 15:17
      +14

      Если взять всю схему создания чипа,  то можно уложиться в 11 пунктов, и 10 из них мы делаем в России.

      Вот эти 10 пунктов – сложнейшая работа, требующая невероятной точности и внимательности.

      1) Разработка архитектуры системы на кристалле

      2) Конфигурация всех IP

      3) ВЕСЬ физический дизайн (синтез и топология)

      4) Вся верификация

      5) Много RTL дизайна (Register Transfer Language – описание схемотехники снк)

      6) Разработка DFT (Design For Test – встроенные в RTL тестовые структуры для промышленного тестирования логики )  и Mbist (Memory Build-in Self Test – тестовые структуры внутри RTL для тестирования памяти)

      7) FPGA прототипирование (Field-programmable gate array или Программируемая пользователем вентильная матрица) Нужна для целей верификации и отладки ПО на ранних стадиях проектирования.

      8) Промышленное тестирование (создание ПО и тестовой оснастки для разбраковки процессоров на фабрике). Это значит, что в автоматическом режиме все процессоры проверяются на работоспособность ещё на фабрике, причём проверяются дважды – до корпусирования и после. Поэтому абсолютно все чипы, которые приезжают к нам, рабочие.

      9) Разработка системного ПО и Software Development Kit

      10) Bring up – первичный запуск процессора

      Всего 1 500 000 человеко-часов, 3 года и 50 человек – и один процессор готов (это время, потраченное на разработку Baikal-M).

      В мире 202 страны, и меньше 20 из них могут похвастаться  хотя бы одним разработанным универсальным процессором.

      Мы же в Baikal Electronics разработали их уже три.


      1. order227
        02.12.2021 21:04
        +1

        А завод у вас есть? Нету? Ну вот значит ничего вы не делаете и процессоры ваши вообще китайские! Вот Ampere делают настоящие процессоры!

        А... стоп... они тоже делают на TSMC... Америка не может сама сделать процессоры!


      1. avia07
        02.12.2021 21:20
        +2

        Красивая презентация! Научились делать!


        1. Leonid_Baikalskiy
          03.12.2021 19:41
          +1

          Скажем, за презентации до моего прихода в компанию никто не брался серьёзно)


  1. Urub
    02.12.2021 14:55
    +2

    Опишите полностью железо на котором запускали ОС. Где можно его приобрести ?


    1. NickSin
      02.12.2021 15:58
      +1

      Раньше можно было в Чип и Дипе. Мать с процессоров в районе 30-40к стоила


      1. JerleShannara
        03.12.2021 07:22
        +1

        Baikal-M(ARM64) платы никогда в чипдипе нельзя было купить, вы с Baikal-T(MIPS) спутали.


        1. NickSin
          03.12.2021 10:25

          Да, соглашусь с вами. Перепутал


    1. kyned
      04.12.2021 22:54

      Да, в принципе, на любой плате с Baikal-M (думаю есть исключения, но с ними будет слишком сложно столкнуться). Там везде примерно один и тот же EDKII стоит. При написании статьи использовалась плата компании Эдельвейс, практически вот такая.


  1. ildarz
    02.12.2021 15:38
    +2

    Так что, прочитав эту статью, вы научитесь устанавливать на Baikal не только Arch Linux, но и практически любую ОС. 

    *осторожно* И винду..? :)


    1. kyned
      02.12.2021 18:58
      +1

      C Windows все пока не так просто. Если очень сильно упростить картину, то любая ОС состоит из 2х частей: 1) это системный софт, который определяет что ОС из себя представляет для пользователя, и 2) ядро ОС, которое позволяет системному софту взаимодейтствовать с аппаратурой.

      Что касается системного софта, то всё что умеет работать с ARM, умеет работать и с Байкал-М. Тут системный софт написанный Microsoft, в принципе, не станет исключением. Но то что касается ядра ОС, то его нужно учить работать с конкретной периферией. В компании Байкал Электроникс программисты занимаются в том числе и тем что адаптируют ядро Linux под свои аппаратные платформы. Ещё я слышал про энтузиастов которые работают над адаптацией ядра из проекта FreeBSD под Байкал-М (подробностей не знаю). А вот Microsoft пока достаточным энтузиазмом не обладает :(

      Но всё что дружит с ядром Linux и ARM уже сейчас при желании установить возможно.


    1. namikiri
      03.12.2021 12:13
      +1

      Винду тоже можно, но постаравшись: отключив проверку на наличие TPM, Secure Boot и ещё пары «фич» и чуть доработав UEFI платы с Байкалом.


  1. trak
    02.12.2021 16:06

    Я вот как раз размышляю, не купить-ли мне Rasberry Pi 4 8Gb за 9000 рублей, может лучше я куплю вот этот байкал ? Он в аналогичной малинке конфигурации стоит дешевле или сопоставимо? Понятно, что "госуха" а за оллимпиард такое купит, а жители Хабра могут его себе позволить? Если нет, нафиг сюда писать вообще?


    1. alt78
      02.12.2021 16:14
      +3

      По работе нужно. На Хабре много статей про то, что я домой точно не поставлю или не смогу себе позволить.
      Ну и "отучаемся говорить про всю сеть".


      1. trak
        03.12.2021 08:02
        -2

        ну я и говорю, "госуха" купит за олимпиард. а Вам рановато делать мне замечания "за всю сеть"


    1. Leonid_Baikalskiy
      03.12.2021 19:45
      +1

      Рекомендованная цена на Baikal-M - 22 500 рублей без НДС. Материнская плата с распаянным процессором, по слухам, от 30000 до 50000 рублей. Так что сильно не дешевле) Что называется - тираж имеет значение..


    1. kyned
      04.12.2021 23:08

      Достаточно один раз бегло ознакомиться с характеристиками процессоров Baikal-M и Broadcom BCM2711, который стоит в Rasberry Pi 4 8Gb за 9000 рублей, чтобы не начинать сравнивать их между собой.


  1. amarao
    02.12.2021 16:46
    -1

    Ой как 2000ыми запахло..

    Скажите, а оно с cloud-init работает? Я могу просто сделать diskimage-builder, а потом получившееся dd на целевой диск, cloud-init раздел с настройками и в бой?

    Вот это создаёт образ ОС из набора пакетов и виртуалку с клоном такого диска за 35с до завершения apt update на уже загрузившейся машине.

    https://github.com/lidofinance/innernet-playbooks/blob/master/molecule/default/create.yml


    1. JerleShannara
      03.12.2021 07:25
      +2

      Gentoo/Debian/Arch/Ubuntu на этом камне спокойно работают, далее идут отечественные «на базе» дистрибутивы. По факту — берите ваш любимый дистрибутив, меняйте ядро, патчите месу и готово. Соответственно всякие плейбуки-куки тоже работать будут.


      1. amarao
        03.12.2021 12:45

        Я не про железо, я про методологию. Размечать диск вручную с помощью gparted, реально грустно. В хорошей системе cloud-init сам всё ресайзнет, достаточно сделать dd из компактного образа.


        1. JerleShannara
          03.12.2021 13:06
          +3

          Эмм, вы арч или генту когда-нибудь ставили сами?


          1. amarao
            03.12.2021 15:03

            Нет. Для gentoo элемент для diskimage-builder есть, для arch'а почему-то нет.


            1. JerleShannara
              04.12.2021 01:59

              Странно что кто-то его для gentoo сделал. Оба дистрибутива идут под лозунгом «There is no installer — you're installer». т.е. не нравится gparted — используйте sfdisk/parted/fdisk/windows disk manager/ms-dos fdisk и так далее.


              1. amarao
                04.12.2021 12:17

                ну, смотрите, если мне нужно развернуть, допустим, в пяти дата-центрах по 300 виртуалок, сколько раз мне нужно запустить gparted для установки gentoo?

                Все эти игрища в "администратор localhost" хороши для десктопов. В индустрии уже давно работает прагматичный подход: серверу прижигают клюв и он всю свою жизнь сидит в тесной клетке 19"x1U (некоторые в 3-4U) и кормят его через 1-2 зонда, подключаемые сзади. Нет времени церемониться со всякими "запустите, настройте". Есть типовой образ, и его надо использовать. Сам типовой образ обновляется, чтобы учесть исправления и добавления по необходимости.

                Добро пожаловать в 2010ые.


                1. JerleShannara
                  04.12.2021 15:40
                  +3

                  Вы же понимаете, что «типовой образ» и gentoo несколько не вяжутся между собой, ещё менее вяжущимися была бы связка LFS и типовой образ. Плюс возвращаясь к Байкалу-м — это ни разу не серверный процессор, серверный будет позже, вы же не строите/покупаете сервера которые собраны из «геймерская материнка, core i3 и поехали», это железо не очень подходит на ту самую жизнь в стойке хотя бы по возможностям мониторинга (как минимум надо на всё это навешивать KVM). Ну либо это те самые «железный сервер за 5 долларов — можно только вот те три образа, прочее низя»


                  1. amarao
                    04.12.2021 15:55

                    Насколько я понимаю, самый массовый деплой gentoo в мире - это chromebook, и там как используется подход "не компилять локально".


                1. speshuric
                  04.12.2021 23:01
                  +1

                  ну, смотрите, если мне нужно развернуть, допустим, в пяти дата-центрах по 300 виртуалок, сколько раз мне нужно запустить gparted для установки gentoo?

                  Если именно виртуалки, то наверное 1 раз. Ведь вы же будете клонировать образец ВМ (и, да, с cloud-init оно работает), а не устанавливать с нуля, да? :) Если контейнеры, то 0 раз.

                  Но вообще, зачем вам 300 ВМ агрессивного роллинг релиза в 5 датацентрах? Для эффективного управления этим придётся и своё зеркало пакетов поднимать (чтобы на трафике не разориться), и продумывать систему обновлений и отката, делать свой "стейджинг" для пакетов и многое подобное. И если всё это сделать, то считайте что у вас свой дистрибутив и вы его сопровождаете и вам почти всё равно, кем был его папа - арчем или любым другим роллинг дистрибутивом. Так что возьмите сразу "не очень rolling" дистрибутив.

                  Arch прекрасная ОС, но со своим явно выраженным подходом (агрессивный роллинг дистрибутив, ориентированный на "простоту", т.е. минимизацию "лишнего" для каждого из сценариев использования), причём archlinux arm - это еще отдельные тараканы (в том числе типа того же i3 в базовом образе).


                  1. amarao
                    05.12.2021 12:30

                    Прямо сейчас у меня есть скрипт `source rnd/activate`, который внутри использует молекулу для подъёма рабочего стенда. SUT там всего две штуки, зато остнастки и моков уже 8 штук, и это только начало. (сам git находится в study). Пик, который у меня был в предыдущем проекте - 4 сценария, каждый со своей пачкой виртуалок и некоторым количеством бареметал-серверов (которые поднимаются по тому же принципу, как виртуалки).

                    Разумеется, там внутри не гента, но линукс, собираемый именно diskimage-builder'ом. Алсо, сам процесс сборки и тестирования полностью автоматический (раз в неделю) и является частью продакшена.

                    Я к тому, что нужно очень сильно различать индустриальные методы и дескптопные. На дескптопе потратить пол-часа на возню с пакетным мендежром и настройками - нормально. В индустриальном подходе такое возможно только на этапе "придумать как". После этого всё остальное должны делать роботы, и, желательно, быстро.


                    1. speshuric
                      05.12.2021 22:12
                      +2

                      Так нигде в статье и не было сказано, что "щас установим на байкал труъ продакшен способом". Железо нетипичное, выбор ОС для продакшена - нетипичный, разметка диска - нетипичная (там 3 раздела от винды, я вот тоже не понимаю зачем, но ок, пусть будет). Т. е. "продакшеном" там просто и не пахнет по постановке задачи - просто чуваки в лабе проверили, установится ли Арч, и запилили статью. Отлично, почему бы нет. Мне, например, интересен сам факт относительно типичной установки свежего дистрибутива на эту железку (хотя, надеюсь, мне это не пригодится).