Запуск системы Ubuntu и The Matrix на плате ARM — потрясающе!
Запуск системы Ubuntu и The Matrix на плате ARM — потрясающе!

Галантерейные товары и льготы, доставленные в кратчайшие сроки!

Резюме: Могу ли я запустить Ubuntu на плате ARM? Ответ определенно да. Ubuntu — это тип системы Linux. Ubuntu можно просто понимать как корневую файловую систему, которая аналогична корневой файловой системе, которую мы создали с помощью busybox и buildroot. Таким образом, пересадка Ubuntu означает пересадку корневой файловой системы Ubuntu на нашу плату разработки.

1. Получите базу Ubuntu

Портирование Ubuntu очень простое и не требует от нас ничего компилировать, ведь официальные лица Ubuntu уже сделали корневую файловую систему! Нам нужно только просто настроить базовую корневую файловую систему, официально предоставляемую Ubuntu, чтобы она могла работать на нашей плате разработки. Для начала необходимо скачать Ubuntu-базу, и пересаживаем корневую файловую систему версии Ubuntu16.04. Прежде всего, вам необходимо зайти на официальный сайт Ubuntu, чтобы загрузить корневую файловую систему 16.04. Адрес загрузки корневой файловой системы — http://cdimage.ubuntu.com/. Интерфейс загрузки показан на рисунке:

сайт загрузки зеркала Ubuntu

Нажмите ubuntu-base на картинке, чтобы войти в интерфейс загрузки ubuntu-base:

интерфейс загрузки базы Ubuntu

Нажмите «релизы» на картинке, чтобы загрузить корневую файловую систему версии релизов. После входа, как показано на картинке:

Загрузите различные версии базы Ubuntu

Ubuntu предоставляет базу Ubuntu начиная с 12.04 до последней версии 19.10, которую может скачать каждый. Выбираем 16.04.5 и нажимаем войти в интерфейс как показано на рисунке:

Нажмите «выпустить» на картинке, чтобы войти в интерфейс загрузки 16.04.5, как показано на рисунке:

интерфейс загрузки базы Ubuntu

Ubuntu предоставляет соответствующие корневые файловые системы на базе Ubuntu для различных архитектур ЦП, включая amd64 (64-битный X86), Armhf, i386 (32-битный X86), powerpc, ppc64el и другие системы. I.MX6ULL — это процессор с ядром Cortex-A и аппаратный модуль с плавающей запятой, поэтому выбрана версия ArmHF.

2. Создание корневой файловой системы Ubuntu

2.1 Разархивируйте базу Ubuntu

Чтобы сохранить корневую файловую систему базы Ubuntu, сначала создайте каталог с именем ubuntu_rootfs в каталоге nfs в системе Ubuntu на ПК. Команда выглядит следующим образом:

Язык кода:javascript
копировать
cd /home/zhiguoxin/linux/nfs  //Входить nfs в каталоге
mkdir ubuntu_rootfs  //Создаем каталог с именем «ubuntu_rootfs»

будет загруженubuntu-base-16.04.5-base-armhf.tar.gzСкопируйте в созданный вышеubuntu_rootfsв каталоге,Затем используйте следующую команду, чтобы распаковать его:

Язык кода:javascript
копировать
sudo tar -vzxf ubuntu-base-16.04.5-base-armhf.tar.gz

После завершения декомпрессии, как показано на рисунке:

Разархивированная корневая файловая система базы Ubuntu

После распаковки ubuntu-base становится наиболее распространенной корневой файловой системой Linux, но ее пока нельзя использовать напрямую, и с ней необходимо выполнить некоторые другие настройки.

2.2 Установите qemu

Вам необходимо установить инструмент qemu в Ubuntu на свой компьютер. Команда выглядит следующим образом:

Язык кода:javascript
копировать
sudo apt-get install qemu-user-static

Скопируйте только что установленный qemu-user-static в каталог ubuntu-base, который вы только что распаковали, то есть в каталог ubuntu_rootfs/usr/bin. Команда выглядит следующим образом:

Язык кода:javascript
копировать
cd /home/zhiguoxin/linux/nfs/ubuntu_rootfs  //Входить ubuntu_rootfs в каталоге
sudo cp /usr/bin/qemu-arm-static ./usr/bin/ //копируем qemu-arm-static

2.3 Настройка источника программного обеспечения

Когда мы используем apt-get для установки программного обеспечения под Ubuntu, мы загружаем программное обеспечение из Интернета и устанавливаем его, поэтому нам необходимо указать источник программного обеспечения. Перед настройкой источника программного обеспечения скопируйте файл конфигурации DNS /etc/resolv.conf на хосте Ubuntu в корневую файловую систему. Команда выглядит следующим образом:

Язык кода:javascript
копировать
cd /home/zhiguoxin/linux/nfs/ubuntu_rootfs  //Входить ubuntu_rootfs в каталоге
sudo cp /etc/resolv.conf ./etc/resolv.conf  //копируем resolv.conf

Установите источник программного обеспечения, откройте файл ubuntu_rootfs/etc/apt/sources.list в корневой файловой системе и добавьте источник программного обеспечения в конце этого файла, например широко используемый источник Цинхуа, Университет науки и технологий Китая. источник и т. д. Эти источники программного обеспечения можно искать напрямую в Интернете. Обратите внимание, что здесь необходимо использовать исходный код ARM для ubuntu16.04, а исходный код X86 найти невозможно.

Язык кода:javascript
копировать
vi etc/apt/sources.list
Язык кода:javascript
копировать
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe

3. Хост монтирует и настраивает корневую файловую систему.

3.1 Смонтируйте корневую файловую систему на хосте

Затем смонтируйте созданную выше корневую файловую систему на хосте. Вам необходимо смонтировать proc, sys, dev, dev/pts и другие файловые системы. Наконец, используйте chroot, чтобы переключить корневую файловую систему хоста на корневую файловую систему, которую мы используем. создан ранее. Здесь мы используем два файла сценариев для выполнения операций монтирования и размонтирования. Первый — это сценарий монтирования mount.sh. Создайте сценарий оболочки с именем mount.sh в каталоге ubuntu_rootfs и затем введите в него следующее содержимое:

Язык кода:javascript
копировать
#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc
    /home/zhiguoxin/linux/nfs/ubuntu_rootfs/proc
sudo mount -t sysfs /sys
    /home/zhiguoxin/linux/nfs/ubuntu_rootfs/sys
sudo mount -o bind /dev /home/zhiguoxin/linux/nfs/ubuntu_rootfs/dev
sudo mount -o bind /dev/pts
    /home/zhiguoxin/linux/nfs/ubuntu_rootfs/dev/pts
sudo chroot /home/zhiguoxin/linux/nfs/ubuntu_rootfs

Напишите еще один файл сценария удаления, создайте новый сценарий оболочки с именем unmount.sh и введите в него следующее содержимое:

Язык кода:javascript
копировать
#!/bin/bash
echo "UNMOUNTING"
sudo umount /home/zhiguoxin/linux/nfs/ubuntu_rootfs/proc
sudo umount /home/zhiguoxin/linux/nfs/ubuntu_rootfs/sys
sudo umount /home/zhiguoxin/linux/nfs/ubuntu_rootfs/dev
sudo umount /home/zhiguoxin/linux/nfs/ubuntu_rootfs/dev/pts

Наконец, дайте двум сценариям оболочки разрешения на выполнение mount.sh и unmount.sh. Команды следующие:

Язык кода:javascript
копировать
sudo chmod 777 mount.sh unmount.sh

После того, как все будет готово, выполните скрипт mount.sh для монтирования созданной корневой файловой системы к хосту. Введите следующую команду:

Язык кода:javascript
копировать
./mount.sh

После успешного монтажа, как показано на рисунке:

Переключить корневую файловую систему

Видно, что текущий терминал переключил корневую файловую систему на корневую файловую систему ubuntu_rootfs, которую мы создали выше.

3.2 Установите часто используемые команды и программное обеспечение

Поскольку база Ubuntu представляет собой минимальную корневую файловую систему, многие команды и программное обеспечение недоступны, поэтому нам необходимо сначала установить часто используемые команды и программное обеспечение, ввести следующие команды (обратите внимание! Введите эти команды под Ubuntu на компьютере, потому что теперь Ubuntu на компьютере Монтируем пересаженную корневую файловую систему на базе Ubuntu):

Язык кода:javascript
копировать
apt update
apt install sudo
apt install vim
apt install kmod
apt install net-tools
apt install ethtool
apt install ifupdown
apt install language-pack-en-base
 apt install rsyslog
apt install htop
apt install iputils-ping

Сначала мы установим эти команды и программное обеспечение, чтобы гарантировать, что базовая корневая файловая система Ubuntu может нормально запускаться на плате разработки. После запуска мы продолжим установку других команд и программного обеспечения в соответствии с реальной ситуацией.

3.3 Установите пароль пользователя root

Установите пароль пользователя root. Я просто установлю его здесь. Пароль пользователя root также установлен как root, что эквивалентно тому же имени пользователя и паролю. Команда выглядит следующим образом.

Язык кода:javascript
копировать
passwd root  //Установить пароль пользователя root

входитьpasswd rootВам будет предложено войти позжеrootПароль пользователя,Просто введите его дважды.

3.4 Установите локальное имя и IP-адрес

Введите следующие команды, чтобы установить имя и IP-адрес компьютера:

Язык кода:javascript
копировать
echo "zhiguoxin_imx6ul" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 zhiguoxin_imx6ul" >> /etc/hosts

3.5 Настройка последовательного терминала

После запуска корневой файловой системы Ubuntu на плате разработки мы обычно также хотим, чтобы терминал последовательного порта работал нормально. Сначала определите файл устройства последовательного порта, который мы используем. Например, файл устройства последовательного порта, соответствующий UART1. плата разработки MINI Punctual Atom — ttymxc0. Нам нужно добавить ссылку с именем getty@ttymxc0.service, связанную с сервисом getty@.service. Введите следующую команду:

Язык кода:javascript
копировать
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.service

После настройки вы можете выйти из корневой файловой системы. Для выхода введите следующую команду:

Язык кода:javascript
копировать
exit

После выхода выполните сценарий unmount.sh, чтобы отменить монтирование. Команда выглядит следующим образом:

Язык кода:javascript
копировать
./unmount.sh

На этом этапе корневая файловая система Ubuntu создана, и следующим шагом будет ее монтирование на плату разработки для тестирования.

4. Тест корневой файловой системы Ubuntu

4.1 тест монтирования nfs

Корневая файловая система создана. Следующим шагом будет проверка. Сначала используйте nfs для монтирования корневой файловой системы. Установите значение переменной среды bootargs в uboot следующим образом:

Язык кода:javascript
копировать
setenv bootargs 'console=tty0 console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.10.100:/home/zhiguoxin/linux/nfs/ubuntu_rootfs,proto=tcp rw ip=192.168.10.50:192.168.10.100:192.168.10.1:255.255.255.0::eth0:off'
saveenv

Обратите внимание на установку корневой файловой системы на ubuntu_rootfs, которую мы сделали ранее. После завершения настроек перезапустите плату разработки. В это время вы войдете в корневую файловую систему Ubuntu, как показано на рисунке:

Войдите в корневую файловую систему Ubuntu

Видно, что версия корневой файловой системы Ubuntu 16.04.5 запустилась успешно, и нам было предложено ввести имя пользователя и пароль. Имя пользователя и пароль — root. После успешного ввода логина и пароля вы войдете в систему, как показано на рисунке:

Войдите в корневую файловую систему Ubuntu

Видно, что корневая файловая система Ubuntu работает нормально. В настоящее время вы можете играть в систему Ubuntu на плате ARM.

4.2 Установите программное обеспечение Matrix

На этом этапе корневая файловая система Ubuntu полностью запущена на плате разработки. Если вы хотите установить какое-либо программное обеспечение, просто используйте инструмент apt, точно так же, как мы используем Ubuntu на ПК. Например, если мы устанавливаем cmatrix, мы можем напрямую ввести:

Язык кода:javascript
копировать
sudo apt-get install cmatrix//Установить cmatrix

Дождитесь завершения установки. После завершения вы можете использовать cmatrix.

Конечно, вы также можете запустить cmatrix кода матрицы Matrix на панели управления.

https://v.douyin.com/hWPnppL/

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода