Резюме: Могу ли я запустить Ubuntu на плате ARM? Ответ определенно да. Ubuntu — это тип системы Linux. Ubuntu можно просто понимать как корневую файловую систему, которая аналогична корневой файловой системе, которую мы создали с помощью busybox и buildroot. Таким образом, пересадка Ubuntu означает пересадку корневой файловой системы 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.
Чтобы сохранить корневую файловую систему базы Ubuntu, сначала создайте каталог с именем ubuntu_rootfs в каталоге nfs в системе Ubuntu на ПК. Команда выглядит следующим образом:
cd /home/zhiguoxin/linux/nfs //Входить nfs в каталоге
mkdir ubuntu_rootfs //Создаем каталог с именем «ubuntu_rootfs»
будет загруженubuntu-base-16.04.5-base-armhf.tar.gz
Скопируйте в созданный вышеubuntu_rootfs
в каталоге,Затем используйте следующую команду, чтобы распаковать его:
sudo tar -vzxf ubuntu-base-16.04.5-base-armhf.tar.gz
После завершения декомпрессии, как показано на рисунке:
Разархивированная корневая файловая система базы Ubuntu
После распаковки ubuntu-base становится наиболее распространенной корневой файловой системой Linux, но ее пока нельзя использовать напрямую, и с ней необходимо выполнить некоторые другие настройки.
Вам необходимо установить инструмент qemu в Ubuntu на свой компьютер. Команда выглядит следующим образом:
sudo apt-get install qemu-user-static
Скопируйте только что установленный qemu-user-static в каталог ubuntu-base, который вы только что распаковали, то есть в каталог ubuntu_rootfs/usr/bin. Команда выглядит следующим образом:
cd /home/zhiguoxin/linux/nfs/ubuntu_rootfs //Входить ubuntu_rootfs в каталоге
sudo cp /usr/bin/qemu-arm-static ./usr/bin/ //копируем qemu-arm-static
Когда мы используем apt-get для установки программного обеспечения под Ubuntu, мы загружаем программное обеспечение из Интернета и устанавливаем его, поэтому нам необходимо указать источник программного обеспечения. Перед настройкой источника программного обеспечения скопируйте файл конфигурации DNS /etc/resolv.conf на хосте Ubuntu в корневую файловую систему. Команда выглядит следующим образом:
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 найти невозможно.
vi etc/apt/sources.list
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
Затем смонтируйте созданную выше корневую файловую систему на хосте. Вам необходимо смонтировать proc, sys, dev, dev/pts и другие файловые системы. Наконец, используйте chroot, чтобы переключить корневую файловую систему хоста на корневую файловую систему, которую мы используем. создан ранее. Здесь мы используем два файла сценариев для выполнения операций монтирования и размонтирования. Первый — это сценарий монтирования mount.sh. Создайте сценарий оболочки с именем mount.sh в каталоге ubuntu_rootfs и затем введите в него следующее содержимое:
#!/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 и введите в него следующее содержимое:
#!/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. Команды следующие:
sudo chmod 777 mount.sh unmount.sh
После того, как все будет готово, выполните скрипт mount.sh для монтирования созданной корневой файловой системы к хосту. Введите следующую команду:
./mount.sh
После успешного монтажа, как показано на рисунке:
Переключить корневую файловую систему
Видно, что текущий терминал переключил корневую файловую систему на корневую файловую систему ubuntu_rootfs, которую мы создали выше.
Поскольку база Ubuntu представляет собой минимальную корневую файловую систему, многие команды и программное обеспечение недоступны, поэтому нам необходимо сначала установить часто используемые команды и программное обеспечение, ввести следующие команды (обратите внимание! Введите эти команды под Ubuntu на компьютере, потому что теперь Ubuntu на компьютере Монтируем пересаженную корневую файловую систему на базе Ubuntu):
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 может нормально запускаться на плате разработки. После запуска мы продолжим установку других команд и программного обеспечения в соответствии с реальной ситуацией.
Установите пароль пользователя root. Я просто установлю его здесь. Пароль пользователя root также установлен как root, что эквивалентно тому же имени пользователя и паролю. Команда выглядит следующим образом.
passwd root //Установить пароль пользователя root
входитьpasswd root
Вам будет предложено войти позжеrootПароль пользователя,Просто введите его дважды.
Введите следующие команды, чтобы установить имя и IP-адрес компьютера:
echo "zhiguoxin_imx6ul" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 zhiguoxin_imx6ul" >> /etc/hosts
После запуска корневой файловой системы Ubuntu на плате разработки мы обычно также хотим, чтобы терминал последовательного порта работал нормально. Сначала определите файл устройства последовательного порта, который мы используем. Например, файл устройства последовательного порта, соответствующий UART1. плата разработки MINI Punctual Atom — ttymxc0. Нам нужно добавить ссылку с именем getty@ttymxc0.service, связанную с сервисом getty@.service. Введите следующую команду:
ln -s /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@ttymxc0.service
После настройки вы можете выйти из корневой файловой системы. Для выхода введите следующую команду:
exit
После выхода выполните сценарий unmount.sh, чтобы отменить монтирование. Команда выглядит следующим образом:
./unmount.sh
На этом этапе корневая файловая система Ubuntu создана, и следующим шагом будет ее монтирование на плату разработки для тестирования.
Корневая файловая система создана. Следующим шагом будет проверка. Сначала используйте nfs для монтирования корневой файловой системы. Установите значение переменной среды bootargs в uboot следующим образом:
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.
На этом этапе корневая файловая система Ubuntu полностью запущена на плате разработки. Если вы хотите установить какое-либо программное обеспечение, просто используйте инструмент apt, точно так же, как мы используем Ubuntu на ПК. Например, если мы устанавливаем cmatrix, мы можем напрямую ввести:
sudo apt-get install cmatrix//Установить cmatrix
Дождитесь завершения установки. После завершения вы можете использовать cmatrix.
Конечно, вы также можете запустить cmatrix кода матрицы Matrix на панели управления.
https://v.douyin.com/hWPnppL/