Orange Pi PC: diferenças entre revisões
Sem resumo de edição |
|||
| (Há 36 edições intermédias do mesmo utilizador que não estão a ser apresentadas) | |||
| Linha 1: | Linha 1: | ||
== Requisitos == | == Requisitos == | ||
| Linha 5: | Linha 4: | ||
=== Gentoo === | === Gentoo === | ||
< | <syntaxhighlight lang="bash"> | ||
crossdev -P -v -t armv7a-hardfloat-linux-gnueabi | |||
PYTHON=python2 emerge u-boot-tools | |||
</ | </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. | ||
< | <syntaxhighlight lang="bash"> | ||
dd if=/dev/zero of=/dev/sdX bs=1M count=8 | |||
</ | </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'''. | ||
< | <syntaxhighlight lang="bash"> | ||
fdisk /dev/sdX | |||
</ | </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. | ||
< | <syntaxhighlight lang="bash"> | ||
mkfs.ext4 -O ^metadata_csum /dev/sdX1 | |||
</ | </syntaxhighlight> | ||
== Copiar o Userland == | == Copiar o Userland == | ||
< | <syntaxhighlight lang="bash"> | ||
mkdir /mnt/opipc | |||
mount /dev/sdX1 /mnt/opipc | |||
mkdir ~/opipc | |||
cd ~/opipc | |||
</ | </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/ | ||
< | <syntaxhighlight lang="bash"> | ||
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 | |||
</ | </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'''. | ||
< | <syntaxhighlight lang="bash"> | ||
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 | |||
</ | </syntaxhighlight> | ||
== U-Boot == | == U-Boot == | ||
< | <syntaxhighlight lang="bash"> | ||
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 | |||
</ | </syntaxhighlight> | ||
E gravar o bootloader no cartão com: | E gravar o bootloader no cartão com: | ||
< | <syntaxhighlight lang="bash"> | ||
dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8 | |||
</ | </syntaxhighlight> | ||
== Kernel == | == Kernel == | ||
[[:File:config.txt|kernel config file]] | |||
<syntaxhighlight lang="bash"> | |||
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 | |||
</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 == | ||
< | <syntaxhighlight lang="bash"> | ||
sync | |||
umount /mnt/opipc | |||
eject /dev/sdX | |||
</ | </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: | [[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
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