LXF165-166: Raspberry Pi: Строим дистрибутив
Olkol (обсуждение | вклад) (Новая страница: «Категория: Учебники '''Raspberry Pi Запускаем свой карманный компьютер как нам уго…») |
Olkol (обсуждение | вклад) (→Raspberry Pi: Cвой дистрибутив) |
||
Строка 13: | Строка 13: | ||
Первым делом нужно обзавестись подходящими инструментами. Для нашего урока мы возьмем Arch Linux, так как это прекрасный дистрибутив, доступный и для ПК, и для Pi. Будем предполагать, что используется последняя официальная версия Arch Linux и что она обновлена. Загрузите Arch Linux на своем Pi и убедитесь, что необходимые утилиты и другие пакеты установлены: | Первым делом нужно обзавестись подходящими инструментами. Для нашего урока мы возьмем Arch Linux, так как это прекрасный дистрибутив, доступный и для ПК, и для Pi. Будем предполагать, что используется последняя официальная версия Arch Linux и что она обновлена. Загрузите Arch Linux на своем Pi и убедитесь, что необходимые утилиты и другие пакеты установлены: | ||
− | # pacman -Syu | + | # pacman -Syu |
− | # pacman -S base-devel python2 git parted dosfstools | + | # pacman -S base-devel python2 git parted dosfstools |
===Выбираем себе приключение=== | ===Выбираем себе приключение=== |
Версия 02:12, 3 ноября 2018
|
|
|
Raspberry Pi Запускаем свой карманный компьютер как нам угодно
Содержание |
Raspberry Pi: Cвой дистрибутив
Теперь, чтобы взяться за дело, не нужно ждать, пока Raspberry Pi загрузится. Джон Лэйн создает пользовательский дистрибутив со всем необходимым.
На этом уроке мы попробуем создать собственный дистрибутив для Raspberry Pi, где будет только то, что вам нужно. Вы можете захотеть включать в него другие пакеты, менять настройки, возможно, даже изменить ядро. Образ дистрибутива можно будет записать на SD-карту и загрузить с нее Pi или загрузить его на компьютере через эмулятор. Создавать свой образ можно прямо на Pi, но это будет очень медленно, поэтому мы заодно рассмотрим, как скомпилировать и даже запустить ARM-код на вашем компьютере.
Конечно, настройки можно было бы делать прямо в работающей системе, но это опасно, потому что из-за одной ошибки все может рухнуть. Вдобавок эти шаги довольно сложно воспроизвести и трудно автоматизировать.
Первым делом нужно обзавестись подходящими инструментами. Для нашего урока мы возьмем Arch Linux, так как это прекрасный дистрибутив, доступный и для ПК, и для Pi. Будем предполагать, что используется последняя официальная версия Arch Linux и что она обновлена. Загрузите Arch Linux на своем Pi и убедитесь, что необходимые утилиты и другие пакеты установлены:
# pacman -Syu
# pacman -S base-devel python2 git parted dosfstools
Выбираем себе приключение
Первый шаг на пути к собственному дистрибутиву – решение, что в нем должно присутствовать. Разумный вариант для начала – базовая группа пакетов Arch Linux (base). Берите ее и добавляйте и удаляйте необходимые пакеты. Ненужные пакеты ядра стоит удалить и добавить соответствующие пакеты Raspberry Pi.
Сборка нового ядра необходима, если требуется добавить новые возможности. Также стоит отключить ненужные опции ядра, чтобы уменьшить его размер (учитывая ограниченные ресурсы памяти у малыша Pi). Учитывая то, что компиляция ядра обычно занимает более десяти часов, нам нужен альтернативный метод. Одна из альтернатив – использование кросс-компилятора; можно также использовать distcc, но с ним все равно понадобится кросс-компилятор, потому что «сервер» distcc должен генерировать код ARM. Я решил выполнить кросс-компиляцию ядра, и на нашем уроке опишу оба метода.
В идущих ниже командах для получения списка пакетов группы base используется Pacman, менеджер пакетов Arch Linux. Затем удаляются ненужные пакеты и добавляются ядро RPi и прошивка. Для добавления или удаления всего прочего в соответствии со своими потребностями (например, вы можете захотеть добавить openssh), употребите свой любимый текстовый редактор.
$ pacman -Sg base | awk ‘{print $2}’ | grep -v “^\(linux\|kernel\)” | tr ‘\n’ ‘ ‘ > base_packages
$ sed -i -e ‘s/$/linux-raspberrypi linux-headers-raspberrypi raspberrypi-firmware/’ base_packages
Вооружившись списком пакетов, установим пакеты для нового образа. С утилитой mkarchroot сделать это легко. Она установит пакеты в подкаталог, и его вы затем преобразуете в образ диска.
# mkarchroot archroot $(cat base_packages)
Создастся новый подкаталог archroot, содержащий все необходимое для полной системы. Затем его можно сделать корневым, и это должно работать; на практике, это придется делать при любых изменениях, например, для задания пароля root или для добавления учетных записей пользователей.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить}
Мы создадим образ системы в файле. Его можно создать и прямо на SD-карте, но иметь образ полезно, потому что его можно быстро перезаписать на карту или загрузить в эмуляторе даже без записи на карту. У ядра есть возможность «петли [loop]», при которой файл рассматривается как физический диск, который можно разбить на файловые системы. Для такого доступа к файлу в каталоге /dev создается обычный файл устройства.
Образ должен быть достаточно большим для размещения файловых систем, но и достаточно маленьким, чтобы поместиться на SD-карту. Мы создадим образ размером 2 ГиБ [здесь и далее используются двоичные приставки; их отличие от соответствующих десятичных в том, что умножение производится на степени двойки; таким образом, 1 КиБ (кибибайт) = 210 = 1024 байта, 1 МиБ (мебибайт) = 220 = 1 048 576 байт, 1 ГиБ (гибибайт) = 230 = 1 073 741 824 байта, – прим. пер.], такого же размера, как и официальный образ. Убедитесь, что модуль ядра loop загружен, создайте файл и свяжите с ним устройство «петли»:
# modprobe loop
$ truncate -s 2G myimage
$ device=$(losetup -f)
# losetup $device myimage
Мы пользуемся losetup дважды: для выделения имени устройству «петли», обычно /dev/loop0, и для его создания (имя устройства хранится в переменной, чтобы обратиться к нему позже). Разделы на образе должны быть разбиты особым образом: первый раздел с файловой системой FAT16 должен содержать загрузочные файлы и образ ядра. Второй раздел используется для корневой файловой системы и должен быть типа ext4. Если необходим раздел подкачки, его можно создать третьим. Загрузочная прошивка Raspberry Pi ищет таблицу разделов главной загрузочной записи типа MS-DOS (в отличие от BIOS ПК, она не запускает загрузчик из главной загрузочной записи). Для создания таблицы разделов на файле образа употребите команду parted:
# parted -s $device mktable msdos
При создании разделов стоит выравнивать их по блокам стирания на SD-карте. Делать это не обязательно, но рекомендуется. Рекомендуемый размер области стирания для большинства карт – 4 МиБ, но можно проверить его и для конкретной карты (в байтах):
$ cat /sys/class/block/mmcblk0/device/preferred_erase_size
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Если этот размер равен 4 МиБ, то выравнивание производится через каждые 8192 сектора (в секторе 512 байт, поэтому число секторов – 4 МиБ/512). Значит, разделы должны начинаться с сектора, кратного 8192: в первом блоке стирания 8192 сектора (0..8191), во втором – следующие 8192 сектора (8192..16383) и т. д. Сектор 0 резервирован для таблицы разделов, поэтому первый раздел должен начинаться со следующего выровненного сектора, это сектор 8192. Хороший размер для загрузочного раздела – 40 МиБ, то есть 81 920 секторов. Этого достаточно для размещения загрузочных файлов, и к тому же раздел заканчивается на границе блока стирания. Создайте загрузочный раздел, начиная с сектора 8192 и заканчивая сектором 90111 (8192+81920-1):
# parted -s $device unit s mkpart primary fat32 8192 90111
Если вам нужен раздел подкачки, выделите под него немного места (о необходимости раздела подкачки на SD-карте стоит подумать из-за медленной скорости и ограниченного количества операций записи носителя). Например, мы создадим раздел подкачки размером 256 МиБ (это 524 288 сектора или 64 блока записи).
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Наш образ размером 2 ГиБ содержит 4 194 304 сектора (2 ГиБ / 512 = 4 194 304). Так как нумерация секторов начинается с 0, то последним сектором будет 4 194 303. Для корневого раздела можно использовать все пространство между разделами boot и swap, он начнется с выровненного сектора 90 112 и закончится на границе выравнивания, оставив разделу подкачки 56 МиБ. Создадим их:
# parted $device unit s mkpart primary ext2 90112 3670015
# parted $device unit s mkpart primary linux-swap 3670016 4194303
При желании можно вывести таблицу разделов командой parted -s $device unit s print. Теперь создадим файловые системы. Устройство «петли» нужно пересоздать заново, чтобы для разделов были созданы файл устройств (это делает параметр -P):
# losetup -d $device
# device=$(losetup -f)
# losetup -P $device myimage
Подумаем о выравнивании внутренней структуры файловых систем. В случае файловой системы FAT нужно знать размер ее таблицы размещения файлов (File Allocation Table – FAT), для чего придется создать файловую систему:
mkfs.vfat -I -F 16 -n boot -s 16 -v ${device}p1 | grep “FAT size”
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Структура файловой системы FAT показана на схеме. Для выравнивания измените размер зарезервированного пространства с целью выровнять начало области данных. Размер этого пространства должен соответствовать рекомендуемому размеру области стирания за вычетом размеров двух таблиц выделения файлов. Если размер FAT равен 32 секторам, то размер зарезервированного пространства будет равен 8192 – (2 * 32) = 8128 секторам. Снова создайте файловую систему с использованием этой информации:
mkfs.vfat -I -F 16 -n boot -s 16 -R 8128 -v ${device}p1
Для корневого раздела используйте файловую систему ext4. Благодаря размеру блока в 4 КиБ она выравнивается по блокам стирания. Создавайте ее без журналирования, так как это уменьшит количество операций записи на SD-карту:
$ mkfs.ext4 -O has_journal -L root ${device}p2
Смонтируйте файловые системы и скопируйте файлы в соответствующее место из каталога archroot. Загрузочный раздел монтируется в каталог /boot на корневом разделе, чтобы загрузочные файлы поместились на верный раздел:
# mount ${device}p2 /mnt
# mkdir /mnt/boot
# mount ${device}p1 /mnt/boot
# (cd archroot ; cp -a * /mnt)
# umount /mnt/boot /mnt
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Теперь запишите образ на SD-карту (если на ней находится корневая система Pi, нужно скопировать изображение на другой компьютер через кард-ридер):
dd if=myimage of=/dev/mmcblk0 bs=4M
Выключите Pi, вставьте новую карту и загрузитесь. Либо скопируйте образ на компьютер и запустите его в эмуляторе...
Пакет linux-raspberry, который мы включили в образ, содержит официальный образ ядра, но изменить его довольно просто. Для его превращения в исполняемый образ ядра нам понадобятся исходный код ядра и компилятор.
Обычно компилятор формирует исполняемый код для того процессора, на котором запущен; но с помощью кросс-компилятора можно создавать исполняемые файлы для различных процессоров. То есть можно воспользоваться ресурсами более мощного «железа» x86 и скомпилировать код для архитектуры ARM Raspberry Pi гораздо быстрее, чем на самом Pi (компиляция ядра 3.2.27 на Pi занимает несколько часов, а с кросс-компилятором на Intel i7 на нее уходит две с половиной минуты!). Поэтому на время отложите Pi в сторону и приготовьтесь к компиляции на своем компьютере. «Родной» компилятор для нашей архитектуры – gcc, а версия кросс-компилятора для ARM называется arm-linux-gnueabigcc. Его нет в репозиториях, но его просто собрать с Yaourt (еще одна утилита для работы с репозиториями):
yaourt -S arm-linux-gnueabi-gcc
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Не отходите от терминала, чтобы ответить на многочисленные вопросы Yaourt (выберите «нет» на вопрос об изменении PKGBUILD и «да» на вопрос о том, хотите ли вы собрать или установить пакет; сборка проходит по этапам, поэтому всегда выбирайте «да» для замены конфликтующих пакетов).
Привет, мир!
Перед тем как двигаться дальше, пожалуй, стоит проверить кросс-компилятор. По моде истинных программистов мы напишем короткий пример «Привет, мир». Создайте новый файл hello.c:
#include <stdio.h>
int main ()
{
printf(“Hello, World!\n”);
return 0;
}
Скомпилируйте его для ARM и проверьте, что тип указан верно:
$ arm-linux-gnueabi-gcc -o hello hello.c
$ file hello
hello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27,not stripped
Если скопировать файл “hello” на Pi, он должен там запуститься:
$ ./hello
Hello, World!
Если все прошло успешно, то у нас есть кросс-компилятор, и мы можем перейти к компиляции пользовательского ядра.
$ git clone --depth 1 git://github.com/raspberrypi/linux.git
$ cd linux
$ ssh root@alarmpi zcat /proc/config.gz > .config
$ make -j 8 ARCH=arm CROSS_COMPILE=arm-linuxgnueabi-menuconfig -k
Мы загружаем исходники ядра из github. Благодаря параметру --depth 1 загружается только последняя версия, а не вся история изменений – так гораздо быстрее. Затем мы копируем настройки текущего ядра Raspberry Pi в файл .config и открываем его в редакторе меню ядра. В нем можно изменить конфигурацию ядра согласно своим пожеланиям. Закончив, выйдите из редактора, сохранив обновленный файл .config. Теперь все готово к сборке ядра и модулей (которые мы установим в подкаталог):
$ make -j 8 ARCH=arm CROSS_COMPILE=arm-linuxgnueabi- -k
$ mkdir -p modules
$ make -j 8 -k ARCH=arm CROSS_COMPILE=arm-linuxgnueabi- modules_install INSTALL_MOD_PATH=modules
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Когда сборка закончится, вы сможете загрузить новый образ ядра и модули в Pi и перезагрузить его (если хотите, сделайте перед этим резервную копию старого ядра и каталогов с модулями):
$ scp arch/arm/boot/Image root@alarmpi:/boot/kernel.img
$ cd modules/lib/modules
$ tar cJf - * | ssh root@alarmpi ‘(cd /usr/lib/modules; tar xjf -)’
$ ssh root@alarmpi reboot
Его также можно установить в дерево archroot перед созданием образа. Скопируйте arch/arm/boot/Image в archroot/boot/kernel.img и modules/lib/modules в archroot/usr/lib.
А также эмулятор
Этот образ также можно запустить в эмуляторе ARM и получить виртуальный Raspberry Pi на своем компьютере x86. Эмулятор процессора, умеющий запускать код ARM на компьютере с архитектурой x86 – QEMU, а устанавливается он командой pacman -S qemu. Создайте каталог и скопируйте туда свой образ. Вам также понадобится пользовательское ядро специально для эмулятора. Подходящее ядро (kernel-qemu) найдется в архивах – скопируйте его туда же, где находится образ. Теперь можно запустить эмулятор командой:
qemu-system-arm -machine versatilepb -cpu arm1176 -m 256 \
-no-reboot -serial stdio -kernel kernel-qemu \
-append “root=/dev/sda2 panic=1” -hda myimage
С эмулятором можно сделать еще одну хитрость: запускать код ARM прямо с командной строки x86. Это называется прозрачной эмуляцией; при этом для выполнения любого исполняемого кода ARM в QEMU используется возможность ядра binfmt-misc. Но для этого нужно сделать еще кое-что...
Прежде всего, у вас должен быть доступ к /proc/sys/fs/binfmt_misc. Если его нет, смонтируйте ее:
- mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
Затем нужно зарегистрировать двоичный формат ARM в ядре. Так мы скажем ему, как формат распознается и что с ним делать. Распознавание производится по проверке заголовка файла. Для регистрации исполняемых файлов ARM выполните команду:
echo ‘:arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\
x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemuarm-static:’ > /proc/sys/fs/binfmt_misc/register
После этого при любой попытке запуска двоичных файлов ARM вместо этого будет запущен /usr/bin/qemu-arm-static. В качестве параметра ему передается путь к двоичному файлу ARM. В результате QEMU прозрачно выполняет двоичный файл ARM. Поместив /usr/bin/qemu-arm-static в дерево образа, вы сможете переключиться в него по chroot, но чтобы это работало, нам нужна версия QEMU, не использующая разделяемых библиотек, так как в chroot есть только библиотеки ARM. Для этого нам нужна qemu-arm-static. К сожалению, статически связанный QEMU есть в немногих дистрибутивах, поэтому придется собрать его самим. Собранную версию для x86-64 вместе с инструкциями по сборке можно найти в архиве. Нужно установить ее как /usr/bin/qemu-arm-static.
Теперь если поместить qemu-arm-static в каталог /usr/bin на компьютере x86, а также в подкаталог archroot каталога archroot/usr/bin, у вас должна появиться возможность переключиться по chroot в эту файловую систему ARM. После этого можно, например, установить другие пакеты с помощью pacman.
Хотя таким образом можно легко компилировать и выполнять код ARM на платформе x86, все может немного усложниться при сборке пакетов, так как в дело включаются зависимости. В кросс-процессорной среде это может быть проблемой, так как makepkg предполагает, что ее зависимости установлены, а зависимости ARM на x86 установить нельзя. Самый простой способ употребить лошадиные силы процессора x86 для сборки пакетов для процессора ARM – воспользоваться утилитой distcc для сборки на Pi, но распределить ее задачи между одним или несколькими распределенными клиентами, обладающими большими вычислительными ресурсами. С distcc сборка пакетов на Pi с makepkg позволит прозрачно использовать мощность компьютера x86 для компиляции.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Чтобы воспользоваться distcc, надо установить его на Raspberry Pi и на настольный компьютер. Команда для установки одна и та же: pacman -S distcc. Pi – это клиент, и он управляет сборкой, на Pi запускается makepkg. На клиенте нужно настроить только использование distcc в makepkg. Добавьте в /etc/makepkg.conf параметры своего сервера distcc:
BUILDENV=(fakeroot distcc color !ccache)
DISTCC_HOSTS=”10.0.200.12”
MAKEFLAGS=”-j8”
Ваш компьютер – это сервер, который выполняет компиляцию. В настройках нужно указать хосты, для которых разрешено подключение, это делается в файле /etc/conf.d/distccd. Сервер должен запускаться как демон (что также можно делать автоматически при загрузке системы):
/etc/rc.d/distccd start
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
После настройки клиента и сервера при запуске makepkg на клиенте (Raspberry Pi) будет запускаться компиляция на сервере. Еще одна настройка, которую нужно сделать – указать верный компилятор для сервера distccd. Наш компилятор называется arm-linux-gnueabi-gcc, но distcc будет искать gcc, «родной» компилятор x86. Чтобы это исправить, создадим символическую ссылку и изменим путь для distccd:
# ln -s /usr/bin/arm-linux-gnueabi/gcc /use/bin/arm-linuxgnueabi-gcc
# sed -i -e ‘/^PID=/iPATH=/usr/bin/arm-linuxgnueabi:\$PATH’ /etc/rc.d/distcc
Стоит создать символические ссылки для всей цепочки утилит. Есть короткий скрипт, который делает это на сайте архива.
Выселяем корневую файловую систему
При работе с этим образом вы можете решить, что SD-карта – не лучшее место для корневой файловой системы. Корневой раздел довольно легко перенести на другое устройство, например, на внешний USB-диск. Все, что нужно – скопировать существующую корневую файловую систему с SD-карты в раздел на внешнем USB-диске, при необходимости изменив его размер:
# dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=4M
# fsck /dev/sda1
# resize2fs /dev/sda1
Измените расположение корневого раздела в команде загрузки в файле /boot/cmdline.txt. Измените root=/dev/mmcblk0p2 на root=/dev/sda1. Перезагрузитесь, и корневой раздел будет на жестком диске. Для этого необходимо, чтобы в ядро были вкомпилированы соответствующие драйверы USB. В стандартном ядре они есть, так что проблемы тут быть не должно. |