How-To :: instalação da nova versão do OpenRC no Slackware


Neste breve artigo veremos como instalar a nova versão do OpenRC no Slackware, em virtude disso, torna-se obsoleto o conteúdo do artigo How-To :: OpenRC no Slackware.

Instalação.

Diferentemente do artigo referenciado, agora não mais precisaremos alterar ou mover o arquivo /etc/inittab, agora todas as configurações e diretórios encontram-se em /etc/openrc.

Se você tem o Sbopkg ou qualquer frontend para os SlackBuilds (slpkg, sbotools, slackrepo, etc) será bem fácil instalar o OpenRC, com o Sbopkg:

# sbopkg -r
# sbopkg -i "openrc openrc-services"

Mas se quiser fazer na unha, seguem os passos:

$ wget -nv https://slackbuilds.org/slackbuilds/14.2/system/openrc.tar.gz \
https://slackbuilds.org/slackbuilds/14.2/system/openrc-services.tar.gz
$ tar xf openrc.tar.gz
$ tar xf openrc-services.tar.gz
$ cd openrc
$ chmod +x openrc.SlackBuild
$ source openrc.info
$ wget -nv $DOWNLOAD
$ sudo sh openrc.SlackBuild
$ sudo upgradepkg --reinstall --install-new /tmp/openrc-0.39.2-*_SBo.tgz
$ cd ../openrc-services
$ chmod +x openrc-services.SlackBuild
$ source openrc-services.info
$ wget -nv $DOWNLOAD
$ sudo sh openrc-services.SlackBuild
$ sudo upgradepkg --reinstall --install-new /tmp/openrc-services-20181107-*_SBo.tgz

Configuração.

Serviços.

Realizada a instalação dos dois pacotes, comece por configurar seu novo OpenRC.

tty padrão.

# ln -sv /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.tty1
# /sbin/rc-update add agetty.tty1 default

# cp -v /etc/openrc/conf.d/agetty /etc/openrc/conf.d/agetty.tty1
# echo 'agetty_options="--noclear"' >> /etc/openrc/conf.d/agetty.tty1

ttys adicionais.

#  for i in {2..6}; do
   ln -s /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.tty${i}
   /sbin/rc-update add agetty.tty${i} default
 done

Se desejar usar as 6 ttys, aqui uso somente 2.

serial tty (em Servidores).

# ln -sv /etc/openrc/init.d/agetty /etc/openrc/init.d/agetty.ttyS0
# /sbin/rc-update add agetty.ttyS0 default
# cp -v /etc/openrc/conf.d/agetty /etc/openrc/conf.d/agetty.ttyS0
# echo 'agetty_options="--noclear"' >> /etc/openrc/conf.d/agetty.ttyS0

Este slideshow necessita de JavaScript.

Habilite alguns serviços essenciais:

# rc-update add dbus default
# rc-update add sysklogd default
# rc-update add dcron default
# rc-update add alsasound default
# rc-update add consolekit default
# rc-update add dhcpcd default
# rc-update add xdm default # se usa Display Manager

Os serviços habilitados poderam ser vistos em /etc/openrc/runlevels.

Bootloader.

Adicione o init=/sbin/openrc-init na linha GRUB_CMDLINE_LINUX_DEFAULT do arquivo /etc/default/grub (se usa GRUB) ou na linha append em /etc/lilo.conf (se usa LILO):

Pro caso do GRUB, segue meu exemplo:

GRUB_CMDLINE_LINUX_DEFAULT="quiet gfxpayloadd=1024x768x32 intel_pstate=enable init=/sbin/openrc-init"

Para o LILO, creio que seja assim:

append="vt.default_utf8=0 init=/sbin/openrc-init"

Tendo salvo seja lá qual for o seu arquivo rsrs, basta executar:

# grub-mkconfig -o /boot/grub/grub.cfg
# ou
# lilo -v # se usa o horroroso

Reinicie o PC, se tudo der certo o seu Slack iniciará apenas com os serviços mais básicos.

Migração de serviços.

Na parte final, chequemos o que está habilitado:

# for file in /etc/rc.d/*; do
  if [ -x "${file}" ]; then
    echo "enabled ${file}"
  fi
done

E executemos os comandos abaixo para efetuar a migração de todos os scripts de /etc/rc.d ou /etc/init.d para /etc/openrc/init.d.

/etc/openrc/init.d.

# migrate existing services
for service in /etc/init.d/*; do
  svcname=$(basename "$service")
  if [ ! -e "/etc/openrc/init.d/${svcname}" ]; then
    if [ -f "/etc/init.d/${svcname}" ] && grep -q openrc "/etc/init.d/${svcname}"; then
      cp -v "/etc/init.d/${svcname}" "/etc/openrc/init.d/${svcname}"
    elif [ -L "/etc/init.d/${svcname}" ]; then
      # check if symlink is of a service
      service_target=$(readlink -f "$service")
      service_target_name=$(basename "$service_target")
      if [ $(dirname "$service_target") = "/etc/init.d" ]; then
        ln -sv "/etc/openrc/init.d/${service_target_name}" "/etc/openrc/init.d/${svcname}"
      fi
    fi
  fi
done

/etc/openrc/runlevels.

# enable existing services
for runlevel in /etc/runlevels/*; do
  for service in ${runlevel}/*; do
    svcname=$(basename "$service")
    rvlname=$(basename "$runlevel")
    if [ ! -e /etc/openrc/runlevels/${rvlname}/${svcname} ] && [ -e /etc/openrc/init.d/${svcname} ]; then
      ln -sv /etc/openrc/init.d/${svcname} /etc/openrc/runlevels/${rvlname}/${svcname}
    fi
  done
done

/etc/openrc/conf.d.

# check config changes
for file in /etc/conf.d/*; do
  filename=$(basename "$file")
  extension="${filename##*.}"
  if [ "$extension" = orig ] || [ "$extension" == new ]; then
    continue  # dont need to check extra
  fi
  if [ -e "/etc/conf.d/${filename}" ] && [ -e "/etc/openrc/conf.d/${filename}" ]; then
    diff -Nupr "/etc/conf.d/${filename}" "/etc/openrc/conf.d/${filename}"
  fi
done

/etc/openrc/rc.conf.

# main config file
diff -Nupr /etc/rc.conf /etc/openrc/rc.conf

# check local.d changes
for file in /etc/local.d/*; do
  filename=$(basename "$file")
  if [ ! -e "/etc/openrc/local.d/${filename}" ]; then
    cp -v "/etc/local.d/${filename}" "/etc/openrc/local.d/${filename}"
  elif [ -e "/etc/local.d/${filename}" ] && [ -e "/etc/openrc/local.d/${filename}" ]; then
    # show changes
    diff -Nupr "/etc/local.d/${filename}" "/etc/openrc/local.d/${filename}"
  fi
done

Reinicie mais uma vez, mas dessa vez utilizando o comando openrc-shutdown e suas opções, como em:

# openrc-shutdown --reboot now

Após o reinício, veja se tudo está OK com:

# rc-update
ou
# rc-update -v

Conclusão.

O que deu para observar é que com poucos ajustes o boot do sistema ficou mais rápido, lembro ainda que o OpenRC pode ficar ainda mais acelerado, basta que você defina a opção rc_parallel para YES no arquivo /etc/openrc/rc.conf, porém, advirto que isto não é o padrão.

Aqui eu habilitei a opção rc_parallel e o boot passou a 25s, mas usando login automático, para isso deixe o arquivo /etc/openrc/conf.d/agetty.tty1 assim:

# make agetty quiet
#quiet="yes"

# Set the baud rate of the terminal line
#baud=""

# set the terminal type
#term_type="linux"

# extra options to pass to agetty for this port
#agetty_options=""
agetty_options="-a edps --noclear"

Na última linha, troque edps pelo seu login de usuário e siga a parte de autologin (Bash, ZSH e .xinitrc) presentes em:

HOW-TO :: LOGIN NO AMBIENTE GRÁFICO SEM DISPLAY MANAGER

E para finalizar, convém editar ao menos 4 arquivos constantes no novo diretório /etc/openrc/conf.d, são eles, hostname, hwclock, keymaps e modules.

/etc/openrc/conf.d/hostname:

hostname="darkstar"

/etc/openrc/conf.d/hwclock:

clock="local"
#clock_hctosys="YES"
clock_systohc="YES"
clock_args=""

/etc/openrc/conf.d/keymaps:

keymap="br-abnt2"
windowkeys="NO"
#extended_keymaps="backspace keypad euro2"
dumpkeys_charset=""

/etc/openrc/conf.d/modules:

modules="binfmt_misc fuse vboxdrv vboxnetadp vboxnetflt vboxpci zram"

De essencial aí mesmo só o fuse, os do VirtualBox estão aí porque o mesmo está instalado, daí não precisou subir um ou mais serviços por causa dele e não venho usando zram.

Backup.

E para finalizar, façamos um backup das configurações anteriores tal como explicado na wiki:

# mv /etc/init.d /etc/init.d-openrc-bkp
# mv /etc/conf.d /etc/conf.d-openrc-bkp
# mv /etc/local.d /etc/local.d-openrc-bkp
# mv /etc/runlevels /etc/runlevels-openrc-bkp
# mv /etc/rc.conf /etc/rc.conf-openrc.bkp

Faça os ajustes também sugeridos na wiki e que tratam dos arquivos /etc/mtab e /etc/sysctl.conf:

# cp /etc/mtab /etc/mtab.bkp
# ln -snf /proc/self/mounts /etc/mtab
# touch /etc/sysctl.conf

Referências.

OpenRC @ Slackware

openrc SlackBuild – README.Slackware

openrc-services SlackBuild – README.Slackware

InTÈ!

Anúncios
How-To :: instalação da nova versão do OpenRC no Slackware

3 comentários sobre “How-To :: instalação da nova versão do OpenRC no Slackware

  1. Luiz Otávio disse:

    Para um sistema que dizem que o boot é de 30 a 40 segundos ir para 25 já ajuda bastante;para mexer ubuntu é imbatível mais para aprender slackware é a força.

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s