Orange Pi (Русский)
Orange Pi (One) — это миниатюрный компьютер, созданный для ARMv7-A архитектуры. Подробнее об этом проекте.
Эта статья основана на Banana Pi. Более того, эта статья не является исчерпывающим руководством по установке и предполагает, что читатель уже настраивал систему Arch ранее.
Установка
Использование оригинального архива ArchLinuxARM
Этот метод установит неизмененную базовую систему ArchLinuxARM armv7 на ваш Orange Pi One, что означает, что у вас будет запущено последнее ядро mainline. Вероятно, это также будет работать и для других H3 Orange Pi с поддержкой mainline.
Установить базовую систему на SD-карту
Запись нолей в начало SD-карты:
dd if=/dev/zero of=/dev/sdX bs=1M count=8
Используйте fdisk для создания разделов на SD-карте и форматирование с помощью mkfs.ext4 -O ^metadata_csum,^64bit /dev/sdX1
.
Смонтируйте файловую систему ext4, заменив sdX1
на отформатированный раздел:
# mkdir mnt # mount /dev/sdX1 /mnt
Загрузка и извлечение корневой файловой системы:
# wget https://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz # bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C /mnt/
Создайте файл со следующим содержимым загрузочного скрипта:
boot.cmd
part uuid ${devtype} ${devnum}:${bootpart} uuid setenv bootargs console=${console} root=PARTUUID=${uuid} rw rootwait if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}; else bootz ${kernel_addr_r} - ${fdt_addr_r}; fi; fi; fi if load ${devtype} ${devnum}:${bootpart} 0x48000000 /boot/uImage; then if load ${devtype} ${devnum}:${bootpart} 0x43000000 /boot/script.bin; then setenv bootm_boot_mode sec; bootm 0x48000000; fi; fi
Скомпилируйте его и запишите на SD-карту, используя пакет uboot-tools
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi One boot script" -d boot.cmd /mnt/boot/boot.scr # umount /mnt
Скомпилируйте и скопируйте загрузчик U-Boot
Следующим шаг это создание образа загрузки. Убедитесь, что у вас arm-none-eabi-gcc, dtc, git, swig и uboot-tools установлены в вашей системе. Если вы компилируете H3 Orange Pi, отличный от One, замените orangepi_one_config соответственно. Затем клонируйте исходный код u-boot и скомпилируйте образ Orange Pi:
$ git clone git://git.denx.de/u-boot.git $ cd u-boot $ git checkout tags/v2018.07 $ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi- orangepi_one_defconfig $ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi-
Если все прошло нормально, у вас должен быть создан образ U-Boot: u-boot-sunxi-with-spl.bin. Теперь добавьте образ на вашу SD-карту, где /dev/sdX - ваша SD-карта.
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
Использование предварительно скомпилированных бинарных файлов U-Boot
Если вы не можете скомпилировать их на своем компьютере AMD64, просто возьмите их отсюда: https://gitlab.com/vinibali/orangepi_uboot
Используйте ту же команду для размещения ее на SDCard:
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
Логин / SSH
Вход по SSH для пользователя root по умолчанию отключен. Войдите в систему с учетной записью пользователя по умолчанию и используйте su.
Тип | Имя пользователя | Пароль |
---|---|---|
Root |
root
|
root
|
User |
alarm
|
alarm
|
Дополнительный шаг, Wi-Fi Driver (RTL8189ES / ETV)
Этот драйвер потребуется для Orange Pi Plus / Plus 2.
Сначала установите утилиты и заголовки ядра.
# sudo pacman -S base-devel git linux-armv7-headers
Затем соберите драйвер из исходников.
# git clone https://github.com/jwrdegoede/rtl8189ES_linux.git # cd rtl8189ES_linux # make -j4 ARCH=arm KSRC=/usr/lib/modules/4.18.11-1-ARCH/build/
И установить вручную.
# cp 8189es.ko /usr/lib/modules/4.18.11-1-ARCH/kernel/drivers/net/wireless/realtek/ # depmod -a # modprobe 8189es
Orange Pi PC2
Allwinner H5 @ 1.20Ghz 64bit system AArch64
Общая информация об устройстве
Следуйте общей инструкции по установке выше. Отличия:
UBoot
# git clone https://github.com/ARM-software/arm-trusted-firmware.git # git clone git://git.denx.de/u-boot.git # cd arm-trusted-firmware # make CROSS_COMPILE=aarch64-linux-gnu- PLAT=sun50i_a64 DEBUG=1 -j4 bl31 # cp build/sun50i_a64/debug/bl31.bin ../u-boot/ # cd ../u-boot # git checkout v2018.11 # make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j4 orangepi_pc2_defconfig # make ARCH=arm CROSS_COMPILE=aarch64-linux-gnu- -j4 # dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=8k seek=1
Kernel
Для AARCH64 вам понадобится еще один rootfs
# wget https://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz # bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C mnt/
Вам нужно скомпилировать собственное ядро. Загрузите последний основной выпуск с:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
или загрузите этот репозиторий ядра с уже включенными новыми патчами:
git clone https://github.com/megous/linux.git
# cd linux
Вот базовый конфигурационный файл для начала:
# wget https://github.com/armbian/build/raw/master/config/kernel/linux-sunxi-next.config[устаревшая ссылка 2020-08-04] -O .config # make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 # make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/mnt -j4 modules_install # cp arch/arm64/boot/Image /mnt/boot # cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/boot/dtbs/allwinner/sun50i-h5-orangepi-pc2.dtb
измените /mnt/boot/boot.cmd на
boot.cmd
part uuid ${devtype} ${devnum}:${bootpart} uuid setenv bootargs console=${console} root=PARTUUID=${uuid} rw rootwait setenv fdtfile allwinner/sun50i-h5-orangepi-pc2.dtb if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/Image; then if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}; else booti ${kernel_addr_r} - ${fdt_addr_r}; fi; fi; fi
создать образ /mnt/boot/boot.scr для:
# mkimage -C none -A arm64 -T script -d /mnt/boot/boot.cmd /mnt/boot/boot.scr