Orange Pi One Plus: diferenças entre revisões
Saltar para a navegação
Saltar para a pesquisa
(Criou a página com "As linhas começadas por # são para correr como root e as $ como user. == Requisitos == === Gentoo === <console> ##r#####!r## crossdev -P -v -t aarch64-unknown-linux-gnu...") |
Sem resumo de edição |
||
| Linha 1: | Linha 1: | ||
== Requisitos == | == Requisitos == | ||
| Linha 46: | Linha 44: | ||
<console> | <console> | ||
##r#####!r## mkdir /mnt/ | ##r#####!r## mkdir /mnt/opioneplus | ||
##r#####!r## mount /dev/sdX1 /mnt/ | ##r#####!r## mount /dev/sdX1 /mnt/opioneplus | ||
##g##$##!g## mkdir ~/opipc2 | ##g##$##!g## mkdir ~/opipc2 | ||
##g##$##!g## cd ~/opipc2 | ##g##$##!g## cd ~/opipc2 | ||
| Linha 56: | Linha 54: | ||
<console> | <console> | ||
##g##$##!g## wget http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz | ##g##$##!g## wget http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz | ||
##g##$##!g## bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/ | ##g##$##!g## bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/opioneplus | ||
</console> | </console> | ||
| Linha 65: | Linha 63: | ||
<console> | <console> | ||
##g##$##!g## wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-arm64/stage3-arm64-????????.tar.bz2 | ##g##$##!g## wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-arm64/stage3-arm64-????????.tar.bz2 | ||
##g##$##!g## tar xfa stage3-arm64-????????.tar.bz2 -C /mnt/ | ##g##$##!g## tar xfa stage3-arm64-????????.tar.bz2 -C /mnt/opioneplus | ||
</console> | </console> | ||
== fstab == | == fstab == | ||
Editar o '''/mnt/ | Editar o '''/mnt/opioneplus/etc/fstab''' e usar o seguinte. | ||
<pre> | <pre> | ||
| Linha 80: | Linha 78: | ||
== boot.scr == | == boot.scr == | ||
Criar o ficheiro '''/mnt/ | Criar o ficheiro '''/mnt/opioneplus/boot/boot.cmd''' com o seguinte conteúdo: | ||
<pre> | <pre> | ||
| Linha 106: | Linha 104: | ||
<console> | <console> | ||
##g##$##!g## cd /mnt/ | ##g##$##!g## cd /mnt/opioneplus/boot | ||
##g##$##!g## mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC 2 boot script" -d boot.cmd boot.scr | ##g##$##!g## mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC 2 boot script" -d boot.cmd boot.scr | ||
</console> | </console> | ||
| Linha 147: | Linha 145: | ||
##g##$##!g## make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- Image dtbs modules -j4 | ##g##$##!g## make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- Image dtbs modules -j4 | ||
##g##$##!g## make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/mnt/ | ##g##$##!g## make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/mnt/opioneplus modules_install -j4 | ||
##g##$##!g## cp arch/arm64/boot/Image /mnt/ | ##g##$##!g## cp arch/arm64/boot/Image /mnt/opioneplus/boot | ||
##g##$##!g## cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/ | ##g##$##!g## cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opioneplus/boot/dtbs/allwinner | ||
</console> | </console> | ||
| Linha 162: | Linha 160: | ||
##g##$##!g## export CROSS_COMPILE=aarch64-unknown-linux-gnu- | ##g##$##!g## export CROSS_COMPILE=aarch64-unknown-linux-gnu- | ||
##g##$##!g## export KDIR=/root/opipc2/linux | ##g##$##!g## export KDIR=/root/opipc2/linux | ||
##g##$##!g## export INSTALL_MOD_PATH=/mnt/ | ##g##$##!g## export INSTALL_MOD_PATH=/mnt/opioneplus | ||
##g##$##!g## ./build.sh -r r6p2 -b | ##g##$##!g## ./build.sh -r r6p2 -b | ||
##g##$##!g## ./build.sh -r r6p2 -i | ##g##$##!g## ./build.sh -r r6p2 -i | ||
| Linha 169: | Linha 167: | ||
##g##$##!g## git clone https://github.com/free-electrons/mali-blobs.git | ##g##$##!g## git clone https://github.com/free-electrons/mali-blobs.git | ||
##g##$##!g## cd mali-blobs | ##g##$##!g## cd mali-blobs | ||
##g##$##!g## cp r6p2/arm64/fbdev/lib* /mnt/ | ##g##$##!g## cp r6p2/arm64/fbdev/lib* /mnt/opioneplus/usr/lib/ | ||
</console> | </console> | ||
| Linha 176: | Linha 174: | ||
<console> | <console> | ||
##r#####!r## sync | ##r#####!r## sync | ||
##r#####!r## umount /mnt/ | ##r#####!r## umount /mnt/opioneplus | ||
##r#####!r## eject /dev/sdX | ##r#####!r## eject /dev/sdX | ||
</console> | </console> | ||
Revisão das 02h53min de 12 de janeiro de 2019
Requisitos
Gentoo
# crossdev -P -v -t aarch64-unknown-linux-gnu # PYTHON=python2 emerge u-boot-tools
ArchLinux
# pacman -S uboot-tools aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc aarch64-linux-gnu-linux-api-headers
Preparar o cartão
Limpar
Escrever zeros no inicio do cartão para ter a certeza que não tem restos de outro bootloader.
# dd if=/dev/zero of=/dev/sdX bs=1M count=8
Criar Partição
Criar a partição com o inicio a partir do sector 4096.
# fdisk /dev/sdX
Filesystem
Criar o filesystem com esta opção hacker que ripei de outro artigo.
# mkfs.ext4 -O ^metadata_csum /dev/sdX1 # mkswap /dev/sdX2
Copiar o Userland
# mkdir /mnt/opioneplus # mount /dev/sdX1 /mnt/opioneplus $ mkdir ~/opipc2 $ cd ~/opipc2
ArchLinux
$ wget http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz $ bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/opioneplus
Gentoo
Sacar o mais recente de http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-arm64/
$ wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-arm64/stage3-arm64-????????.tar.bz2 $ tar xfa stage3-arm64-????????.tar.bz2 -C /mnt/opioneplus
fstab
Editar o /mnt/opioneplus/etc/fstab e usar o seguinte.
<file system> <dir> <type> <options> <dump> <pass> /dev/mmcblk0p1 / ext4 defaults,noatime 0 1 /dev/mmcblk0p2 none swap defaults 0 0
boot.scr
Criar o ficheiro /mnt/opioneplus/boot/boot.cmd com o seguinte conteúdo:
part uuid ${devtype} ${devnum}:${bootpart} uuid
#setenv console tty0
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
# Generate with:
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC 2 boot script" -d boot.cmd boot.scr
E correr o mkimage para criar o boot.scr.
$ cd /mnt/opioneplus/boot $ mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC 2 boot script" -d boot.cmd boot.scr
ARM Trusted Firmware
$ cd ~/opipc2 $ git clone https://github.com/apritzel/arm-trusted-firmware -b allwinner arm-trusted-firmware $ cd arm-trusted-firmware $ make CROSS_COMPILE=aarch64-unknown-linux-gnu- PLAT=sun50iw1p1 DEBUG=1 bl31 $ cp build/sun50iw1p1/debug/bl31.bin ../u-boot/
U-Boot
$ cd ~/opipc2 $ git clone git://git.denx.de/u-boot.git -b v2018.05 u-boot $ cd u-boot $ make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 orangepi_pc2_defconfig $ make ARCH=arm CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4 $ cat spl/sunxi-spl.bin u-boot.itb > u-boot-sunxi-with-spl.bin
E gravar o bootloader no cartão com:
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=8k seek=1
Kernel
$ cd ~/opipc2 $ git clone https://github.com/megous/linux -b orange-pi-4.17 linux $ cd linux $ cp linux-4.17-64 .config $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- Image dtbs -j4 $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- Image dtbs modules -j4 $ make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/mnt/opioneplus modules_install -j4 $ cp arch/arm64/boot/Image /mnt/opioneplus/boot $ cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opioneplus/boot/dtbs/allwinner
MALI
$ cd ~/opipc2 $ git clone https://github.com/mripard/sunxi-mali.git $ cd sunxi-mali $ export ARCH=arm64 $ export CROSS_COMPILE=aarch64-unknown-linux-gnu- $ export KDIR=/root/opipc2/linux $ export INSTALL_MOD_PATH=/mnt/opioneplus $ ./build.sh -r r6p2 -b $ ./build.sh -r r6p2 -i $ cd ~/opicp2 $ git clone https://github.com/free-electrons/mali-blobs.git $ cd mali-blobs $ cp r6p2/arm64/fbdev/lib* /mnt/opioneplus/usr/lib/
Finalizar
# sync # umount /mnt/opioneplus # eject /dev/sdX
Patches HDMI
Tentar este libMali.so https://github.com/rockchip-linux/libmali/blob/29mirror/lib/aarch64-linux-gnu/libmali-utgard-450-r7p0-x11-fbdev.so
Adicionar mali ao DTS Ficheiro:Mali-dts-h5.patch