Install arch linux arm

Sam0230 / utm-arch-linux-installation-guide.md

Leave all fileds empty (including password) until selecting a mirror. You might want to use a mirror, and then select `none’ for ssh server and everything left.

alpineMirror=ALPIN_MIRROR archlinuxARMMirror=ARCH_ARM_MIRROR hostname=YOUR_HOSTNAME username=YOUR_USER_NAME echo "$alpineMirror"'/edge/main '"$alpineMirror"'/edge/community' >/etc/apk/repositories apk add arch-install-scripts pacman-makepkg gptfdisk btrfs-progs mkdir /etc/pacman.d cat >/etc/pacman.conf /etc/pacman.d/mirrorlist mkdir /tmp/pacmaninit cd /tmp/pacmaninit pacman -Sydd pacman-mirrorlist archlinuxarm-keyring --noconfirm rm /var/cache/pacman/pkg/*.sig tar -xf /var/cache/pacman/pkg/pacman-mirrorlist-*.pkg.tar.* tar -xf /var/cache/pacman/pkg/archlinuxarm-keyring-*.pkg.tar.* cat etc/pacman.d/mirrorlist >>/etc/pacman.d/mirrorlist mkdir /usr/share/pacman/keyrings cp usr/share/pacman/keyrings/archlinuxarm.gpg /usr/share/pacman/keyrings/ echo '02922214DE8981D14DC2ACABBC704E86B823CD25:4:' >>/usr/share/pacman/keyrings/archlinuxarm-trusted echo '9D22B7BB678DC056B1F7723CB55C5315DCD9EE1A:4:' >>/usr/share/pacman/keyrings/archlinuxarm-trusted echo '69DD6C8FD314223E14362848BF7EEF7A9C6B5765:4:' >>/usr/share/pacman/keyrings/archlinuxarm-trusted touch /usr/share/pacman/keyrings/archlinuxarm-revoked pacman-key --init pacman-key --populate archlinuxarm pacman -Sdd archlinuxarm-keyring --noconfirm --overwrite '*' pacman-key --init pacman-key --populate archlinuxarm echo -e 'n\n\n\n+1G\nef00\np\nn\n\n\n\n8300\nw\ny\n' | gdisk /dev/vda mkfs.vfat /dev/vda1 mkfs.btrfs /dev/vda2 mount -t btrfs /dev/vda2 /mnt mkdir -p /mnt/boot/efi mount -t vfat /dev/vda1 /mnt/boot/efi pacstrap /mnt base linux linux-firmware grub btrfs-progs sudo dhcpcd busybox if [ ! -e /mnt/boot/Image ]; then ln -s Image /mnt/boot/vmlinuz-linux fi genfstab -U /mnt >> /mnt/etc/fstab cat >/mnt/.__init > /etc/hostname echo -e "127.0.0.1\tlocalhost" >> /etc/hosts echo -e "::1\t\t\tlocalhost" >> /etc/hosts echo -e "127.0.0.1\t\$hostname" >> /etc/hosts chmod +w /etc/sudoers echo 'Defaults env_reset' >>/etc/sudoers sed -i 's|# Defaults secure_path="|Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/bin"\n# Defaults secure_path="|' /etc/sudoers sed -i 's/# \%sudo\tALL/\%sudo\tALL/' /etc/sudoers chmod -w /etc/sudoers sed -i 's/proc:x:26:/proc:x:26:\nsudo:x:27:'"\$username"'/' /etc/group useradd "\$username" -m -U passwd -d "\$username" systemctl enable dhcpcd systemctl set-default multi-user.target END export username hostname arch-chroot /mnt bash /.__init rm /mnt/.__init 
  1. chroot /mnt /bin/passwd «$username» to change your passwd.
  2. poweroff
  3. Open VM settings panel, switch to Display tab, change display type back to full graphics and chang scaling algorithm to nearst neighbor.
  4. Go to Drivers and remove Alpine Linux LiveCD.
  5. Save config, power on and install a graphic user interface.

Источник

Archlinuxarm просто

Иногда, чтобы сделать что-то сложное, нужно сделать что-то простое сначала. К примеру, если взять какой-то одноплатный компьютер, и захотеть установить arch — можно столкнуться с трудностями. А что если взяться устанавливать не чистый arch, а manjaro?

Читайте также:  Astra linux cmake version

На просторах был найден незамысловатый установщик для одноплатных систем, который подготовит вам всю систему за сравнительно короткое время. Называется сие творенье manjaro-arm-installer. Простым языком — это пакет в репозитории manjaro, который готовит разделы, устанавливает базовый набор пакетов и создает пользователей на носителе, который потом нужно просто всунуть в одноплатный ПК. Чтобы это сделать, можно просто скачать live образ manjaro, загрузится с него, затем вписать в консоль

sudo pacman -Syu manjaro-arm-installer

По завершении установки подключить носитель, предназначенный для одноплатного ПК, и запустить

sudo bash manjaro-arm-installer

Дальше заполнить несколько скринов настроек и подождать, пока пройдёт установка. Дальше размонтировать и извлечь накопитель и готовиться к чуду воткнуть в одноплатный пк. Если всё прошло успешно, у вас за ~ 30 минут будет в строю ваша платка, и, что немаловажно, под управлением archlinuxarm.

Линк на сам установщик. Там написано какие одноплатные пк поддерживаются (Raspberry Pi 4 точно есть), ровно как и то, каким образом запустить этот установщик на произвольном дистрибутиве linux.

Источник

Установка ArchLinux ARM рядом с Android без chroot

Я испробовал множество средств для установки Linux на свое Android устройство, но все они или не работали вовсе, или были слишком глючные. К счастью я использую на ПК ArchLinux и узнав о проекте ArchLinux ARM решил попробовать его в деле. И не просто установить в chroot, а заставить его работать и без него.

Нам потребуется

  • Прямые руки
  • Android устройство
  • Root доступ
  • Busybox
  • Эмулятор терминала
  • Свободное место
  • ADB(для удобства)

Все действия Вы выполняете на свой страх и риск.

Я использовал

  • Устройство Android 4.2 с 512Мб ОЗУ, ядро Linux 3.4.5 armv7l
  • Эмулятор терминала ConnectBot
  • Управление суперпольпользователем SuperSU
  • BusyBox v1.20.0

Часть 1: Подготовка

1. Скачаем архив с ArchLinux ARM с зеркала:

wget http://mirror.yandex.ru/archlinux-arm/os/ArchLinuxARM-armv7-latest.tar.gz mv ArchLinuxARM-armv7-latest.tar.gz ArchLinuxARM.tar.gz adb push ArchLinuxARM.tar.gz /sdcard/ 

Дальнейшие действия необходимо проделывать на Android устройстве

2. Создаем файл для будущего образа с помощью make_ext4fs.

Если у вас есть отдельный раздел на карте памяти — желательно использовать его. В моем случае 16Гб SD карта была забита важными данными и возможности сдвинуть главный FAT раздел не было.

В зависимости от настроек /sdcard может быть как внешней, так и внутренней картой памяти.

cd sdcard make_ext4fs -l 3221225472 arch.img

3221225472 это 1024*1024*1024*3, следовательно будет создан образ в 3Гб. Размер образа определите для себя по вкусу. Помните что на FAT32 нельзя создать файл больше 4Гб

Читайте также:  Python температура процессора linux

3. Примонтируем образ и распакуем файлы ArchLinux ARM

mount -o rw,remount / mkdir /arch busybox mount /sdcard/arch.img /arch tar -xvf ArchLinuxARM.tar.gz -C /arch/

4. Несмотря на то, что наша цель — обойтись без chroot, для базовой настройки и проверки работоспособности chroot все же нужно сделать. В противном случае обновлять, доставлять пакеты Вам придется уже на боевой системе.

busybox mount -t proc none /arch/proc busybox mount -o rbind /dev /arch/dev busybox mount -t tmpfs none /arch/tmp busybox mount -o size=10%,mode=0755 -t tmpfs none /arch/run chroot /arch /bin/bash

Часть 2: Поиск и решение проблем

Проблема 1: ping не работает

ping 8.8.8.8 socket: Permission denied 

Вспоминаем, что у Android серьезная система разграничения прав. И в нем существует пермишен на «Полный доступ к сети». Без этого пермишшена пользователи не могут получить полный доступ к сокетам. То что надо.

Вернемся к Android консоли и пропишем комманду id:

uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)

У вас вывод может быть другой

groupadd -g 3003 inet usermod -a -G inet root 

Но вот незадача, chroot не обновляет group. Поможет вот такой «хак»:

ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=59 time=89.6 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=59 time=88.6 ms 

Проблема 2: Не работает DNS

Удаляем симлинк на systemd и запишем нормальные DNS:

rm /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf

Если Вы запороли PATH

Если произошло такое, что простые комманды вида ls,cat,su не работают(не видятся) системой, Вы можете попробывать вызвать их напрямую: /system/bin/ls, /system/bin/cat, /system/xbin/su.
Или перезагрузить устройство.

Ставим необходимые пакеты

pacman -S gcc htop iotop sudo openssh

Проверяем gcc

Часть 3: Подготовка к работе без chroot

Самое главное, что позволяет ArchLinux работать без chroot рядом с андроидом — тот факт, что папки и файлы ArchLinux и андроид различны и не мешают друг другу.

Если Вы не уверены в том, что файлы не пересекутся, выполните эти команды из Android консоли:

ls /etc/ > /sdcard/ls.txt ls /arch/etc/ > /sdcard/ls2.txt busybox grep -F -f /sdcard/ls.txt /sdcard/ls2.txt

Покажет пересечение файлов. У меня это выглядит так:

dhcpcd.conf hosts security

Выполним копирование файлов из /etc/ в /arch/etc/ из Android:

cp -Ra /etc/* /arch/etc/ cp -a /sbin/adbd /arch/usr/bin/

Ключ -a обязателен, так как при использовании обычного -R права скопированы не будут.

Читайте также:  Linux образ работающей системы

Нужно заранее позаботится о Root.

Android приложения требуют, что бы комманда su сразу же давала доступ к суперпользователю и не запрашивала пароль.

passwd mv /usr/bin/su /usr/bin/su.r

Часть 4: Поехали!

Создадим нужные каталоги и воспользуемся mount —bind что бы виртуально заменить директорию, не изменяя ее на диске.

mkdir /lib mkdir /bin mkdir /xbin mkdir /opt mkdir /usr mkdir /home mkdir /run mkdir /srv mkdir /tmp mkdir /var busybox mount --bind /arch/etc /etc busybox mount --bind /arch/opt /opt busybox mount --bind /arch/home /home busybox mount -o size=10%,mode=0755 -t tmpfs none /run busybox mount --bind /arch/srv /srv busybox mount -t tmpfs none /tmp busybox mount --bind /arch/sbin /sbin busybox mount --bind /arch/usr/ /usr busybox mount --bind /arch/var/ /var busybox mount --bind /arch/lib/ /lib busybox mount --bind /arch/usr/bin/ /bin /bin/bash 

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

Что дальше

В итоге мы имеем практически полноценный ArchLinux за исключением systemd с свежими версиями пакетов.

Можно установить http, php, mysql. При правильной настройке на уменьшение потребления памяти даже на моем смартфоне с ОЗУ 512Мб они работали корректно.

Можно установить иксовые библиотеки и с помощью X сервера для Android пользоваться ПО для линукса. xterm заработал корректно.

Можно собирать любые программы (и, о нет, ядра) для Linux без ПК.
Можно установить Java для ARM и использовать Java приложения.

Послесловие

Большой проблемой остается systemd и его привязка к PID 1. Для того, что бы сохранить PID 1 нужно влезть в init андроида и прописать exec после инициализации устройств. Это можно сделать заменив init андроида shell скриптом, но тогда остается вопрос что делать с оригинальным init андроида. Так как место на загрузочном диске ограничено несколькими мегабайтами, нужно будет использовать switch_root в заранее созданный образ. Мне пока не удалось завести systemd таким способом.

Мне 16, и это моя первая публикация. Конструктивная критика приветствуется.

Источник

Оцените статью
Adblock
detector