Orange Pi One Plus: diferenças entre revisões

Fonte: WikiPeida
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:
As linhas começadas por # são para correr como root e as $ como user.
== Requisitos ==
== Requisitos ==


Linha 46: Linha 44:


<console>
<console>
##r#####!r## mkdir /mnt/opipc2
##r#####!r## mkdir /mnt/opioneplus
##r#####!r## mount /dev/sdX1 /mnt/opipc2
##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/opipc2
##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/opipc2
##g##$##!g## tar xfa stage3-arm64-????????.tar.bz2 -C /mnt/opioneplus
</console>
</console>


== fstab ==  
== fstab ==  


Editar o '''/mnt/opipc2/etc/fstab''' e usar o seguinte.
Editar o '''/mnt/opioneplus/etc/fstab''' e usar o seguinte.


<pre>
<pre>
Linha 80: Linha 78:
== boot.scr ==
== boot.scr ==


Criar o ficheiro '''/mnt/opipc2/boot/boot.cmd''' com o seguinte conteúdo:
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/opipc2/boot
##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/opipc2 modules_install -j4
##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/opipc2/boot
##g##$##!g## cp arch/arm64/boot/Image /mnt/opioneplus/boot
##g##$##!g## cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opipc2/boot/dtbs/allwinner
##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/opipc2
##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/opipc2/usr/lib/
##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/opipc2
##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

Ligações externas