Configuração manual do ArchLinux (convidado do Virtualbox)

Pensei em compartilhar essa percep√ß√£o repentina que tive depois de fazer algumas configura√ß√Ķes do ArchLinux. Este fim de semana tive uma .vdifalha (din√Ęmica) e fiquei corrompido. J√° que era uma dor recalcular os setores e como eu n√£o tinha boot no disco (era um clone de outro din√Ęmico, complicando bastante e eu sou um n00b no que diz respeito aos formatos de disco (avan√ßados), imaginei seria muito mais r√°pido come√ßar tudo de novo. Pode conter algumas dicas √ļteis para qualquer pessoa que esteja fazendo uma configura√ß√£o semelhante.

Como voc√™ pode ou n√£o saber, o Arch tem um √≥timo wiki que cont√©m muitas informa√ß√Ķes de qualidade sobre muitas das etapas que devo seguir. Sua m√°quina / hardware / configura√ß√£o / prefer√™ncias podem muito bem diferir, ent√£o pegue o que voc√™ precisa e pesquise o resto.

A prop√≥sito, o Arch ISO vem com o zsh ūüôā

Primeiros passos:

pacman -Syy
pacman
-S vim

Visto que o ‘disco’ est√° realmente armazenado na RAM, mantenha o software instalado neste ponto ao m√≠nimo necess√°rio. Vim vai acelerar bastante o processo (ou Emacs, mas tendem a encontrar nanomaneira underqualified para o trabalho. Eu quero copiar linhas, fazer edi√ß√Ķes multi-line e muito mais. Eu nem sequer se preocuparam em ir ~/.vimrce set nocompatible, neste ponto, uma vez que s√£o dados tempor√°rios de qualquer maneira. Em seguida, normalmente vou formatar meus discos. Gosto de dispersar fortemente meus dados nas principais pastas de n√≠vel superior FSH. Eu costumava usar gdiskpara isso, mas em vez disso, usaremos sgdiskagora.

vim 01
#/root/01 file (inside)
sgdisk
-Z /dev/sda
sgdisk
-a 4096 /dev/sda

Usei o vim para criar um arquivo chamado 01e dentro coloquei duas linhas (por enquanto, para explicar) e estas zeram o disco (disco virtual, usei um tamanho fixo desta vez 50G. A √ļltima linha define o formato avan√ßado que s√£o setores de 4096 bytes e que faz um uso mais eficiente do espa√ßo em disco dispon√≠vel. O dispositivo de bloco agora est√° pronto para ser particionado. N√£o vou digitar todos os bits das parti√ß√Ķes, mas o suficiente para ter uma ideia para voc√™, as linhas a seguir o arquivo seria:/dev/sda01

sgdisk -n 1:0:+2M -t 1:ef02 -c 1:bios /dev/sda
sgdisk
-n 2:0:+200M -t 2:8300 -c 2:boot /dev/sda
sgdisk
-n 3:0:+3G -t 3:8300 -c 3:root /dev/sda
sgdisk
-n 4:0:+10G -t 4:8300 -c 4:usr /dev/sda
sgdisk
-n 5:0:+5G -t 5:8300 -c 5:usr_local /dev/sda
...
sgdisk
-n 9:0:13G -t 9:8300 -c 9:var
sgdisk
-n 10:0:0 -t 10:8200 -c 10:swap

Eu reservei 2Mno in√≠cio do disco para o carregador de inicializa√ß√£o Grub para instalar o esquema GPT na lacuna p√≥s-MBR posteriormente. O tipo √© de bios bootou ef02. Use ef00se quiser usar no EFIlugar. Se voc√™ escrever uma vez e yy(arrancar) as linhas no vim, certifique-se de manter os n√ļmeros corretos, embora os comandos sejam executados na ordem consecutiva de (novo tamanho do disco, digite, depois nome), cada um deles precisa do n√ļmero da parti√ß√£o (assim, pode-se criar um novo e em uma outra parti√ß√£o mudar o nome). O tamanho da troca ir√° ocupar qualquer espa√ßo restante (ent√£o calcule os tamanhos das suas parti√ß√Ķes para que o resto sejan, t, c02x available RAM. Tamb√©m gosto de trocar no final ou no in√≠cio do disco para tempos de acesso mais r√°pidos em discos especialmente magn√©ticos, √© claro.

Outra coisa a observar é que também gosto de manter minha usrpartição separada e isso exigirá algumas etapas adicionais mais tarde.

Saia do arquivo e execute o script com e a primeira etapa est√° conclu√≠da. Em seguida, crie um novo arquivo e escreva as informa√ß√Ķes do sistema de arquivos. Voc√™ poderia fazer algo assim:zsh 01vim 02

for i (${(A)=fslist::= 2 3 4 5 6 7 8}) cmd='mkfs.ext4 /dev/sda$i' && print ${(e)cmd}

mkswap
/dev/sda10
mkfs
.reiserfs -q /dev/sda9

Algumas notas. A primeira express√£o √© minha pregui√ßa de digitar express√Ķes mais elaboradas e longas. Tento ser sucinto no c√≥digo e detalhado na documenta√ß√£o. Normalmente, esses forloops zsh abreviados n√£o s√£o a melhor pr√°tica e provavelmente devem ser feitos no pr√≥prio cli, n√£o em scripts (uma vez que n√£o √© muito leg√≠vel para come√ßar). Voc√™ sempre pode fazer um trabalho seguir o adicionando um para colocar os comandos, mas isso √© muuuuito curto, imaginei que n√£o teria problema. A parte final avalia o comando preparado para fazer todos os sistemas de arquivos. Finalmente, os dois obst√°culos estranhos s√£o e o formato do sistema de arquivos, que √© melhor e mais r√°pido para parti√ß√Ķes que t√™m muita E / S de disco (como logs, cache, tudo realmente) acontecendo.8}){ ... }ext4mkswapreiserfs/var

√Č hora de montar tudo. Abra um novo arquivo de script, por exemplo, 03e digite algo ao longo das linhas de:

mount /dev/sda3 /mnt
cd
/mnt
mkdir boot usr opt srv home
var
mount
/dev/sda2 boot
# /dev/sda3 is / and already mounted as such
mount
/dev/sda4 usr
# now, make the super-op owned local folder
# this allows to separate usr (root:root) and (sop:sop)
# which e.g. node.js loves and others too as you can
# freely write stuff to disk without root access
mkdir usr
/local
mount
/dev/sda5 usr/local
mount
/dev/sda6 opt
mount
/dev/sda7 srv
mount
/dev/sda8 home
mount
/dev/sda9 var
swapon
/dev/sda10

Legal, tudo montado agora para que possamos começar a inicializar o ArchLinux e qualquer software adicional que quisermos. Minha lista inicial dos aplicativos mais preferidos e necessários no início é algo como abaixo e, claro, eu crio outro arquivo 04agora e executo depois:

pacstrap /mnt base base-devel linux-headers dkms zsh sudo tree htop vim dfc git xorg-server xorg-xauth xorg-xhost net-tools dnsutils grub wget httpie elinks virtualbox-guest-utils virtualbox-guest-dkms jshon

Os √ļltimos garante entrada que e entre outros s√£o instalados como s√£o depend√™ncias do pacote utils. Al√©m disso, antes de executar isso, voc√™ pode querer verificar e modificar e mover um servidor perto de voc√™ (se for um espelho confi√°vel, alguns tendem a atrasar ou ficar inativos ocasionalmente) para o topo da lista. Tamb√©m √© por isso que os elinks e algumas ferramentas de rede est√£o presentes na minha lista, para verificar o status do servidor e se necess√°rio fazer o download manualmente atrav√©s do link do arch linux ../<grupo>/<pacote>/download que sempre resolve um servidor funcionando para fornecer tarball ou makepkg PKGBUILD. O pacote √© uma depend√™ncia de um bom envolt√≥rio bash para download de software (reposit√≥rio do usu√°rio do arch). Voc√™ ter√° que obter esse usando, por exemplo, elinks ou wget e, em seguida, no arquivo.virtualbox-guest-modulesxorg-xrandr/etc/pacman.d/mirrorlistjshonpacker-gitaurmakepkgPKGBUILD

Em seguida, √© hora de gerar o arquivo na instala√ß√£o do novo root. Isso conter√° as informa√ß√Ķes do disco que acabamos de criar por todas as etapas anteriores e nos permitir√° inicializar o chroot com mais facilidade depois de conclu√≠do./etc/fstab

genfstab -U -p /mnt >> /mnt/etc/fstab

Isso grava nossas op√ß√Ķes de parti√ß√£o e montagem de disco no local apropriado usando o GUID , ao contr√°rio do formato de disco potencialmente sequestrado por discos anteriores . Eu geralmente edito isso imediatamente e, por exemplo, para ajustar o desempenho e a velocidade, defina v√°rias montagens para:/dev/sdaN

noatime
noexec
,nosuid,nodev

para aqueles que podem lidar com isso. Não vou fornecer muitos detalhes aqui, pois a) sua segurança eb) muito pode dar errado, então você está sozinho aí. Por fim, garanto que o nosso está funcionando com metade da RAM padrão, mas pode ser ajustado, é claro./tmptmpfs

Legal. √Č hora de fazer o chroot. Mas antes de fazer isso, voc√™ pode querer manter seus novos scripts para uso na pr√≥xima vez e ser capaz de criar uma nova instala√ß√£o mais rapidamente:

cd && cp 0* install.txt /mnt/root/
arch
-chroot /mnt /usr/bin/zsh

A √ļltima linha na verdade far√° o chroot usando zshem oposi√ß√£o ao regular, bashuma vez que √© definida como a $SHELLvari√°vel de ambiente. Fa√ßa um r√°pido se voc√™ deseja persistir atrav√©s da inicializa√ß√£o.chsh -s /usr/bin/zsh root

As op√ß√Ķes a seguir s√£o mais ou menos pessoais e localizadas, mas para fins de integridade, irei referenci√°-las de qualquer maneira – ajuste conforme necess√°rio, obviamente:

print 'localhost' >> /etc/hostname

ln
-s /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime

# stream editor in-place edit of only matched locales without pound in column 1
sed
-i -n -r 's/#((en_US|nl_NL).UTF-8)/1/p' /etc/locale.gen

# create language files (removes the not used)
locale
-gen

cat
<<-eos > /etc/locale.conf
LANG
=en_US.UTF-8
LC_COLLATE
=C
eos


cat
<<-eos > /etc/vconsole.conf
KEYMAP
=us
kbdrate
-d 200 -r 30
eos

A vantagem das 2 √ļltimas formas √© que √© muito conveniente escrever arquivos de v√°rias linhas do console desta forma, j√° que o catdoc (uma forma de heredoc) continuar√° criando novas linhas at√© encontrar o valor de fim da string eos. Isso √© igualmente √ļtil em scripts.

Aliás, esqueci e gosto de usá-lo às vezes para ler alguns passos como referência. Normalmente, excluo a maioria das linhas e economizo, já que odeio rolar em um console serial e, dessa forma, posso usá-lo para controlar meus passos ou construir um script a partir dele, se necessário. Use como quiser, apenas saiba que você sempre pode sair do chroot (como se eu tivesse que pegar o arquivo) por sinal e os arquivos ainda estarão lá (já que não reinicializamos, não é?) E, em seguida, copie tudo o que você precisar ou algo assim e chroot novamente usando . Apenas uma pequena indicação para novatos entre nós.install.txtCtrl-D/mnt/rootarch-chroot

Erh. Vamos ver. Agora vem uma parte muito importante, então preste atenção se você está acompanhando e também tem uma configuração de disco BIOS baseada em Grub separada porque você pode facilmente errar./usr

# it needs to find the 2M MBR although at /dev/sda1
grub
-install /dev/sda #<--- use /dev/sda !!

Se tudo correr bem, você verá:

Installing for i386-platform.
Installation finished. No error reported.

Ok, agora temos uma configura√ß√£o adequada do carregador de inicializa√ß√£o do BIOS para o nosso disco. Eu n√£o uso nenhum dos outros, ent√£o n√£o posso fornecer instru√ß√Ķes sobre eles, mas o Arch tem artigos wiki muito bem escritos (novamente, me repetindo), ent√£o certifique-se de dar uma olhada.

Uma das coisas que gosto de fazer no início é garantir que meus módulos de convidado do Virtualbox sejam carregados corretamente. Então, mais uma vez, o lendário catdoc é utilizado:

cat <<-eos > /etc/modules-load.d/virtualbox.conf
vboxguest

vboxsf

vboxvideo

eos

Isso garantirá o carregamento dos módulos do kernel no momento da inicialização. Mas, por enquanto, você não pode usar isso em um chroot ainda, então basta habilitar o serviço systemd na inicialização:

systemctl enable vboxservice

Uma vez que estes são todos (geralmente aqueles em ) até agora tudo bem. Uma vez que você configurar o seu super-operador (que provavelmente tem e associação de grupo), você vai querer ter o VirtualBox apoiar o seu gerenciador de desktop (que deve, desde que seu vídeo não iria funcionar sem) para que não se esqueça então fazer algo parecido :system-wide/etcwheelvboxuser

rm ~/.xinitrc
ln
-s ~/.xsession ~/.xinitrc
print '/usr/bin/VBoxClient-all' >> ~/.xinitrc

Eu faço isso (remoção de uma vez que está obsoleto e é o novo a ser usado. Embora essas mudanças normalmente sejam muito lentas no nível do sistema operacional * nix e dificilmente tenha qualquer impacto, além de muitas, muitas variantes de * nix por aí que utilização . de qualquer forma, hábito pessoal e muito dos meus dotfiles são simbolicamente aos meus dotfiles git qualquer maneira repositório.~/.xinitrc~/.xsessionxserver

Edite o initramfsarquivo de configuração do sistema de inicialização antecipada para
garantir que a parti√ß√£o / usr seja carregada ou a inicializa√ß√£o ir√° falhar. Use o vim ou qualquer outro editor e mude para isso (configura√ß√Ķes m√≠nimas, adicione outras conforme necess√°rio / aplic√°vel, por exemplo, ext2 ou btrfs etc)

MODULES="ext4 reiserfs"    
HOOKS
="base udev autodetect usr modconf block filesystems keyboard fsck shutdown"

Agora execute: para gerar os arquivos (ignore os avisos, eles acontecem somente no retorno e você não pode mesmo ter o hardware Рuma vez que eles são avisos de firmware Рem sua máquina: são e e estão atualmente emitindo avisos que eu não gostam, mas são um fato da vida atm).mkinitcpio -p linuxaic94xxsmsmdtv

Se todas as outras saídas (e especialmente na primeira entrada do carregador de boot principal) parecerem ok, é hora de gerar as entradas do carregador de boot Grub:

grub-mkconfig -o /boot/grub/grub.cfg

Eu poderia ter definido mais algumas op√ß√Ķes de linha do kernel no arquivo, mas realmente n√£o √© necess√°rio j√° que n√£o hiberno uma m√°quina virtual como esta, ent√£o n√£o √© necess√°rio e, embora possa parecer que o Arch ainda est√° usando o antigo , este √© na verdade apenas o systemd rodando como uma m√°scara. J√° que posso usar tudo de e n√£o me importo. Certifique-se de verificar pelo menos algo como se voc√™ √© um otimizador fan√°tico por velocidade ou deseja ser um, j√° que ele dir√° quais servi√ßos demoram mais para inicializar de forma ass√≠ncrona./etc/default/grubresume=sysinitsystemctljournalctlsystemd-analyze blame

Uma dica / ponteiro final ou a parti√ß√£o de inicializa√ß√£o do grub. Gosto de montar a parti√ß√£o para prote√ß√£o adicional. Voc√™ pode querer fazer uma fun√ß√£o de wrapper nesse caso que garanta que um seja executado antes que quaisquer altera√ß√Ķes sejam feitas. Estas s√£o quaisquer atualiza√ß√Ķes para um Linux (j√° que a imagem initramfs tem que ser gravada nessa parti√ß√£o, assim como o arquivo, mas tamb√©m o nosso arquivo rec√©m-gerado vai precisar. Caso contr√°rio, voc√™ pode acabar fazendo uma atualiza√ß√£o de vez em quando e depois falhando devido a essas atualiza√ß√Ķes / changes n√£o pode ser persistido. Tendo feito isso, uma ferramenta e comando se tornam legais tamb√©m (ele ir√° avis√°-lo se algo mudou em / boot – um pouco como uma ferramenta anti-malfeita)./bootromount -o rw,remount /dev/sda2/bootvmlinuz-linuxgrub-mkconfigckboot-init

Agora que estamos quase prontos, ele mostra que precisaremos de uma senha para o root, ent√£o fa√ßa algo como e preencha-a. Al√©m disso, voc√™ vai querer ter um usu√°rio super-op ao qual eu gosto de dar permiss√Ķes baseadas em grupo . Algo como:install.txtpasswdvisudo%wheel

useradd -m -G floppy,optical,storage,power,network,video,scanner,disk,log,wheel,systemd-journal <sop-name>

e, posteriormente, defina o também.passwd <sop-name>

Além disso, seria ótimo configurar manualmente sua rede (estático, desabilitar ipv6 possivelmente Рo que eu costumo fazer) ou, se não estiver familiarizado, apenas habilite o serviço:

systemctl enabled dhcpcd

e você vai ficar bem. Por fim, sempre configuro o autologin do vconsole do systemd para meu superusuário, para não precisar digitar a senha para fazer o login. Ou você pode querer inicializar em um gerenciador de janelas gráfico mais tarde, você escolhe.

Saia do chroot e desmonte todos os discos: Ctrl-De umount -R /mnt. Então reboot. Desligue a máquina virtual e altere a ordem de inicialização dos discos, possivelmente, faça com que o HDD seja o primeiro e o CDROM / DVD (ISO) o segundo para ignorar a tela do grub bios da imagem do disco de configuração e usar aquele que acabamos de instalar /bootou /dev/sda2.

Claro que sempre se poderia ter usado um Docker ou Virtualbox ou Vagrant box pr√©-constru√≠dos … mas qual seria a divers√£o nisso? ūüôā

Aproveite e tenha um bom aprendizado.