Configuração inicial do Fedora Linux

Configuração inicial do Fedora Linux

Após a instalação do Fedora, é saudável configurá-lo para deixar o ambiente minimamente agradável. Uma das coisa que gosto é de pouca sujeira na tela (ao menos no modo texto). Existem várias coisas a serem melhoradas nesse sentido no Fedora.

Desabilite o serviço de auditoria

A primeira coisa é desativar o serviço de auditoria. Em tese, seria suficiente adicionar a opção audit=0 no atributo GRUB_CMDLINE_LINUX do arquivo /etc/default/grub, mas isso não funcionou para mim. Desta forma, recorri a desabilitar o serviço na inicialização, pelo arquivo /etc/rc.d/rc.local.

O /etc/rc.d/rc.local é um belo artifício (gambiarra) de sistemas Unix (e Linux) para executar algo após a inicialização dos serviços do sistema. Caso ele não exista, proceda da seguinte forma para criá-lo:

vim /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
restorecon -v /etc/rc.d/rc.local
systemctl enable rc-local.service
systemctl start rc-local.service
systemctl status rc-local.service

Feito isso, acrescente o seguinte conteúdo no arquivo para desativar o serviço auditd:

auditctl -e 0
auditctl -D

Desabilite o serviço de remoção de processos com uso excessivo de memória

Desabilite o systemd-oomd. Embora a intenção de encerrar processos que estejam utilizando memória de forma excessiva seja boa, o serviço responsável por isso é executado frequentemente, de forma desnecessária. Sinceramente, uso excessivo de memória deve ser tratado de outra forma, negando-se a alocação de memória caso não seja possível provisionar memória. Infelizmente, os programas são extremamente otimistas quanto à alocação de memória e as bibliotecas padrão também pecam em não devolver memória alocada pelos processos.

Para desabilitar o serviço padrão de OOM do Fedora, execute os comandos:

systemctl stop systemd-oomd systemd-oomd.socket
systemctl disable systemd-oomd systemd-oomd.socket

Por garantia, altere os parâmetros do sistema para desabilitar o encerramento de processos ou do Kernel por uso excessivo de memória. Para isso, crie um arquivo em /etc/sysctl.d/98-oom_kill_disable.conf com o seguinte conteúdo:

vm.oom-kill=0
vm.panic_on_oom=0
vm.oom_kill_allocating_task=1
vm.oom_dump_tasks=0

Desabilite o serviço de balanceamento de atendimento a IRQ

Para máquinas com poucos processadores, é útil desativar o serviço de balanceamento de atendimento a tratamento de interrupções:

systemctl stop irqbalance
systemctl disable irqbalance

Desabilite o serviço de gestão de bateria em sistemas sem bateria

Para computadores de mesa, o serviço de gestão de energia (upowerd) pode ser desabilitado.

systemctl disable upower
systemctl stop upower

Desabilite o serviço de reconhecimento de impressão digital

Para computadores sem dispositivo de reconhecimento de impressão digital, o serviço fprintd) pode ser desabilitado.

systemctl disable fprintd
systemctl stop fprintd

Desabilite o Performance Co-Pilot (PCP)

De modo geral, em um computador de uso pessoal não é necessário monitor o desempenho do computador utilizando Performance Co-Pilot (PCP). Desta forma, desabilite-o ou desinstale-o:

dnf remove pcp-*

Desabilite a atualização da base de dados de manuais (man-db)

systemctl stop man-db-cache-update.service
systemctl disable man-db-cache-update.service
systemctl stop man-db-restart-cache-update.service
systemctl disable man-db-restart-cache-update.service

Desabilite serviços pouco utilizados ou desnecessários do Gnome

No diretório /etc/xdg/autostart/, faça as seguintes alterações:

mv orca-autostart.desktop orca-autostart.desktop.disable
mv tracker-miner-fs-3.desktop tracker-miner-fs-3.desktop.disable
mv tracker-miner-rss-3.desktop tracker-miner-rss-3.desktop.disable

Alguns serviços não podem ser impedidos de executar (por exemplo, org.gnome.SettingsDaemon.*), mas podem ser configurados para executar em intervalos maiores:

gsettings set org.gnome.settings-daemon.plugins.housekeeping min-notify-period 10000000

Uma alternativa para realmente desativar esses serviços é configurar o arquivo /usr/share/gnome-session/sessions/gnome.session, removendo as entradas lá e no diretório /etc/xdg/autostart/.

Desabilitar serviço de indexação de arquivos do Gnome

systemctl mask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
systemctl --user mask tracker-extract-3.service tracker-miner-fs-3.service tracker-miner-rss-3.service tracker-writeback-3.service tracker-xdg-portal-3.service tracker-miner-fs-control-3.service
tracker3 reset -s -r

Desabilite o cache em disco do Firefox

No about:config, configure como false a opção browser.cache.disk.enable e browser.cache.disk_cache_ssl.

Desativar suporte a rede sem fio em computadores sem hardware compatível

dnf remove wpa_supplicant ModemManager

Desativar o serviço de controle de diversos GPU em um computador

systemctl disable switcheroo-control
systemctl stop switcheroo-control

Mostra mensagens do kernel durante inicialização

Na contramão de remover mensagens desnecessários, é útil mostrar as mensagens do kernel durante a inicialização. Para isso, é necessário desativar o Plymouth. Acrescente os comando rd.plymouth=0 plymouth.enable=0 no atributo GRUB_CMDLINE_LINUX do arquivo /etc/default/grub. Não se esqueça de atualizar o grub.cfg depois disso!

Desativar SELinux

Desativar o SELinux não é exatamente uma boa ideia no quesito segurança, mas é uma opção para melhorar um pouco o desempenho e ter menos dor de cabeça ao configurar programas para desenvolvimento. Para isso, edite o arquivo /etc/sysconfig/selinux e altere o parâmetro SELINUX para disabled. Para retirar os rótulos dos arquivos, execute o comando find / -exec setfattr -x security.selinux {} \;.

Habilitar codes de áudio e vídeo

Pacotes a serem instalados:

  • dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
  • dnf groupupdate core
  • dnf groupupdate multimedia
  • dnf install gstreamer1-libav gstreamer-plugins-good gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer-plugins-bad-nonfree gstreamer1-plugins-ugly-free

Habilitar controle de backlight para placas Intel

Por algum motivo, o backlight não pode ser configurado no X no caso de computadores com placas de vídeo Intel (da própria CPU). Para habilitar, altere ou crie o arquivo /etc/X11/xorg.conf.d/20-intel.conf e acrescente o seguinte conteúdo:

Section "Device"
    Identifier  "Intel Graphics" 
    Driver      "intel"
    Option      "Backlight"  "intel_backlight"
EndSection

Configuração de múltiplas telas no KDE

Caso opte por usar o KDE, não se esqueça de instalar o pacote kscreen para configurar a várias telas conectadas ao computador.

Configuração de aplicações para monitores de alta resolução (hidpi)

Caso ache que a fonte no Firefox está muito pequena, ajuste o parâmetro layout.css.devPixelsPerPx (via about:config) para um valor maior que 1 (por exemplo, 1.2).

Em Engenharia de Software, diversos programas utilizados são desenvolvidos em Java ou requerem uma máquina virtual Java para execução. Em monitores de alta resolução (vulgos monitores 4k), pode ser um desafio configurar a tela para proporções adequadas de figuras e letras. A documentação do ArchLinux é, provavelmente, a melhor referência para isso: https://wiki.archlinux.org/index.php/HiDPI#Java_applications. Seguem as principais instruções:

# Configure a variável de ambiente GDK_SCALE apropriadamente. Infelizmente, ela permite apenas valores inteiros (para um monitor de alta resolução, o valor ideal seria 1.4 à 1.7). Como 1 é muito pouco, é preferível configurá-la com o valor 2 e reduzir o tamanho das letras. # Para aplicações que usam o AWT e Swing, uma opção à variável de ambiente GDK_SCALE é definir o valor de sun.java2d.uiscale. Até a versão mais recente do OpenJDK, ele aceita apenas valores inteiros. Em tese, poderia aceitar valores fracionários, indicados na forma de porcentagem (por exemplo, java -Dsun.java2d.uiScale=140% -jar some_swing_application.jar). No entanto, o OpenJDK truncará o número para um valor inteiro. # Para aplicações que usam JavaFX, é possível definir glass.gtk.uiScale com um valor fracionário, porcentagem ou resolução (densidade de pixels por polegada) da tela. Por exemplo: java -Dglass.gtk.uiScale=148dpi -jar some_jfx_application.jar.

Configuração do Firefox

  • No Brasil, diversas entidades governamentais utilizam os certificados emitidos pelo ICP Brasil. Infelizmente, alguns navegadores (por exemplo, o Fedora) ainda não incorporaram os certificados raiz do ICP Brasil. Para incluí-los manualmente, siga as instruções em https://www.iti.gov.br/navegadores.

Habilite o relato de erros em unidades de bloco

Unidades de armazenamento podem relatar erros porventura detectados pelos seus sistemas de monitoramente (TLER/CCTL do SMART). Infelizmente, por padrão, tais erros não são relatados. Felizmente, é possível configurar para relatar erros deste tipo periodicamente: smartctl -l scterc,10,10 /dev/sdX (no caso, a cada 10 segundos). Esse comando pode ser configurado em /etc/local.d/disks.start ou no script no udev.

## SCSI version
# Set timeout to 7 seconds (default is 30)
ACTION=="add", BUS=="scsi", RUN+="/bin/sh -c 'echo 7 >/sys$DEVPATH/device/timeout'"
# Set TLER to 7 secondsACTION=="add", BUS=="scsi", RUN+="/bin/sh -c 'smartctl -l scterc,70,70 $DEVNAME'"

## Block device version
# Set timeout to 7 seconds (default is 30)
ACTION=="add", BUS=="ata", TYPE=="disk" RUN+="/bin/sh -c 'echo 7 >/sys$DEVPATH/device/timeout'"
# Set TLER to 7 secondsACTION=="add", BUS=="ata", TYPÈ=="disk" RUN+="/bin/sh -c 'smartctl -l scterc,70,70 $DEVNAME'"
# Disable power management for Western Digital Green drivesACTION=="add", BUS=="ata", TYPÈ=="disk" MODEL=="WDC_WD*" RUN+="/bin/sh -c 'idle3ctl -d $DEVNAME'"
# Disable SPIN down for hard disk
ACTION=="add", BUS=="ata", TYPÈ=="disk" RUN+="/bin/sh -c 'hdparm -S 0 -B 255 $DEVNAME'"

Os erros relatados são: erros de leitura (Pending Sectors); blocos com defeito, mas que puderam ser substituídos automaticamente pelo hardware (Reallocated Sectors e Pending Sectors).

Ajustes do Dropbox

  • Caso a primeira sincronização do Dropbox eseja demorando muito, execute o comando ls -thal /proc/`pgrep dropbox`/fd | egrep -v 'socket:|pipe:|anon_inode|/dev/' para identificar o motiva demora.
  • É prudente aumentar a quantidade de arquivos e diretórios observáveis pelo sistema operacional. Para isso, crie o arquvo /etc/sysctl.d/99-fs_watches.conf com o seguinte conteúdo:
fs.inotify.max_user_watches = 1048576
fs.inotify.max_user_instances = 1024
fs.inotify.max_queued_events = 32768
  • Para atualizar os parâmetros do kernel com a nova configuração, utilize o comando sysctl –system.
  • Caso queira configurar com outros valores, os seguintes comando podem ser úteis:
    • Mostrar quantos watches estão sendo utilizados: lsof | grep inotify | wc -l
    • Mostrar que processos instanciaram observadores: for foo in /proc/*/fd/*; do readlink -f $foo; done | grep inotify | sort | uniq -c | sort -nr
  • Desabilite a instalação dos pacotes nautilus-dropbox e dropbox do repositório RpmFusion-NonFree. Para isso, altere o arquivo /etc/yum.repos.d/rpmfusion-nonfree.repo e acrescente, ao final da seção [rpmfusion-nonfree], uma linha com o seguinte conteúdo: exclude=nautilus-dropbox dropbox
  • Instale o pacote gnome-shell-extension-appindicator para que o ícone do Dropbox apareça na bandeja do sistema: dnf install gnome-shell-extension-appindicator
  • Talvez seja necessário instalar outra extensão, como a https://extensions.gnome.org/extension/615/appindicator-support/, e o pacote libappindicator

Ajustes referentes a SSD

Executar limpeza de blocos (trim) periodicamente

Caso tenha um SSD, habilite o fstrim:

sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

Altera o agendador de acessos a blocos

Caso tenha um SSD, altere o agendador de acessos a dispositivos para bloco, criando o arquivo /etc/udev/rules.d/60-ioschedulers.rules com o seguinte conteúdo:

# set scheduler for NVMe
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"

# set scheduler for SSD and eMMC
ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"

# set scheduler for rotating disks
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq"

Desabilite o som de sinalização do sistema (beep)

Por padrão, um beep é emitido para chamar a atenção do usuário em situações como limite de linha ou erros. Embora a intenção seja boa, o som acaba distraindo no dia a dia. Felizmente, é possível desabilitá-lo sem prejudicar o som das demais aplicações (aka música :-):

Para aplicações Gnome, execute o comando gsettings set org.gnome.desktop.sound event-sounds false.

De modo geral, também é possível desabilitar o beep no sistema, executando os seguintes comandos (sugestão: defina-os no ~/.bashrc ou equivalente):

# Turn off system beep in console:
xset b off
xset b 0 0 0

Instalar o ZFS

Configure o ZFS para usar menos recursos

Crie o arquivo /etc/modprobe.d/zfs.conf com o seguinte conteúdo:

# Don't let ZFS use less than 512MB and more than 4GB
options zfs zfs_arc_min=536870912
options zfs zfs_arc_max=4294967296
#
# disabling prefetch is no longer required
options zfs zfs_prefetch_disable=1
options zfs l2arc_noprefetch=0

Configure o nome do computador

  • hostnamectl set-hostname –pretty “ProfMarco dos projetos do Prof. Marco”
  • hostnamectl set-hostname –static “profmarco.projetomarco.dacom”

Remova o aviso sobre aplicações desktop que (aparentemente) travaram

  • No Gnome Shell, caso uma aplicação fique muito tempo ocupada e não reativa, será mostrada uma janela perguntando se a aplicação deve ser interrompida. Isso é muito desagradável! Configure o gerenciador de janela para realizar essa verificação em intervalos maiores de tempo, usando o comando gsettings set org.gnome.mutter check-alive-timeout 60000

Referências

work/configuração_inicial_do_fedora_linux.txt · Last modified: 2024/07/23 19:56 by magsilva