Difference between revisions of "Install from existing Linux (Português)"

From ArchWiki
Jump to: navigation, search
m (Método 2: Bootstrapping os scripts de instalação(arch install scripts))
m (Método 2: Bootstrapping dos scripts de instalação(arch install scripts))
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:Getting and installing Arch]]
+
[[Category:Getting and installing Arch (Português)]]
 
[[en:Install from Existing Linux]]
 
[[en:Install from Existing Linux]]
 
[[de:Schnellinstallation von einem bestehenden Linuxsystem]]
 
[[de:Schnellinstallation von einem bestehenden Linuxsystem]]
Line 84: Line 84:
 
Este método pode ser considerado um híbrido entre os métodos 1 e 2. Provê um ambiente de chroot onde os scripts de instalação serão executados(similar ao método 2), utilizando o script de bootstrapping(similar ao método 1).
 
Este método pode ser considerado um híbrido entre os métodos 1 e 2. Provê um ambiente de chroot onde os scripts de instalação serão executados(similar ao método 2), utilizando o script de bootstrapping(similar ao método 1).
  
O arcipt abaixo criará um diretório chamado {{ic|archinstall-pkg}} e efetuará o download dos pacotes necessários lá. Então os extrairá para dentro do diretório {{ic|archinstall-chroot}}. Finalmente, irá preparar os pontos de montagem, configrará o pacman e entrará no chroot
+
O script abaixo criará um diretório chamado {{ic|archinstall-pkg}} e efetuará o download dos pacotes necessários lá. Então os extrairá para dentro do diretório {{ic|archinstall-chroot}}. Finalmente, irá preparar os pontos de montagem, configrará o pacman e entrará no chroot
{{Note|This is '''only''' an enviroment to execute the arch install scripts: '''this is not your final installation'''. }}
+
{{Nota|Este é '''apenas''' um ambiente para executar os arch install scripts: '''esta não é sua instalação final'''.}}
  
This chroot is able to execute the arch install scripts. '''The destination partitions should be mounted under the {{ic|/mnt}} directory from this chroot'''. After that, continue with the next step, which is [[#Fix the Pacman Signature Keyring]].
+
Este chroot é capaz de executar os arch install scripts. '''As partições destino deve estar montadas abaixo do diretório {{ic|/mnt}} para este chroot'''. Após esta configuração, vá para o próximo passo que é [[#Corrigindo problemas de chaves de assinatura]].
  
 
{{hc|archinstall-bootstrap.sh|<nowiki>
 
{{hc|archinstall-bootstrap.sh|<nowiki>
Line 173: Line 173:
 
Another option is using the {{ic|alien}} tool to convert the {{ic|pacman-mirrorlist}} and {{ic|arch-install-scripts}} (but no {{ic|pacman}}) to native packages of your distro.
 
Another option is using the {{ic|alien}} tool to convert the {{ic|pacman-mirrorlist}} and {{ic|arch-install-scripts}} (but no {{ic|pacman}}) to native packages of your distro.
  
==Fix the Pacman Signature Keyring==
+
==Corrigindo problemas de chaves de assinatura==
  
 
It is necessary to initialize ''pacman's'' keyring for signature checking.
 
It is necessary to initialize ''pacman's'' keyring for signature checking.
Line 190: Line 190:
 
It might take some time. If nevertheless all this does help install {{Pkg|haveged}} and run prior to {{ic|pacman-key --init}}
 
It might take some time. If nevertheless all this does help install {{Pkg|haveged}} and run prior to {{ic|pacman-key --init}}
 
  # /usr/sbin/haveged -w 1024 -v 1
 
  # /usr/sbin/haveged -w 1024 -v 1
 
  
 
==Setup the target system==
 
==Setup the target system==

Revision as of 10:15, 6 February 2013

Este guia é direcionado a qualquer um que deseja instalar o Arch Linux em outro Linux já existente - - seja através de um LiveCD ou de uma distribuição Linux diferente já existente.

É util para quem deseja:

Este guia tem como pré-requisito a existência de um ambiente capaz de executar os programas compilados para a arquitetura escolhida no Arch Linux. Neste caso, um host x86_64 é capaz de utilizar o i686-pacman para construir um ambiente de chroot de 32-bits. Veja Arch64 Install bundled 32bit system. Contudo, não é algo trivial criar um ambiente 64-bit quando o host em execução está utilizando programas 32-bit.

Nota: Se você já está utilizando o Arch, ao invés de seguir este guia apenas instale o pacote arch-install-scripts dos repositórios oficiais e siga o Guia de Instalação

Este guia adiciona passos ao Guia de Instalação. Os passos já descridos no guia de instalação devem ser seguidos sempre que necessários.

Preparar o sistema

Siga as instruções no Guia de Instalação até que você tenha ajustado partições, teclado e conexão com a internet.

Configurar o ambiente do Pacman

Você precisa criar um ambiente onde o pacman e os arch istall scripts possam rodar em sua distribuição.(Se você escolher o método 1, apenas o pacman será necessário)

A princípio, existem dois métodos diferentes de preparar o ambiente: instalando o pacman nativamente (método 4 abaixo) em sua distribuição ou criando um ambiente de chroot. A segunda opção tende a ser a mais fácil, e será discutida em seguida:

Duas são as formas possíveis de se utilizar o método do chroot:

  • Utilizando o chroot como um ambiente de instalação: O ambiente de chroot Archlinux preparado será utilizado temporariamente para criar a instalação do Archlinux através do arch-install-scripts. O trabalho inicial pode ser mais demorado, porém, quando o ambiente estiver pronto, vários sistemas Archlinux podem ser criados com uma facilidade e rapidez imensa. Se você deseja fazer uma instalação única, este método pode parecer desperdício. Você configurará duas vezes o mesmo sistema, terá um grande tráfego de rede e utilizara muito mais RAM, por conta deste processo.
  • Instalar o Archlinux diretamente/Bootstrapping direto: Graças ao script arch-bootstrap criado por tokland, este método é eficiente e muito rápido. Após uma simples linha de código, o sistema base inteiro do Archlinux estará instalado no disco. Contudo, se você deseja instalar o Archlinux em diversas máquinas este método será mais demorado, pois requer o re-download de todos os pacotes a cada nova instalação.

A melhor aplicação do Bootstrapping direto é em uma rede com um número reduzido de sistemas. Se você pretende instalar o Archlinux em muitos sistemas, a instalação via ambiente chroot ou mesmo o pacman nativo pode ser muito mais vantajoso.

Método 1: Chroot em uma imagem LiveCD

Este é o método recomendado.

É possível montar a imagem da ultima mídia de instalação do Archlinux e então, entrar nela através de chroot. Este método possui a vantagem de dar a você um sistema com todos os requisitos necessários, sem que pacotes adicionais precisem ser instalados.

Nota: Antes de iniciar este procedimento, certifique de possuir a última versão do pacote squashfs-tools no sistema em execução. Caso contrário, você poderá receber erros como: FATAL ERROR aborting: uncompress_inode_table: failed to read block.
  • Monte a imagem LiveCD
# mount -o loop archlinux-{date}-dual.iso /mnt
  • A raiz da imagem possui o formato squashfs dentro do CD. O squashfs não é editável então, você precisa utilizar o unsquash para ter acesso a imagem raiz para aí então, montá-la.

Para executar um unsquash da imagem de arquitetura x86_64 (ou i686 respectivamente) rode

# unsquashfs -d /squashfs-root /mnt/arch/x86_64/root-image.fs.sfs
  • Agora, você pode desmontar e remover a imagem iso
# umount /mnt
# rm archlinux-{date}-dual.iso
  • Monte a imagem raiz através da opção loop
# mount -o loop /squashfs-root/root-image.fs /arch
  • Antes de executar o chrooting para o interior da imagem, precisaremos configurar alguns pontos de montagem adicionais,
# mount -t proc none /arch/proc
# mount -t sysfs none /arch/sys
# mount -o bind /dev /arch/dev
# mount -o bind /dev/pts /arch/dev/pts # important for pacman (for signature check)
  • Agora tudo está preparado para que você dê um chroot no seu ambiente de instalação do Arch.
# chroot /arch bash

Este chroot está apto a executar os arch install scripts. As partições de destino do chroot deverão sempre ser montadas abaixo da estrutura de diretórios /mnt.

Método 2: Bootstrapping dos scripts de instalação(arch install scripts)

Ao contrário dos outros métodos, este é um método de um passo apenas; você só precisará executar o script abaixo e pronto.

Este método pode ser considerado um híbrido entre os métodos 1 e 2. Provê um ambiente de chroot onde os scripts de instalação serão executados(similar ao método 2), utilizando o script de bootstrapping(similar ao método 1).

O script abaixo criará um diretório chamado archinstall-pkg e efetuará o download dos pacotes necessários lá. Então os extrairá para dentro do diretório archinstall-chroot. Finalmente, irá preparar os pontos de montagem, configrará o pacman e entrará no chroot

Nota: Este é apenas um ambiente para executar os arch install scripts: esta não é sua instalação final.

Este chroot é capaz de executar os arch install scripts. As partições destino deve estar montadas abaixo do diretório /mnt para este chroot. Após esta configuração, vá para o próximo passo que é #Corrigindo problemas de chaves de assinatura.

archinstall-bootstrap.sh
#!/bin/bash
# This script is inspired on the archbootstrap script.

PACKAGES=(acl attr bzip2 curl expat glibc gpgme libarchive libassuan libgpg-error libssh2 openssl pacman xz zlib pacman-mirrorlist coreutils bash grep gawk file tar ncurses readline libcap util-linux pcre arch-install-scripts)
# Change the mirror as necessary
MIRROR='http://mirrors.kernel.org/archlinux' 
# You can set the ARCH variable to i686 or x86_64
ARCH=`uname -m`
LIST=`mktemp`
CHROOT_DIR=archinstall-chroot
DIR=archinstall-pkg
mkdir -p "$DIR"
mkdir -p "$CHROOT_DIR"
# Create a list with urls for the arch packages
for REPO in core community extra; do  
        wget -q -O- "$MIRROR/$REPO/os/$ARCH/" |sed  -n "s|.*href=\"\\([^\"]*\\).*|$MIRROR\\/$REPO\\/os\\/$ARCH\\/\\1|p"|grep -v 'sig$'|uniq >> $LIST  
done
# Download and extract each package.
for PACKAGE in ${PACKAGES[*]}; do
        URL=`grep "$PACKAGE-[0-9]" $LIST|head -n1`
        FILE=`echo $URL|sed 's/.*\/\([^\/][^\/]*\)$/\1/'`
        wget "$URL" -c -O "$DIR/$FILE" 
        xz -dc "$DIR/$FILE" | tar x -k -C "$CHROOT_DIR"
done
# Create mount points
mkdir -p "$CHROOT_DIR/dev" "$CHROOT_DIR/proc" "$CHROOT_DIR/sys" "$CHROOT_DIR/mnt"
mount -t proc proc "$CHROOT_DIR/proc/"
mount -t sysfs sys "$CHROOT_DIR/sys/"
mount -o bind /dev "$CHROOT_DIR/dev/"
mkdir -p "$CHROOT_DIR/dev/pts"
mount -t devpts pts "$CHROOT_DIR/dev/pts/"

# Hash for empty password  Created by doing: openssl passwd -1 -salt ihlrowCo and entering an empty password (just press enter)
echo 'root:$1$ihlrowCo$sF0HjA9E8up9DYs258uDQ0:10063:0:99999:7:::' > "$CHROOT_DIR/etc/shadow"
echo "root:x:0:0:root:/root:/bin/bash" > "$CHROOT_DIR/etc/passwd" 
touch "$CHROOT_DIR/etc/group"
echo "myhost" > "$CHROOT_DIR/etc/hostname"
test -e "$CHROOT_DIR/etc/mtab" || echo "rootfs / rootfs rw 0 0" > "$CHROOT_DIR/etc/mtab"
[ -f "/etc/resolv.conf" ] && cp "/etc/resolv.conf" "$CHROOT_DIR/etc/"
sed -ni '/^[ \t]*CheckSpace/ !p' "$CHROOT_DIR/etc/pacman.conf"
sed -i "s/^[ \t]*SigLevel[ \t].*/SigLevel = Never/" "$CHROOT_DIR/etc/pacman.conf"
echo "Server = $MIRROR/\$repo/os/$ARCH" >> "$CHROOT_DIR/etc/pacman.d/mirrorlist"

chroot $CHROOT_DIR /usr/bin/pacman -Sy 
chroot $CHROOT_DIR /bin/bash

Method 3: Install pacman natively on non-arch distro (advanced)

Warning: This method is potentially difficult, your mileage may vary from distro to distro. If you just want to do an arch installation from another distro and you are not interested in have pacman as a regular program under such distro, is better to use a different method.

This method is about installing pacman and the arch install scripts directly under another distro, so they become regular programs on that distro.

This is really useful if you are planning to use another distro regularly to install arch linux, or do fancy things like updating packages of an arch installation using another distro. This is the only method that not imply creating a chroot to be able to execute pacman and the arch install scripts. (but since part of the installation includes entering inside a chroot, you'll end using a chroot anyway)

Download pacman source code and pacman packages

Visit the pacman homepage: https://www.archlinux.org/pacman/#_releases and download the latest release.

Now, download the following packages:

Install dependencies

Using your distribution mechanisms, install the required packages for pacman and the arch install scripts. libcurl, libarchive, fakeroot, xz, asciidoc, wget, and sed are among them. Of course, gcc, make and maybe some other "devel" packages are necessary too.

Compile pacman

  • Decompress the pacman source code and cd inside.
  • Execute configure, adapting the paths as necessary:
     ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-doc

If you get errors here, chances are you are missing dependencies, or your current libcurl, libarchive or others, are too old. Install the dependencies missing using your distro options, or if they are too old, compile them from source.

  • Compile
    make
  • If there were no errors, install the files
    make install
  • You may need to manually call ldconfig to make your distro detect libalpm.

Prepare configuration files

Now is time to extract the configuration files. Change the x86_64 as necessary.

  • Extract the pacman.conf and makepkg.conf files from the pacman package, and disable signature checking:
    tar xJvf pacman-*-x86_64.pkg.tar.xz etc -C / ; sed -i 's/SigLevel.*/SigLevel = Never/g' /etc/pacman.conf
  • Extract the mirror list:
    tar xJvf pacman-mirrorlist-*-any.pkg.tar.xz -C /
  • Enable some mirrors on /etc/pacman.d/mirrorlist
  • Extract the arch-install-scripts
    tar xJvf arch-install-scripts-*-any.pkg.tar.xz -C /

Another option is using the alien tool to convert the pacman-mirrorlist and arch-install-scripts (but no pacman) to native packages of your distro.

Corrigindo problemas de chaves de assinatura

It is necessary to initialize pacman's keyring for signature checking.

This is done using

# pacman-key --init # read the note below!
# pacman-key --populate archlinux

However, when connected via SSH you might run out of entropy. In this case you can try something like

# cat /usr/bin/* > /dev/null &
# find / > /dev/null &

before executing pacman-key --init.

It might take some time. If nevertheless all this does help install haveged and run prior to pacman-key --init

# /usr/sbin/haveged -w 1024 -v 1

Setup the target system

At this point, follow the normal steps of Installation Guide. Remember to mount the destination partition under the /mnt of the chroot.

# pacstrap /mnt base base-devel
# # ...

Edit the fstab file

Probably the genfstab script won't work. In that case, you'll need to edit the /mnt/etc/fstab file by hand. You can use the content of /etc/mtab as reference.

Finish the Installation

Now just do the rest of the steps normally.

Tips and tricks

  • In case you want to replace an existing system, but can for some reason not use a LiveCD, since, e.g., you have no physical access to the computer, the following tip might help: If you manage to get ~500MB of free space somewhere on the disk (e.g. by partitioning a swap partition) you can install the new Archlinux system there, reboot into the newly created system and rsync the entire system to the primary partition. Finally don't forget to fix the bootloader configuration before rebooting.