Orange Pi PC: diferenças entre revisões

De WikiPeida
Ir para a navegação Ir para a procura
Sem resumo de edição
Sem resumo de edição
 
(Há 37 edições intermédias do mesmo utilizador que não estão a ser apresentadas)
Linha 1: Linha 1:
As linhas começadas por # são para correr como root e as $ como user.


== Requisitos ==
== Requisitos ==
Linha 5: Linha 4:
=== Gentoo ===
=== Gentoo ===


<console>
<syntaxhighlight lang="bash">
##r#####!r## crossdev -P -v -t armv7a-hardfloat-linux-gnueabi
crossdev -P -v -t armv7a-hardfloat-linux-gnueabi
##r#####!r## PYTHON=python2 emerge u-boot-tools
PYTHON=python2 emerge u-boot-tools
</console>
</syntaxhighlight>


== Preparar o cartão  ==
== Preparar o cartão  ==
Linha 16: Linha 15:
Escrever zeros no inicio do cartão para ter a certeza que não tem restos de outro bootloader.
Escrever zeros no inicio do cartão para ter a certeza que não tem restos de outro bootloader.


<console>
<syntaxhighlight lang="bash">
##r#####!r## dd if=/dev/zero of=/dev/sdX bs=1M count=8
dd if=/dev/zero of=/dev/sdX bs=1M count=8
</console>
</syntaxhighlight>


== Criar Partição ==  
== Criar Partição ==  
Linha 24: Linha 23:
Criar a partição com o inicio a partir do sector '''4096'''.
Criar a partição com o inicio a partir do sector '''4096'''.


<console>
<syntaxhighlight lang="bash">
##r#####!r## fdisk /dev/sdX
fdisk /dev/sdX
</console>
</syntaxhighlight>


== Filesystem ==
== Filesystem ==
Linha 32: Linha 31:
Criar o filesystem com esta opção hacker que ripei de outro artigo.
Criar o filesystem com esta opção hacker que ripei de outro artigo.


<console>
<syntaxhighlight lang="bash">
##r#####!r## mkfs.ext4 -O ^metadata_csum /dev/sdX1
mkfs.ext4 -O ^metadata_csum /dev/sdX1
</console>
</syntaxhighlight>


== Copiar o Userland ==
== Copiar o Userland ==


<console>
<syntaxhighlight lang="bash">
##r#####!r## mkdir /mnt/opipc
mkdir /mnt/opipc
##r#####!r## mount /dev/sdX1 /mnt/opipc
mount /dev/sdX1 /mnt/opipc
##g##$##!g## mkdir ~/opipc
mkdir ~/opipc
##g##$##!g## cd ~/opipc
cd ~/opipc
</console>
</syntaxhighlight>


=== Gentoo ===
=== Gentoo ===
Linha 49: Linha 48:
Sacar o mais recente de http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/
Sacar o mais recente de http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/


<console>
<syntaxhighlight lang="bash">
##g##$##!g## wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a_hardfp-????????.tar.bz2
wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a_hardfp-????????.tar.bz2
##g##$##!g## tar xfa stage3-armv7a_hardfp-????????.tar.bz2 -C /mnt/opipc
tar xfa stage3-armv7a_hardfp-????????.tar.bz2 -C /mnt/opipc
</console>
</syntaxhighlight>


== fstab ==  
== fstab ==  
Linha 92: Linha 91:
E correr o mkimage para criar o '''boot.scr'''.
E correr o mkimage para criar o '''boot.scr'''.


<console>
<syntaxhighlight lang="bash">
##g##$##!g## cd /mnt/opipc/boot
cd /mnt/opipc/boot
##g##$##!g## mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC boot script" -d boot.cmd /mnt/opipc/boot/boot.scr
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Orange Pi PC boot script" -d boot.cmd boot.scr
</console>
</syntaxhighlight>


== U-Boot ==
== U-Boot ==


<console>
<syntaxhighlight lang="bash">
##g##$##!g## cd ~/opipc
cd ~/opipc
##g##$##!g## git clone git://git.denx.de/u-boot.git -b v2018.01 u-boot
git clone git://git.denx.de/u-boot.git u-boot
##g##$##!g## cd u-boot
cd u-boot
##g##$##!g## make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4 orangepi_pc_defconfig
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4 orangepi_pc_defconfig
##g##$##!g## make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4  
PYTHON=python2 make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4  
</console>
</syntaxhighlight>


E gravar o bootloader no cartão com:
E gravar o bootloader no cartão com:


<console>
<syntaxhighlight lang="bash">
##r#####!r## dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8
</console>
</syntaxhighlight>


== Kernel ==
== Kernel ==


<console>
[[:File:config.txt|kernel config file]]
##g##$##!g## cd ~/opipc


##g##$##!g## git clone https://github.com/linux-sunxi/linux-sunxi.git -b sunxi-next linux
<syntaxhighlight lang="bash">
OU
cd ~/opipc
##g##$##!g## git clone https://github.com/megous/linux -b orange-pi-4.14 linux


##g##$##!g## cd linux
# Já não estou a usar este
##g##$##!g## cp linux-4.14-32 .config
# git clone https://github.com/megous/linux -b orange-pi-4.17 linux
##g##$##!g## make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4
 
##g##$##!g## make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- INSTALL_MOD_PATH=/mnt/opipc  -j4 modules_install
# Passei a usar o mainline
##g##$##!g## cp arch/arm/boot/Image /mnt/opipc/boot
wget https://git.kernel.org/torvalds/t/linux-4.20-rc4.tar.gz
##g##$##!g## cp arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb /mnt/opipc/boot/dtbs/allwinner/sun8i-h3-orangepi-pc.dtb
tar xfv linux-4.20-rc4.tar.gz
##g##$##!g## cp arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb /mnt/opipc/boot/dtbs/sun8i-h3-orangepi-pc.dtb
cd linux-4.20-rc4
</console>
 
# Sacar o config anexado a esta pagina
wget https://wikipeida.deadbsd.org/images/8/81/Config.txt
mv Config.txt .config
 
# menuconfig, se necessario
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- menuconfig
 
# sem modulos
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- zImage dtbs -j4
 
# com modulos
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- zImage dtbs modules -j4
 
cp arch/arm/boot/zImage /mnt/opipc/boot
cp arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb /mnt/opipc/boot/dtbs/sun8i-h3-orangepi-pc.dtb
 
# instalar modulos
# make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- INSTALL_MOD_PATH=~/opipc/root modules_install -j4
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- INSTALL_MOD_PATH=/mnt/opipc modules_install -j4
</syntaxhighlight>
 
== Mali ==
 
Ler primeiro as instruções em [https://github.com/mripard/sunxi-mali sunxi-mali], não esquecer que é necessário activar as opções <code>CONFIG_CMA</code> e <code>CONFIG_DMA_CMA</code> no Kernel.
 
<syntaxhighlight lang="bash">
cd ~/opipc
git clone https://github.com/mripard/sunxi-mali.git || https://github.com/mansr/sunxi-mali.git
cd sunxi-mali
export ARCH=arm
export CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi-
export KDIR=/root/opipc/linux-4.20-rc4
export INSTALL_MOD_PATH=/mnt/opipc
./build.sh -r r6p2 -b
./build.sh -r r6p2 -i
 
# Ignorar por enquanto ...
cd ~/opicp
git clone https://github.com/free-electrons/mali-blobs.git
cd mali-blobs
cp r6p2/arm/fbdev/lib* /mnt/opipc/usr/lib/
</syntaxhighlight>
 
== Cedrus ==
 
Ainda muito experimental (só está no 4.20-rc*), mas ver mais info em [http://linux-sunxi.org/Sunxi-cedrus sunxi-cedrus]. Primeiro ainda vou ter que descobrir como "empacotar" as linux-headers do Kernel para passar para a board sem dramas.


== Finalizar ==
== Finalizar ==


<console>
<syntaxhighlight lang="bash">
##r#####!r## sync
sync
##r#####!r## umount /mnt/opipc
umount /mnt/opipc
##r#####!r## eject /dev/sdX
eject /dev/sdX
</console>
</syntaxhighlight>


== Ligações externas ==
== Ligações externas ==
Linha 143: Linha 186:
* [https://wiki.gentoo.org/wiki/Orange_Pi_PC/Quick_Start Orange Pi PC Quick Start @ GentooWiki]
* [https://wiki.gentoo.org/wiki/Orange_Pi_PC/Quick_Start Orange Pi PC Quick Start @ GentooWiki]


[[Category:Servidores]]
[[Category:SBC]]

Edição atual desde as 21h15min de 7 de março de 2026

Requisitos

Gentoo

crossdev -P -v -t armv7a-hardfloat-linux-gnueabi
PYTHON=python2 emerge u-boot-tools

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

Copiar o Userland

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

Gentoo

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

wget http://distfiles.gentoo.org/releases/arm/autobuilds/current-stage3-armv7a_hardfp/stage3-armv7a_hardfp-????????.tar.bz2
tar xfa stage3-armv7a_hardfp-????????.tar.bz2 -C /mnt/opipc

fstab

Editar o /mnt/opipc/etc/fstab e usar o seguinte, ou então editar conforme necessario (tipo adicionar swap).

<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/opipc/boot/boot.cmd com o seguinte conteudo:

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

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 boot script" -d boot.cmd boot.scr

U-Boot

cd ~/opipc
git clone git://git.denx.de/u-boot.git u-boot
cd u-boot
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4 orangepi_pc_defconfig
PYTHON=python2 make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- -j4

E gravar o bootloader no cartão com:

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

Kernel

kernel config file

cd ~/opipc

# Já não estou a usar este
# git clone https://github.com/megous/linux -b orange-pi-4.17 linux

# Passei a usar o mainline
wget https://git.kernel.org/torvalds/t/linux-4.20-rc4.tar.gz
tar xfv linux-4.20-rc4.tar.gz
cd linux-4.20-rc4

# Sacar o config anexado a esta pagina
wget https://wikipeida.deadbsd.org/images/8/81/Config.txt
mv Config.txt .config

# menuconfig, se necessario
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- menuconfig

# sem modulos
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- zImage dtbs -j4

# com modulos
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- zImage dtbs modules -j4

cp arch/arm/boot/zImage /mnt/opipc/boot
cp arch/arm/boot/dts/sun8i-h3-orangepi-pc.dtb /mnt/opipc/boot/dtbs/sun8i-h3-orangepi-pc.dtb

# instalar modulos
# make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- INSTALL_MOD_PATH=~/opipc/root modules_install -j4
make ARCH=arm CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi- INSTALL_MOD_PATH=/mnt/opipc modules_install -j4

Mali

Ler primeiro as instruções em sunxi-mali, não esquecer que é necessário activar as opções CONFIG_CMA e CONFIG_DMA_CMA no Kernel.

cd ~/opipc
git clone https://github.com/mripard/sunxi-mali.git || https://github.com/mansr/sunxi-mali.git
cd sunxi-mali
export ARCH=arm
export CROSS_COMPILE=armv7a-hardfloat-linux-gnueabi-
export KDIR=/root/opipc/linux-4.20-rc4
export INSTALL_MOD_PATH=/mnt/opipc
./build.sh -r r6p2 -b
./build.sh -r r6p2 -i

# Ignorar por enquanto ...
cd ~/opicp
git clone https://github.com/free-electrons/mali-blobs.git
cd mali-blobs
cp r6p2/arm/fbdev/lib* /mnt/opipc/usr/lib/

Cedrus

Ainda muito experimental (só está no 4.20-rc*), mas ver mais info em sunxi-cedrus. Primeiro ainda vou ter que descobrir como "empacotar" as linux-headers do Kernel para passar para a board sem dramas.

Finalizar

sync
umount /mnt/opipc
eject /dev/sdX

Ligações externas