Raspberry Pi - Instalando Funtoo Linux a partir do stage3 oficial

De Área31 Hackerspace
Revisão de 00h14min de 2 de fevereiro de 2019 por Coffnix (discussão | contribs)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Instalação

Instalando Funtoo Linux em Raspberry Pi a partir do stage3 oficial

Recomendamos que todo o processo seja realizado no disco local, e apenas no final seja copiado para o SD Card em si. Por questões de praticidade e desempenho. ;)

Obtenha o stage3 oficial do Funtoo Linux compilado para ARM

# wget http://ftp.osuosl.org/pub/funtoo/funtoo-current/arm-32bit/armv6j_hardfp/stage3-latest.tar.xz

Particione o SDcard

Device                      Boot   Start          End               Sectors          Size   Id     Type
/dev/mmcblk0p1 *          32              194559       194528         95M   b      W95 FAT32
/dev/mmcblk0p2             194560     1193983     999424       488M  82  Linux swap / Solaris
/dev/mmcblk0p3             1193984  31268863  30074880   14.3G 83  Linux

Dica:

/dev/mmcblk0p1 equivale a /dev/sda1

/dev/mmcblk1p3 equivale a /dev/sdb3

/dev/mmcblk2p2 equivale a /dev/sdc2


Formate as partições

# mkfs.vfat /dev/mmcblk0p1
# mkswap /dev/mmcblk0p2
# mkfs.ext4 /dev/mmcblk0p3

Monte as partições

# mkdir -p /tmp/funtoo-raspberrypi
# mount /dev/mmcblk0p3 /tmp/funtoo-raspberrypi
# mkdir -p /tmp/funtoo-raspberrypi/boot
# mount /dev/mmcblk0p1 /tmp/funtoo-raspberrypi/boot

Descompacte o stage 3 oficial

# tar xavpf stage3-armv6j_hardfp-funtoo-current-*.tar.xz -C /tmp/funtoo-raspberrypi


Obtenha o firmware e a imagem do kernel oficial raspberry pi

Instale o Kernel Linux e os modulos

A Fundação Raspberry Pi mantém uma árvore do kernel do Linux que pode ser executado no Raspberry Pi (hardware), incluindo uma versão pré-compilada que usamos aqui. siga os passos abaixo:

# cd /tmp/
# git clone --depth 1 git://github.com/raspberrypi/firmware/
# cp -r firmware/boot/* /tmp/funtoo-raspberrypi/boot
# cp -r firmware/modules /tmp/funtoo-raspberrypi/lib

Edite o /etc/fstab

Configure o seu de forma parecida. Respeitando o seu esquema de particionamento e o(s) sistema(s) de arquivo(s) utilizado(s).

# vi /tmp/funtoo-raspberrypi/etc/fstab
/dev/mmcblk0p1        /boot	     vfat		noauto,noatime	    1 2
/dev/mmcblk0p2        none         swap         sw                               0 0
/dev/mmcblk0p3	  /		     ext4		nobarrier,noatime  0 1


Crie o arquivo cmdline.txt

Crie a linha com os parâmetros de boot do kernel

# vi /tmp/funtoo-raspberrypi/boot/cmdline.txt

Com o seguinte conteúdo:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait


Crie o arquivo config.txt

Crie a linha com os parâmetros de boot do kernel

# vi /tmp/funtoo-raspberrypi/boot/config.txt
kernel=kernel.img
disable_overscan=0
config_hdmi_boost=4
hdmi_force_hotplug=1
#hdmi_group=2
#hdmi_mode=48
hdmi_drive=2
hdmi_ignore_cec=1

force_turbo=0

arm_freq=900
core_freq=333
sdram_freq=450
over_voltage=2

Desative o console s0

Comente a linha do console s0 (serial) para correção da mensagem no dmesg: "INIT: Id "s0" respawning too fast".

# vi /tmp/funtoo-raspberrypi/etc/inittab
# SERIAL CONSOLES
 #s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
 #s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100


Configure o timezone

Ative o timezone atual:

# cp /tmp/funtoo-raspberrypi/usr/share/zoneinfo/America/Sao_Paulo /tmp/funtoo-raspberrypi/etc/localtime

ou:

# echo "America/Sao_Paulo" > /tmp/funtoo-raspberrypi/etc/timezone


Ative acesso de root sem senha

# vi /tmp/funtoo-raspberrypi/etc/shadow

Remova o asterisco, e deixe dessa forma a linha referente ao usuário root:

root::10770:0:::::

Ou crie uma senha de root (opcional)

Em primeiro lugar, gere um hash de senha. A saída deste comando será usado para modificar o arquivo /etc/shadow.
# openssl passwd -1

ou

# python -c "import crypt, getpass, pwd; print crypt.crypt('password', '\$6\$SALTsalt\$')"

Adicione o hash em SUA_PASSWORD_MD5

# vi /tmp/funtoo-raspberrypi/shadow
root:SUA_PASSWORD_MD5:14698:0:::::


Configure a rede (opcional)

Configure seguindo a documentação oficial Funtoo:

https://www.funtoo.org/wiki/Funtoo_Linux_Networking


Desative o controle da eth0 pelo NetworkManager

Caso deseje, desative o controle da eth0 pelo NetworkManager, para que só seja gerenciada a interface wifi:

# echo -e '[keyfile]\nunmanaged-devices=interface-name:eth*,except:interface-name:eth0'[keyfile] >> /etc/NetworkManager/NetworkManager.conf


Copie os arquivos para o SD Card

Monte o SD Card:

# mkdir -p /mnt/sdcard
# mount /dev/mmcblk0p3 /mnt/sdcard
# mount /dev/mmcblk0p1 /mnt/sdcard/boot

Sincronize os arquivos para o cartão:

# rsync -avzh /tmp/funtoo-raspberrypi/ /mnt/sdcard/

Desmonte e remova o cartão:

# sync && umount /mnt/sdcard/boot /mnt/sdcard


Pós boot

Configure o relógio

Desative o hwclock e ative o swclock:

The Raspberry Pi does not have a hardware clock, so you need to disable the hwclock daemon and enable swclock.

# rc-update add swclock boot
# rc-update del hwclock boot


Compile algumas ferramentas importantes

Ferramentas do SoC

Crontab

# emerge sys-process/vixie-cron

Adicione ao boot:

# rc-update add vixie-cron && /etc/init.d/vixie-cron start

Atualização automática de data e hora

# emerge net-misc/ntp

Adicione a rotina de atualiação de hora ao crontab:

# echo '*/2 00 * * * root sntp -s  a.st1.ntp.br b.st1.ntp.br c.st1.ntp.br d.st1.ntp.br a.ntp.br b.ntp.br c.ntp.br gps.ntp.br > /dev/null' >> /etc/crontab


cpufrequtils

Compile o cpufrequtils para gerenciar a frequencia da CPU

# emerge --ask cpufrequtils

Adicione ao boot:

# rc-update add cpufrequtils default

Configure o arquivo /etc/conf.d/cpufrequtils:

START_OPTS="--governor ondemand"
STOP_OPTS="--governor performance"

Confirme se está corretamente configurado:

# cpufreq-info


Compilação de kernel (opcional)

Kankin-kernel-3.11.6.png

Nosso kernel tem suporte aos mais populares hardwares do mercado, porém se você acha necessário recompilar ou adicionar suporte a algum hardware, ou mesmo modificar o código ao seu bel prazer, obtenha o código fonte do nosso kernel oficial compactado (linux-rpi-*.tar.bz2) e o arquivo de configuração (config-linux-rpi-*):

https://sourceforge.net/projects/kankin/files/arm-v6/raspberry-pi/sources/kernel-rpi/3.11.6-area31-hackerspace/

Descompacte o kernel oficial após o download:

# mkdir -p /usr/src && tar xjvpf linux-rpi-3.11.y.tar.bz2 -C /usr/src
# mv config-linux-rpi-3.11.y /usr/src/linux-rpi-3.11.y/.config

Crie o link simbólico:

# cd /usr/src && ln -s linux-rpi-3.11.y linux

Acesse o diretório do kernel e edite suas preferências:

# cd /usr/src/linux && make oldconfig && make menuconfig

Saia salvando, e compile o kernel:

# make

Instale o kernel e os modulos:

# mount /boot && make install && make modules_install

Edite o arquivo de configuração de boot caso seja necessário, e altere a flag kernel= do arquivo:

# vi /boot/config.txt


Atualize para uma versão específica do kernel (opcional)

Para atualizar para um ramo em específico da árvore do kernel do projeto oficial do raspberry pi:

# cd /opt
# git clone --branch rpi-3.11.y  git://github.com/raspberrypi/linux.git
# ego sync

Seja feliz! :D

Qualquer dúvida, nos procure no IRC ou na lista de discussão.