Atualizando pra FreeBSD 13.0

Categoria: FreeBSD Publicado: Sexta, 19 Março 2021 Escrito por Helio Loureiro

Já faz anos que deixei de usar FreeBSD como principal systema operacional, inclusive no meu laptop.  Um dos motivos que me levaram a isso na época foi o fato da hibernação não funcionar corretamente (naquela época).  O post que fiz da migração foi esse aqui: Migrando para OpenSuse.  Como mudei pra Suécia pra virar um desenvolvedor de software em Linux, não fazia muito sentido continuar ou tentar voltar ao FreeBSD como sistema principal.

Mas sempre tentei manter um pé por ali.  FreeBSD é um sistema fantástico pra ser usado.  E com as facilidades de CPUs com múltiplos núcleos e avanço no sistemas de virtualização, ficou fácil ter sempre à mão uma VMzinha com o diabinho rodando.

Meu eu sempre criava a VM, usava por um tempo, e depois removia.  Simplesmente parei de fazer upgrades.  Só testava algumas features e ficava por isso mesmo.

Após uma explicação muito boa do sistema de upgrades feita pelo Garga (@rbgarga) no grupo de FreeBSD (FUG-BR) no Telegram (https://t.me/fug_br), eu resolvi experimentar.

A explicação:

Existem 3 casos de uso do freebsd-update:


1. Atualizar de X.Y pra X.Y-p1
2. Atualizar de X.Y pra X.Y+1
3. Atualizar de X.Y pra X+1.Y

No caso 1, apenas correções de segurança, então vc vai rodar freebsd-update fetch install, reboot e já era.

No caso 2, como vc tá atualizando pra uma nova versão de kernel, dentro da mesma série, vc vai fazer freebsd-update -r X.Y+1 upgrade pra ele baixar tudo o que precisa, aí vai fazer freebsd-update install pra ele instalar o kernel novo, então reboot no kernel novo, confere que tá tudo em ordem e freebsd-update install novamente pra ele atualizar o world, aí vc reinicia ( ou faz um reboot se for possível ) e pronto.

No caso 3 você tá trocando de major version, do 12 pro 13 por exemplo, então vc repete o processo do caso 2, porém, depois do segundo freebsd-update install vc vai estar em um sistema rodando world e kernel do 13, porém com pacotes ainda do 12.  Então vc atualiza todos os pacotes e depois roda o último freebsd-update install pra ele remover todos os arquivos antigos do 12 que não são mais usados no 13 (equivalente ao make delete-old delete-old-libs).  Se rodar isso antes de reinstalar todos os pacotes, com certeza vai quebrar coisas

Então segui as direções num upgrade do 12.2-RELEASE pro 13.0-RC1, o caso 3.


root@freebsd:~ # freebsd-update -r 13.0-RC1 upgrade
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 3 mirrors found.
Fetching metadata signature for 12.2-RELEASE from update4.freebsd.org... done.
Fetching metadata index... done.
Inspecting system... done.

The following components of FreeBSD seem to be installed:
kernel/generic kernel/generic-dbg world/base world/base-dbg world/doc
world/lib32 world/lib32-dbg

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? y

Fetching metadata signature for 13.0-RC1 from update4.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... done.
Fetching files from 12.2-RELEASE for merging... done.
Preparing to download files... done.
Fetching 10251 patches.....10....20....30....40....
[editado]
....10230....10240....10250 done.
Applying patches...
Fetching 638 files... ....10....20....
[editado]
...620....630.... done.
Attempting to automatically merge changes in files... done.
 
The following file will be removed, as it no longer exists in
FreeBSD 13.0-RC1: /etc/motd
Does this look reasonable (y/n)? y
The following files are affected by updates. No changes have
been downloaded, however, because the files have been modified
locally:
/var/db/etcupdate/log
The following files will be removed as part of updating to
13.0-RC1-p0:
/boot/boot1.efifat
13.0-RC1-p0:
/boot/boot1.efifat
/boot/gptboot.efifat
/boot/kernel/aha.ko
[...]
The following files will be added as part of updating to
13.0-RC1-p0:
/boot/fonts
/boot/fonts/10x18.fnt.gz
/boot/fonts/10x20.fnt.gz
/boot/fonts/11x22.fnt.gz
[...]
The following files will be updated as part of updating to
13.0-RC1-p0:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
/bin/chflags
[...]
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
root@freebsd:~ # reboot
Mar 10 11:39:50 freebsd reboot[65100]: rebooted by root
Mar 10 11:39:50 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # uname -a
FreeBSD freebsd 13.0-RC1 FreeBSD 13.0-RC1 #0 releng/13.0-n244639-60e8939aa85: Fri Mar  5 05:01:01 UTC 2021     Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.:/usr/obj/usr/src/amd64.amd64/sys/GENERIC  amd
64
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Scanning //usr/share/certs/blacklisted for certificates...
Scanning //usr/share/certs/trusted for certificates...

Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs

/bin/[
/bin/cat
/bin/chflags
[...]
To install the downloaded upgrades, run "/usr/sbin/freebsd-update install".
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.
root@freebsd:~ # reboot
Mar 10 11:39:50 freebsd reboot[65100]: rebooted by root
Mar 10 11:39:50 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # uname -a
FreeBSD freebsd 13.0-RC1 FreeBSD 13.0-RC1 #0 releng/13.0-n244639-60e8939aa85: Fri Mar  5 05:01:01 UTC 2021     Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.:/usr/obj/usr/src/amd64.amd64/sys/GENERIC  amd
64
root@freebsd:~ # /usr/sbin/freebsd-update install
src component not installed, skipped
Installing updates...
Scanning //usr/share/certs/blacklisted for certificates...
Scanning //usr/share/certs/trusted for certificates...

Completing this upgrade requires removing old shared object files.
Please rebuild all installed 3rd party software (e.g., programs
installed from the ports tree) and then run "/usr/sbin/freebsd-update install"
again to finish installing updates.
root@freebsd:~ # reboot
Mar 11 17:25:34 freebsd reboot[43513]: rebooted by root
Mar 11 17:25:34 freebsd syslogd: exiting on signal 15
[...]
root@freebsd:~ # file /usr/local/bin/htop
/usr/local/bin/htop: ELF 64-bit LSB executable, x86-64, version 1 (FreeBSD), dynamically linked, interpreter /libexec/ld-elf.so.1, for FreeBSD 12.0 (1200086), FreeBSD-style, stripped

root@freebsd:/usr/ports/ports-mgmt/pkg # pkg update -f
Updating FreeBSD repository catalogue...
Fetching meta.conf: 100%    163 B   0.2kB/s    00:01
Fetching packagesite.txz: 100%    6 MiB   6.4MB/s    00:01
pkg: No trusted certificates
Unable to update repository FreeBSD
Error updating repositories!

E fiquei travado nesse problema de "no trusted certificates" pra atualizar os pacotes.

Levei um tempo buscando solução, que indicavam pegar os certificados do /usr/src, que eu não instalo mais, mas achei a informação de ouro que corrigiu o problema.  A instalação sobrescreveu a configuração em /etc/pkg/FreeBSD.conf e isso causou o erro.  Bastou trocar o parâmetro "signature_type" para "none" que consegui atualizar os pacotes pra binários do FreeBSD-13.0-RC1.


root@freebsd:~ # cat /etc/pkg/FreeBSD.conf  
# $FreeBSD$ 
#   echo "FreeBSD: { enabled: no }" > /usr/local/etc/pkg/repos/FreeBSD.conf
# 

FreeBSD: { 
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", 
  mirror_type: "srv", 
  signature_type: "none", 
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes 
}
 

Sobre o FreeBSD-13.0?  Não muito a dizer até onde mexi, mas tem novas features interessantes que espero testar mais a fundo.  No momento estou deixando o ambiente preparado pra talvez fazer uma palestra dobre Python no FreeBSD.

Frequências de vídeo

Categoria: FreeBSD Publicado: Quinta, 18 Novembro 2010 Escrito por Helio Loureiro

Invariavelmente tenho de mexer no xorg e acertar as frequências do monitor.  Isso não é tão necessário no Linux, mas em FreeBSD é impossível ter uma tela gráfica usável sem o xorg.conf criado.

E testando no Dell Vostro 3500, só consigo uma tela 1024x768 justamente pela falta das frequências suportadas.  Para corrigir isso, criei um script já faz alguns anos, mas não tinha publicado ainda.  É baseado no xrandr e deve ser rodado a partir da tela gráfica, por pior que seja sua resolução.

#! /usr/bin/perl

$H_SIZE = 1280; # standard horizontal size
$V_SIZE = 800; # standard vertical size


@SIZES = qw( 1280 1152 1024 800 1200 1400 1600 1800 1900 1920 2048);

print "Section \"Modes\"\n\tIdentifier \"MyModes\"\n";
foreach $hs (@SIZES) {
$rate = $hs / $H_SIZE;
$vs = $V_SIZE * $rate;
foreach $freq qw(60 75) {
print "\t\t# $hs x $vs ($rate - $freq Hz)\n";
$output = `gtf $hs $vs $freq -x`;
foreach $line (split(/\n/, $output)) {
next if ($line !~ /[0-9a-z]/);
$line =~ s/ *//;
print "\t\t".$line."\n";
next if ($line =~ "#");
$line =~ s/\"//g;
$line =~ s/_(\d+)//g;
$line =~ s/Modeline //g;
$cmd = "xrandr --newmode ".$line ;
system($cmd."> /dev/null 2>&1");
#print $cmd."\n";
$modeline = $line;
$modeline =~ s/ .*//g;
#print "Mode: $modeline\n";
$cmd = "xrandr --addmode LVDS $modeline > /dev/null 2>&1";
system($cmd);
}
}
}
print "EndSection\n";

Leia mais:Frequências de vídeo

Configurando Xorg no FreeBSD dentro do VirtualBox

Categoria: FreeBSD Publicado: Sábado, 23 Janeiro 2010 Escrito por Helio Loureiro

 

Uma vez que mudei para OpenSuse, todo os projetos e uso de FreeBSD pararam completamente.

Eu tinha conseguido a autorização do dono do projeto finstall, uma interface gráfica de instalação para o FreeBSD baseado em Python e Glade, para participar, sendo incluido como commiter, mas nunca atualizei nada. Vergonha pura.

VirtualboxTentando retomar os trabalhos, instalei o FreeBSD 8.0 num ambiente VirtualBox. Um dos primeiros problemas que notei de cara foi o Xorg. O ambiente inicia com 800x600 e não há meios de mudar isso (o ambiente hospedeiro tem tela de 1280x800). Problema que não encontrei no Windão dentro do VirtualBox.

Googleando por aí, encontrei a sugestão para alterar meu xorg.conf com os parâmetros:

Section "Monitor" 
   #Add the following two lines: 
   HorizSync 31-80 
   VertRefresh 30-100 

e

   #add your mode: 
   SubSection "Display" 
      Viewport 0 0 
      Depth 16 
      Modes "1280x800" 
   EndSubSection 

ambos não funcionaram.

Buscando mais um pouco no Google, segui uma lista do próprio VirtualBox, sobre o mesmo problema. A dica matadora foi utilizar:

 VBoxManage setextradata your_machines_name CustomVideoMode1xx

No meu caso:

 VBoxManage setextradata FreeBSD CustomVideoMode1 1280x800x16 

Existem algumas dicas no FreeBSD Wiki, como o uso do driver "vboxvideo", mas para mim nada deu certo (só funcionou com o driver "vesa").

Outra coisa que levei um certo tempo pra me ligar e arrumar foi em relação ao teclado e mouse. Não havia meio de funcionar. Somente depois de umas 2 horas batendo cabeça lembrei que precisava da instalação do hald e dbus. Instalando o hald, o restante vem automagicamente como dependência.

Agora estou feliz com meu FreeBSD funcionando no VirtualBox, falando com a Internet e o Linux através de uma interface bridged. Espero conseguir fazer alguma coisa logo pro finstall.

BSD is Dying (é, tá morrendo)

Categoria: FreeBSD Publicado: Terça, 21 Abril 2009 Escrito por Helio Loureiro

FreeBSDA alegria do homem é realmente fugaz. Só o fato de olhar meu site e ver que não foi hackeado (SIC) novamente já me deixa feliz.

Assistindo alguns vídeos de umas palestras, encontrei por acaso o vídeo abaixo. Desconsiderando o título (BSD está morrendo), é uma palestra muito legal e engraçada. Infelizmente totalmente em inglês e sem legendas. Mas não se acanhe: eu também não entendi boa parte do que foi dito! Mas dá pra acompanhar bem a idéia pelos slides.

ls: /mnt/ext2: Bad file descriptor

Categoria: FreeBSD Publicado: Quinta, 15 Janeiro 2009 Escrito por Helio Loureiro

FreeBSD laptop Essa foi a mensagem que recebi tentando acessar meu disco externo. Retrocedendo um pouco e adicionando a explicação.

No meu HD externo, de 160 GB (já falei dele anteriormente), tenho instalado Ubuntu. Ou tinha. Instalei via Qemu num host FreeBSD. Mas funcionava perfeitamente utilizando boot via USB. Estava testando uns aplicativos quando notei que a versão era 7.4, da época de quando instalei (e comprei o HD), e que por isso os aplicativos não funcionavam. Seguindo um passo-a-passo moroso, atualizei para o o 7.10 e depois para o 8.10. Ao terminar o upgrade para 8.10, nem testei com boot via USB, já voltei ao FreeBSD, com a pretensão de utilizar o mesmo via qemu. Ao acessar o disco... falha... utilizei o fsck.ext2 do FreeBSD, mas acho que foi a pior coisa que fiz: perdi a partição raiz (/) e alguns dados do /home. Tentei recuperar, mas... no fim reinstalei o Ubuntu 8.10.

Disco externo Dessa vez aguardei o final da instalação (fiz via qemu) e dei um boot via USB para verificar. O sistema rodou perfeitamente ajustado (melhor até que o FreeBSD), o que me fez voltar a pensar em voltar a usar Linux no meu laptop. Ao reiniciar no FreeBSD, tive uma surpresa tentando montar a partição ext3 que foi formatada durante a instalação, justamente a raiz (/). O erro foi o descrito acima: ls: /mnt/ext2: Bad file descriptor

Verifiquei as outras partições ext3 e... todas funcionando perfeitamente no FreeBSD (por funcionando, entenda como fsck.ext3 e mount_ext2 na partição). Uma busca no google não mostrou muitos resultados úteis, mas dentro do site do FreeBSD, encontrei alguns usuários com o mesmo problema:

Aparentemente um problema relacionado ao "inode size", que era anteriormente formatado como 128, mas passou a utilizar 256 e até 128.

Felizmente esse último link, além de apresentar uma solução, mostrou uma dica para buscar no sistemas de bug do FreeBSD (PR kern/124621). Encontrei o referido problema, ainda como "open", e a mesma solução do último link, via patch. Tentei a sugestão do responsável pelo ticket, que era atualizar a e2fsprogs. Depois apelei para o patch. E inclui minha contribuição. Pequena, irrisória, até mesmo ridícula, mas foi minha primeira contribuição ao projeto... Developers do kernel, aguardem que aqui vou eu :-)

O link do registro de minha proeza:

http://www.freebsd.org/cgi/query-pr.cgi?pr=124621&cat=