Skip to content

Instantly share code, notes, and snippets.

@osnipezzini
Forked from tavinus/debootstrap-autosystem.md
Created December 17, 2019 11:18
Show Gist options
  • Save osnipezzini/1da024d6fb2ffc7c2e0e954b2a17ffa1 to your computer and use it in GitHub Desktop.
Save osnipezzini/1da024d6fb2ffc7c2e0e954b2a17ffa1 to your computer and use it in GitHub Desktop.
Rodar Autosystem em AMD64 e ARM

Para rodar o Autosystem em sistemas não suportados.
Exemplos: Linux 64 bits, Raspberry Pi.

debootstrap em AMD64

Testado em

  • Linux Mint 18.3 x86_64

1 - Máquina Hospedeira 64 bits

Pegar pacotes

sudo apt update
sudo apt install debootstrap schroot

Criar config do schroot

sudo editor /etc/schroot/chroot.d/jessie_i386.conf

Exemplo (edite os dois campos de usuário onde tem tavinus)

[jessie_i386]
description=Debian Jessie for i386
directory=/srv/chroot/jessie_i386
personality=linux32
root-users=tavinus
#run-setup-scripts=true
#run-exec-scripts=true
type=directory
users=tavinus

Criar diretório do sistema auxiliar

sudo mkdir -p /srv/chroot/jessie_i386

Rodar debootstrap para Debian Jessie i386

sudo debootstrap --arch i386 jessie /srv/chroot/jessie_i386 http://ftp.br.debian.org/debian/

Listar ambientes schroot

schroot -l

Abrir um terminal no Debian i386

xhost +SI:localuser:root # preparar o X pra rodar o AS mais tarde
schroot -c jessie_i386 -u root

2 - Instalar AS no jessie_i386 do chroot

Configurar Locales

apt update
apt install locales
dpkg-reconfigure locales

Eu selecionei en_US e pt_BR, ambos com UTF-8 e ISO-8859-1 e depois pt_BR.UTF-8 como padrão.

Reconfigurar timezone

dpkg-reconfigure tzdata

Pacotes para preparar o environment

O cups pode pedir a senha do root neste passo, dê ENTER (vazio).

apt install rsync ssh openssh-client openssh-server git curl wget cups-common cups cups-bsd printer-driver-cups-pdf lsb-release libcanberra-gtk-module

Rodar o instalador as_deb_install.sh

export DISPLAY=:0     # Para mandar os programas do AS pro X Server
cd $HOME
wget -O as_deb_install.sh https://gist.githubusercontent.com/tavinus/146bdce3695cae9cfec02b534c2ff30f/raw/
chmod +x as_deb_install.sh
./as_deb_install.sh

Em teoria vai correr tudo normalmente até o final.

Configurar defaults da fstab do debootstrap

Com essa config o Autosystem imprime do ambiente chroot.
Provavelmente é melhor flexibilizar as pastas montadas no ambiente chroot depois de instalar o autosystem e fazer os updates do chroot pois ao montar as pastas adicionais o ambiente chroot acaba interferindo mais no ambiente host 64 bits.

Por exemplo, o autosystem pede o cups que vai instalar e modificar aquivos nas pastas montadas do sistema host. É preferível montar a pasta host por cima da original da instalação (de fato o comando mount exige que o destino exista de qualquer forma).

Editar o arquivo padrao

sudo nano /etc/schroot/default/fstab

Adicione ao final

/etc/printcap   /etc/printcap   none    rw,bind         0       0
/run/cups       /run/cups       none    rw,bind         0       0

Exemplo de uma config completa, com pastas adicionais também habilitadas

# fstab: static file system information for chroots.
# Note that the mount point will be prefixed by the chroot path
# (CHROOT_PATH)
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/proc           /proc           none    rw,bind         0       0
/sys            /sys            none    rw,bind         0       0
/dev            /dev            none    rw,bind         0       0
/dev/pts        /dev/pts        none    rw,bind         0       0
/home           /home           none    rw,bind         0       0
/tmp            /tmp            none    rw,bind         0       0

# It may be desirable to have access to /run, especially if you wish
# to run additional services in the chroot.  However, note that this
# may potentially cause undesirable behaviour on upgrades, such as
# killing services on the host.
/run           /run            none    rw,bind         0       0
/run/lock      /run/lock       none    rw,bind         0       0
/dev/shm       /dev/shm        none    rw,bind         0       0
/run/shm       /run/shm        none    rw,bind         0       0

# Extending cups support
# Agora imprime do autosystem
/etc/printcap   /etc/printcap   none    rw,bind         0       0
/run/cups       /run/cups       none    rw,bind         0       0

qemu-debootstrap em ARM

Raspberry Pi Raspbian

Testado em

  • Raspbian GNU/Linux 9 (stretch)

1 - Máquina Hospedeira ARM

Pegar pacotes

sudo apt update
sudo apt-get install binfmt-support qemu qemu-user-static debootstrap

Criar config do schroot

sudo editor /etc/schroot/chroot.d/jessie_i386.conf

Exemplo config

[jessie_i386]
description=Debian Jessie for i386
directory=/srv/chroot/jessie_i386
personality=linux32
root-users=pi
#run-setup-scripts=true
#run-exec-scripts=true
type=directory
users=pi

Criar diretório do sistema auxiliar

sudo mkdir -p /srv/chroot/jessie_i386

Rodar qemu-debootstrap para Debian Jessie i386

sudo qemu-debootstrap --arch i386 jessie /srv/chroot/jessie_i386 http://deb.debian.org/debian/

Listar schroot

schroot -l

Abrir um terminal no Debian i386

xhost +SI:localuser:root # preparar o X pra rodar o AS mais tarde
schroot -c jessie_i386 -u root

2 - Instalar AS no jessie_i386 do chroot

Configurar Locales

apt update
apt install locales
dpkg-reconfigure locales

Eu selecionei en_US e pt_BR, ambos com UTF-8 e ISO-8859-1 e depois pt_BR.UTF-8 como padrão.

Reconfigurar timezone

dpkg-reconfigure tzdata

Pacotes para preparar o environment

O cups vai pedir a senha do root neste passo, dê ENTER (vazio).

apt install rsync ssh openssh-client openssh-server git curl wget cups-common cups cups-bsd printer-driver-cups-pdf lsb-release libcanberra-gtk-module

Rodar o instalador as_deb_install.sh

export DISPLAY=:0     # Para mandar os programas do AS pro X Server
cd $HOME
wget -O as_deb_install.sh https://gist.githubusercontent.com/tavinus/146bdce3695cae9cfec02b534c2ff30f/raw/
chmod +x as_deb_install.sh
./as_deb_install.sh

Em teoria vai correr tudo normalmente até o final.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment