Orange Pi PC 2: diferenças entre revisões

De WikiPeida
Ir para a navegação Ir para a procura
Sem resumo de edição
Linha 16: Linha 16:


== Preparar o cartão  ==
== Preparar o cartão  ==
== Limpar cartão ==
<syntaxhighlight lang="shell">
sudo dd if=/dev/zero of=/dev/sdX bs=1M count=8
</syntaxhighlight>
== Criar Partição ==
Criar a partição com o inicio a partir do sector '''4096'''.


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
dd if=/dev/zero of=/dev/sdX bs=1M count=8
sudo fdisk /dev/sdX
fdisk /dev/sdX # '''Começar em 4096'''
</syntaxhighlight>
mkfs.ext4 -O ^metadata_csum /dev/sdX1
 
== Filesystem ==
 
<syntaxhighlight lang="shell">
sudo mkfs.ext4 -O ^metadata_csum /dev/sdX1
</syntaxhighlight>
</syntaxhighlight>


Linha 26: Linha 40:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
mount /dev/sdX1 /mnt/opipc
sudo mkdir /mnt/opipc
mkdir /root/opipc
sudo mount /dev/sdX1 /mnt/opipc
cd /root/opipc
mkdir ~/opipc
cd ~/opipc
</syntaxhighlight>
</syntaxhighlight>


Linha 78: Linha 93:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
cd ~/opipc
git clone https://github.com/armbian/build.git armbian
git clone https://github.com/armbian/build.git armbian
git clone git://git.denx.de/u-boot.git -b v2017.07 u-boot
git clone git://git.denx.de/u-boot.git -b v2017.07 u-boot
Linha 87: Linha 103:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
cd ~/opipc
cd arm-trusted-firmware-sunxi-main
cd arm-trusted-firmware-sunxi-main
make CROSS_COMPILE=aarch64-unknown-linux-gnu- PLAT=sun50iw1p1 DEBUG=1 bl31
make CROSS_COMPILE=aarch64-unknown-linux-gnu- PLAT=sun50iw1p1 DEBUG=1 bl31
Linha 95: Linha 112:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
cd ~/opipc
cd 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 orangepi_pc2_defconfig
Linha 104: Linha 122:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=8k seek=1
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=8k seek=1
</syntaxhighlight>
</syntaxhighlight>


Linha 110: Linha 128:


<syntaxhighlight lang="shell">
<syntaxhighlight lang="shell">
cd ~/opipc
cd linux-sun50i-dev
cd linux-sun50i-dev
cp ../armbian/config/kernel/linux-sun50i-dev.config .config
cp ../armbian/config/kernel/linux-sun50i-dev.config .config
Linha 120: Linha 139:
cp arch/arm64/boot/Image /mnt/opipc/boot
cp arch/arm64/boot/Image /mnt/opipc/boot
cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opipc/boot/dtbs/allwinner/sun50i-h5-orangepi-pc2.dtb
cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opipc/boot/dtbs/allwinner/sun50i-h5-orangepi-pc2.dtb
</syntaxhighlight>
== Finalizar ==
<syntaxhighlight lang="shell">
sudo sync
sudo umount /mnt/opipc
sudo eject /dev/sdX
</syntaxhighlight>
</syntaxhighlight>

Revisão das 20h01min de 12 de setembro de 2017

Requisitos

Gentoo

crossdev -t aarch64-unknown-linux-gnu --g 7.2.0 -v
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 cartão

sudo 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.

sudo fdisk /dev/sdX

Filesystem

sudo mkfs.ext4 -O ^metadata_csum /dev/sdX1

Copiar o Userland

sudo mkdir /mnt/opipc
sudo mount /dev/sdX1 /mnt/opipc
mkdir ~/opipc
cd ~/opipc

ArchLinux

wget http://archlinuxarm.org/os/ArchLinuxARM-aarch64-latest.tar.gz
bsdtar -xpf ArchLinuxARM-aarch64-latest.tar.gz -C /mnt/opipc

Gentoo

Sacar o mais recente de http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-arm64/

tar xfa stage3-armv7a_hardfp-????????.tar.bz2 -C /mnt/opipc

boot.scr

Criar o ficheiro /mnt/opipc/boot/boot.cmd com o seguinte conteudo:

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

E correr o mkimage para criar o boot.scr.

cd /mnt/opipc/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

Sources

Sacar o source de tudo necessario para bootar, o Armbian é usado para ripar o config do kernel e os patches adicionais.

cd ~/opipc
git clone https://github.com/armbian/build.git armbian
git clone git://git.denx.de/u-boot.git -b v2017.07 u-boot
git clone https://github.com/apritzel/arm-trusted-firmware -b allwinner-stable arm-trusted-firmware-sunxi-main
git clone https://github.com/Icenowy/linux/ -b sunxi64-4.13.y linux-sun50i-dev

ARM Trusted Firmware

cd ~/opipc
cd arm-trusted-firmware-sunxi-main
make CROSS_COMPILE=aarch64-unknown-linux-gnu- PLAT=sun50iw1p1 DEBUG=1 bl31
cp build/sun50iw1p1/debug/bl31.bin ../u-boot/

U-Boot

cd ~/opipc
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:

sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=8k seek=1

Kernel

cd ~/opipc
cd linux-sun50i-dev
cp ../armbian/config/kernel/linux-sun50i-dev.config .config

#for i in ../armbian/patch/kernel/sun50i-dev/*.patch; do patch -p1 < $i; done
#for i in ../armbian/patch/kernel/sun50i-dev/scpi/*.patch; do patch -p1 < $i; done

make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- -j4
make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- INSTALL_MOD_PATH=/mnt/opipc  -j4 modules_install
cp arch/arm64/boot/Image /mnt/opipc/boot
cp arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dtb /mnt/opipc/boot/dtbs/allwinner/sun50i-h5-orangepi-pc2.dtb


Finalizar

sudo sync
sudo umount /mnt/opipc
sudo eject /dev/sdX