<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.verlab.dcc.ufmg.br/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vitorortega</id>
		<title>VeRLab Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.verlab.dcc.ufmg.br/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vitorortega"/>
		<link rel="alternate" type="text/html" href="http://www.verlab.dcc.ufmg.br/mediawiki/index.php/Special:Contributions/Vitorortega"/>
		<updated>2026-05-17T20:00:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>http://www.verlab.dcc.ufmg.br/mediawiki/index.php?title=Sistema_Operacional_Linux&amp;diff=1602</id>
		<title>Sistema Operacional Linux</title>
		<link rel="alternate" type="text/html" href="http://www.verlab.dcc.ufmg.br/mediawiki/index.php?title=Sistema_Operacional_Linux&amp;diff=1602"/>
				<updated>2025-12-11T12:26:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vitorortega: /* Backup de Discos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As máquinas do Verlab/J utilizam em sua maioria o sistema operacional '''Ubuntu LTS''' que sempre são lançadas em anos pares: 2016, 2018, 2020, 2022...&lt;br /&gt;
&lt;br /&gt;
Em geral, usamos a mais madura e não a recém lançada do ano, por motivos de já terem corrigidos os bug de lançamento. Por exemplo, em 2022 usávamos o ubuntu 20.04 e não o ubuntu 22.04. Porém em 2023 começamos a migrar as máquinas para ubuntu 22.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introdução ao Uso do Linux ==&lt;br /&gt;
* '''Canal Curso em Vídeo - You Tube'''&amp;lt;br&amp;gt;Curso completo desde a instalação, mas pode-se assitir apenas a parte 4 (Comandos do Terminal do Linux)&amp;lt;br&amp;gt;https://www.youtube.com/playlist?list=PLHz_AreHm4dlIXleu20uwPWFOSswqLYbV&amp;lt;br&amp;gt;Se tiver interesse em realizar o curso completo e emitir um certificado&amp;lt;br&amp;gt;https://www.cursoemvideo.com/course/linux/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Canal Matheus Battisti - You Tube'''&amp;lt;br&amp;gt;Diversos Vídeos Curtos com dicas de comandos no bash&amp;lt;br&amp;gt;https://www.youtube.com/watch?v=aW4Owxgcvq4&amp;amp;list=PLnDvRpP8BnezDTtL8lm6C-UOJZn-xzALH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Cursos grátis e interativos da Robot Ignite Academy - The Construct''' (idioma inglês, precisa se inscrever no site)&lt;br /&gt;
** '''Linux for Robotics''' ([https://www.theconstructsim.com/robotigniteacademy_learnros/ros-courses-library/linux-for-robotics/ link]) &amp;lt;br&amp;gt;Apesar de ter exemplos aplicados ao ROS, é um ótimo curso rápido para quem quer aprender linhas de comando Linux&amp;lt;br&amp;gt;https://www.theconstructsim.com/robotigniteacademy_learnros/ros-courses-library/linux-for-robotics/&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dicas sobre uso de TMux, Byobu, screen e etc ==&lt;br /&gt;
&lt;br /&gt;
* '''TMux'''&lt;br /&gt;
** Vídeo em pt-br sobre o que é tmux e com resumo dos principais atalhos&amp;lt;br&amp;gt;https://www.youtube.com/watch?v=abuMVACvRNI&lt;br /&gt;
** Blog em inglês sobre o que é tmux e principais atalhos&amp;lt;br&amp;gt;https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/&lt;br /&gt;
** Tabela de atalhos (Cheat Sheet):&amp;lt;br&amp;gt;https://tmuxcheatsheet.com/&amp;lt;br&amp;gt;https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Restaurar o &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; default no Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
Talvez o usuário editou incorretamente o .bashrc ou corrompeu o mesmo, e precisa restaurar para a versão default que o ubuntu cria ao criar a home do usuário. O arquivo default fica armazenado em /etc/skel/.bashrc e pode ser usado para sobreescrever o arquivo corrompido na home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cat /etc/skel/.bashrc &amp;gt; ~/.bashrc &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ou&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt; cp /etc/skel/.bashrc ~/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
referencias: [https://unix.stackexchange.com/questions/740146/how-can-i-restore-my-default-bashrc-file-again link1] [https://askubuntu.com/questions/404424/how-do-i-restore-bashrc-to-its-default link2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Para comparar o conteúdo de /etc/skel.bashrc do ubuntu 22.04 foi colado abaixo:&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
# ~/.bashrc: executed by bash(1) for non-login shells.&lt;br /&gt;
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)&lt;br /&gt;
# for examples&lt;br /&gt;
&lt;br /&gt;
# If not running interactively, don't do anything&lt;br /&gt;
case $- in&lt;br /&gt;
    *i*) ;;&lt;br /&gt;
      *) return;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# don't put duplicate lines or lines starting with space in the history.&lt;br /&gt;
# See bash(1) for more options&lt;br /&gt;
HISTCONTROL=ignoreboth&lt;br /&gt;
&lt;br /&gt;
# append to the history file, don't overwrite it&lt;br /&gt;
shopt -s histappend&lt;br /&gt;
&lt;br /&gt;
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)&lt;br /&gt;
HISTSIZE=1000&lt;br /&gt;
HISTFILESIZE=2000&lt;br /&gt;
&lt;br /&gt;
# check the window size after each command and, if necessary,&lt;br /&gt;
# update the values of LINES and COLUMNS.&lt;br /&gt;
shopt -s checkwinsize&lt;br /&gt;
&lt;br /&gt;
# If set, the pattern &amp;quot;**&amp;quot; used in a pathname expansion context will&lt;br /&gt;
# match all files and zero or more directories and subdirectories.&lt;br /&gt;
#shopt -s globstar&lt;br /&gt;
&lt;br /&gt;
# make less more friendly for non-text input files, see lesspipe(1)&lt;br /&gt;
[ -x /usr/bin/lesspipe ] &amp;amp;&amp;amp; eval &amp;quot;$(SHELL=/bin/sh lesspipe)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# set variable identifying the chroot you work in (used in the prompt below)&lt;br /&gt;
if [ -z &amp;quot;${debian_chroot:-}&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/debian_chroot ]; then&lt;br /&gt;
    debian_chroot=$(cat /etc/debian_chroot)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# set a fancy prompt (non-color, unless we know we &amp;quot;want&amp;quot; color)&lt;br /&gt;
case &amp;quot;$TERM&amp;quot; in&lt;br /&gt;
    xterm-color|*-256color) color_prompt=yes;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# uncomment for a colored prompt, if the terminal has the capability; turned&lt;br /&gt;
# off by default to not distract the user: the focus in a terminal window&lt;br /&gt;
# should be on the output of commands, not on the prompt&lt;br /&gt;
#force_color_prompt=yes&lt;br /&gt;
&lt;br /&gt;
if [ -n &amp;quot;$force_color_prompt&amp;quot; ]; then&lt;br /&gt;
    if [ -x /usr/bin/tput ] &amp;amp;&amp;amp; tput setaf 1 &amp;gt;&amp;amp;/dev/null; then&lt;br /&gt;
	# We have color support; assume it's compliant with Ecma-48&lt;br /&gt;
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such&lt;br /&gt;
	# a case would tend to support setf rather than setaf.)&lt;br /&gt;
	color_prompt=yes&lt;br /&gt;
    else&lt;br /&gt;
	color_prompt=&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$color_prompt&amp;quot; = yes ]; then&lt;br /&gt;
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '&lt;br /&gt;
else&lt;br /&gt;
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '&lt;br /&gt;
fi&lt;br /&gt;
unset color_prompt force_color_prompt&lt;br /&gt;
&lt;br /&gt;
# If this is an xterm set the title to user@host:dir&lt;br /&gt;
case &amp;quot;$TERM&amp;quot; in&lt;br /&gt;
xterm*|rxvt*)&lt;br /&gt;
    PS1=&amp;quot;\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
*)&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# enable color support of ls and also add handy aliases&lt;br /&gt;
if [ -x /usr/bin/dircolors ]; then&lt;br /&gt;
    test -r ~/.dircolors &amp;amp;&amp;amp; eval &amp;quot;$(dircolors -b ~/.dircolors)&amp;quot; || eval &amp;quot;$(dircolors -b)&amp;quot;&lt;br /&gt;
    alias ls='ls --color=auto'&lt;br /&gt;
    #alias dir='dir --color=auto'&lt;br /&gt;
    #alias vdir='vdir --color=auto'&lt;br /&gt;
&lt;br /&gt;
    alias grep='grep --color=auto'&lt;br /&gt;
    alias fgrep='fgrep --color=auto'&lt;br /&gt;
    alias egrep='egrep --color=auto'&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# colored GCC warnings and errors&lt;br /&gt;
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'&lt;br /&gt;
&lt;br /&gt;
# some more ls aliases&lt;br /&gt;
alias ll='ls -alFh'&lt;br /&gt;
alias la='ls -A'&lt;br /&gt;
alias l='ls -CF'&lt;br /&gt;
&lt;br /&gt;
# Add an &amp;quot;alert&amp;quot; alias for long running commands.  Use like so:&lt;br /&gt;
#   sleep 10; alert&lt;br /&gt;
alias alert='notify-send --urgency=low -i &amp;quot;$([ $? = 0 ] &amp;amp;&amp;amp; echo terminal || echo error)&amp;quot; &amp;quot;$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&amp;amp;|]\s*alert$//'\'')&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
# Alias definitions.&lt;br /&gt;
# You may want to put all your additions into a separate file like&lt;br /&gt;
# ~/.bash_aliases, instead of adding them here directly.&lt;br /&gt;
# See /usr/share/doc/bash-doc/examples in the bash-doc package.&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/.bash_aliases ]; then&lt;br /&gt;
    . ~/.bash_aliases&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# enable programmable completion features (you don't need to enable&lt;br /&gt;
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile&lt;br /&gt;
# sources /etc/bash.bashrc).&lt;br /&gt;
if ! shopt -oq posix; then&lt;br /&gt;
  if [ -f /usr/share/bash-completion/bash_completion ]; then&lt;br /&gt;
    . /usr/share/bash-completion/bash_completion&lt;br /&gt;
  elif [ -f /etc/bash_completion ]; then&lt;br /&gt;
    . /etc/bash_completion&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Stress test CPU, GPU, IO, etc ==&lt;br /&gt;
* https://lambda.ai/blog/perform-gpu-and-cpu-stress-testing-on-linux&lt;br /&gt;
* https://lambda.ai/lambda-stack-deep-learning-software&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Criar regra udev para dispositivo USB ==&lt;br /&gt;
Para descobrir o idProduct e idVendor do dispositivo, pode-se usar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; udevadm info -a -n /dev/ttyACM0 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para criar o arquivo com a regra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; sudo nano /etc/udev/rules.d/99-ublox-gps.rules &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adicionar essa linha no arquivo e salvar o arquivo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;tty&amp;quot;, ATTRS{idVendor}==&amp;quot;1546&amp;quot;, ATTRS{idProduct}==&amp;quot;01a9&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se quiser criar um novo nome (link simbolico /dev/ublox) adicionar SYMLINK:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SUBSYSTEM==&amp;quot;tty&amp;quot;, ATTRS{idVendor}==&amp;quot;1546&amp;quot;, ATTRS{idProduct}==&amp;quot;01a9&amp;quot;, SYMLINK+=&amp;quot;ublox&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desconectar e conectar o dispositivo da USB novamente para acionar a nova regra&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instalação de aplicativos ==&lt;br /&gt;
Caso esteja usando alguma maquina desktop do verlab, de preferencia por instalar via AppImage, aplicativos também pode ser instalados via contêiner Docker.&lt;br /&gt;
&lt;br /&gt;
=== Snap ===&lt;br /&gt;
O Snap é um sistema de empacotamento e distribuição de aplicativos mantido pela Canonical, empresa responsável pelo Ubuntu.  &lt;br /&gt;
Diferente do Flatpak, o Snap já vem instalado por padrão no Ubuntu e sua instalação e gerenciamento de aplicativos geralmente exigem permissões de superusuário (''sudo''). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alguns aplicativos disponíveis em Snap podem estar desatualizados em relação às versões oficiais, mas, em contrapartida, o Snap oferece '''grande compatibilidade''' e integração com o Ubuntu, justamente por ser desenvolvido e mantido pela própria Canonical.&lt;br /&gt;
&lt;br /&gt;
Sua instalação é feita com o comando:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt install snapd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A instalação de aplicativos via Snap é feita com:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo snap install (nome-do-aplicativo)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flatpak ===&lt;br /&gt;
O Flatpak é um formato de empacotamento de aplicativos que funciona de forma independente das bibliotecas do sistema.  &lt;br /&gt;
Cada aplicativo traz consigo suas próprias dependências, o que pode torná-los mais pesados em comparação a outros métodos de instalação, como os pacotes nativos da distribuição.&lt;br /&gt;
&lt;br /&gt;
Entre as vantagens, destacam-se:&lt;br /&gt;
* '''Compatibilidade''': os aplicativos em Flatpak funcionam em diversas distribuições Linux, sem depender de versões específicas das bibliotecas do sistema.  &lt;br /&gt;
* '''Atualizações recentes''': geralmente oferecem versões mais novas dos aplicativos em comparação aos repositórios oficiais de algumas distribuições.  &lt;br /&gt;
* '''Instalação sem privilégios de superusuário''': não é necessário usar ''sudo'' para instalar ou executar aplicativos em Flatpak, sendo exigido apenas para a instalação inicial do próprio Flatpak na máquina.&lt;br /&gt;
&lt;br /&gt;
==== Instalação do Flatpak ====&lt;br /&gt;
Para instalar o Flatpak no Ubuntu 18.10 ou superior: [https://flatpak.org/setup/Ubuntu Guia oficial].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install flatpak&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalando os plugins do GNOME para gerenciar aplicativos sem linha de comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt install gnome-software-plugin-flatpak&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adicionando o Flathub (repositório centralizado com diversos aplicativos):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após adicionar, reinicie a máquina.&lt;br /&gt;
&lt;br /&gt;
==== Uso do Flatpak ====&lt;br /&gt;
Instalar aplicativos:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak install nome.do.aplicativo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desinstalar aplicativos:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak uninstall nome.do.aplicativo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Listar aplicativos instalados:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gerenciador gráfico recomendado: Flatseal &lt;br /&gt;
Instalação:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak install flathub com.github.tchx84.Flatseal&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AppImage ===&lt;br /&gt;
O AppImage é outro formato de empacotamento multiplataforma que permite executar aplicativos no Linux sem precisar de instalação tradicional.  &lt;br /&gt;
Ele é um arquivo único (extensão ''.AppImage'') que contém todas as dependências necessárias para rodar o aplicativo.&lt;br /&gt;
&lt;br /&gt;
Entre suas principais características:&lt;br /&gt;
* '''Portabilidade''': pode ser executado diretamente, sem necessidade de instalação no sistema.  &lt;br /&gt;
* '''Independência''': não modifica bibliotecas ou arquivos do sistema.  &lt;br /&gt;
* '''Facilidade''': basta dar permissão de execução e abrir o arquivo.  &lt;br /&gt;
&lt;br /&gt;
==== Como usar um AppImage ====&lt;br /&gt;
1. Baixe o arquivo ''.AppImage'' no site oficial do aplicativo.  &lt;br /&gt;
2. Dê permissão de execução:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
chmod +x nome-do-arquivo.AppImage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
3. Execute o arquivo:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./nome-do-arquivo.AppImage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O AppImage não precisa ser instalado no sistema e pode ser armazenado em qualquer pasta (ex.: ''~/Aplicativos'').  &lt;br /&gt;
Também é possível integrá-lo ao menu do sistema usando ferramentas como [https://appimagelauncher.com/ AppImageLauncher] ([https://github.com/TheAssassin/AppImageLauncher github do projeto]).&amp;lt;br&amp;gt;&lt;br /&gt;
Tem esse tutorial que pode ajudar a entender e utilizar o AppImageLaucher:&amp;lt;br&amp;gt;https://www.edivaldobrito.com.br/integrador-appimagelauncher-no-linux/ &amp;lt;br&amp;gt;e também o [https://github.com/TheAssassin/AppImageLauncher github do projeto] e o [https://github.com/TheAssassin/AppImageLauncher/wiki guia de instalação oficial]. Foi testado a ver~so .deb para ubuntu 18 (bionic) no ubuntu 20.04 e 24.04 e funcionou corretamente!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Backup de Discos ==&lt;br /&gt;
&lt;br /&gt;
Este procedimento serve para criar cópias de segurança completas de um disco, caso algo seja corrompido ou perdido no original.&lt;br /&gt;
&lt;br /&gt;
Existem várias formas de clonar discos. Em arquiteturas x86, o '''Clonezilla''' é uma boa opção. Para arquiteturas '''ARM''' (incluindo as placas '''Jetson'''), o utilitário de linha de comando &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; faz bem o trabalho de clonagem bit a bit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Usando &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; para clonar discos ===&lt;br /&gt;
&lt;br /&gt;
O &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; copia o disco de origem byte a byte, incluindo MBR/bootloader, tabela de partições, sistemas de arquivos e dados. Isso é poderoso, mas também perigoso: um comando errado pode sobrescrever um disco inteiro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Conectar o dispositivo ====&lt;br /&gt;
&lt;br /&gt;
Conecte o disco que será clonado (fonte) a algum computador. Pode ser:&lt;br /&gt;
&lt;br /&gt;
* Diretamente em uma porta SATA / NVMe interna; ou  &lt;br /&gt;
* Em um case/enclosure USB para SSD/HDD/NVMe.&lt;br /&gt;
&lt;br /&gt;
Em muitos cases/enclosures USB, um SSD NVMe pode aparecer como, por exemplo, &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Para identificar o nome do dispositivo (por exemplo, &amp;lt;code&amp;gt;/dev/sda&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/dev/sdb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/dev/nvme0n1&amp;lt;/code&amp;gt;), pode-se usar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;lsblk&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ou&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo fdisk -l&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Atenção''': verifique com cuidado qual é o disco de origem e qual é o de destino. Inverter estes dois no &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; leva à perda definitiva de dados.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Verificar espaço disponível ====&lt;br /&gt;
&lt;br /&gt;
A imagem clonada de um disco terá, em geral, o mesmo tamanho do disco de origem (por exemplo, um disco de 256 GB → imagem de ~256 GB). Logo, o local onde você salvará a imagem precisa ter espaço livre '''igual ou maior''' que a capacidade total do disco de origem.&lt;br /&gt;
&lt;br /&gt;
* Não é suficiente “caber só os dados”; o &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; copia também o espaço vazio.&lt;br /&gt;
* Compressão (por exemplo, com &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;) ajuda a economizar espaço em disco para armazenamento, mas para restaurar a imagem você ainda precisará de um disco de destino com o mesmo tamanho ou maior que o original.&lt;br /&gt;
&lt;br /&gt;
Exemplo de comando para verificar o espaço na pasta de backups:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;df -h /home/vitor/Documents/backups/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adapte o caminho para a pasta onde as imagens de backup serão armazenadas.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Copiar o disco original para um arquivo de imagem ====&lt;br /&gt;
&lt;br /&gt;
A seguir, considere:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdX&amp;lt;/code&amp;gt; → disco de origem (que será clonado);  &lt;br /&gt;
* &amp;lt;code&amp;gt;/caminho/para/backups/&amp;lt;/code&amp;gt; → pasta onde a imagem será salva;  &lt;br /&gt;
* &amp;lt;code&amp;gt;nome_da_imagem&amp;lt;/code&amp;gt; → nome escolhido para o arquivo de imagem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Imagem bruta (mais rápida, porém maior)'''&amp;lt;br&amp;gt;&lt;br /&gt;
Cria uma imagem sem compressão, copiando o disco inteiro byte a byte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/dev/sdX of=/caminho/para/backups/nome_da_imagem.img bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onde:&lt;br /&gt;
* &amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; (''input file'') é o disco de origem;&lt;br /&gt;
* &amp;lt;code&amp;gt;of&amp;lt;/code&amp;gt; (''output file'') é o arquivo de imagem;&lt;br /&gt;
* &amp;lt;code&amp;gt;bs=4M&amp;lt;/code&amp;gt; define o tamanho do bloco de cópia (4 MB);&lt;br /&gt;
* &amp;lt;code&amp;gt;status=progress&amp;lt;/code&amp;gt; mostra o progresso;&lt;br /&gt;
* &amp;lt;code&amp;gt;conv=fsync&amp;lt;/code&amp;gt; força a gravação dos dados em disco ao final.&lt;br /&gt;
&lt;br /&gt;
''Exemplo real:''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/dev/sda of=/home/vitor/Documents/Verlab/GO2/backups/go2_edu_backup.img bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Imagem comprimida (usando &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;)'''&amp;lt;br&amp;gt;&lt;br /&gt;
Aqui o &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; envia a saída diretamente para o compressor &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;. Isso reduz o tamanho do arquivo armazenado, ao custo de mais uso de CPU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/dev/sdX bs=4M status=progress | zstd -12 -T0 &amp;gt; /caminho/para/backups/nome_da_imagem.img.zst&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onde:&lt;br /&gt;
* &amp;lt;code&amp;gt;-12&amp;lt;/code&amp;gt; define o nível de compressão (maior = mais compacto, porém mais lento);&lt;br /&gt;
* &amp;lt;code&amp;gt;-T0&amp;lt;/code&amp;gt; usa todos os núcleos de CPU disponíveis.&lt;br /&gt;
&lt;br /&gt;
''Exemplo real:''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/dev/sda bs=4M status=progress | zstd -12 -T0 &amp;gt; /home/vitor/Documents/Verlab/GO2/backups/go2_edu_backup.img.zst&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Restaurar a imagem em outro disco (clonar para o destino) ====&lt;br /&gt;
&lt;br /&gt;
O disco de destino '''deve''' ter tamanho igual ou maior que o disco original (o disco fonte usado na criação da imagem), não apenas igual ao tamanho do arquivo de imagem.&lt;br /&gt;
&lt;br /&gt;
Quando o &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; é usado para restaurar a imagem:&lt;br /&gt;
&lt;br /&gt;
* Todo o conteúdo do disco de destino será sobrescrito: tabela de partições, sistemas de arquivos e dados.  &lt;br /&gt;
* Se o disco de destino tem, por exemplo, 1 TB e o disco original tinha 250 GB, ao final você terá um disco com a mesma estrutura de 250 GB clonada e ~750 GB não particionados.  &lt;br /&gt;
* Depois da clonagem, será necessário usar uma ferramenta de particionamento (por exemplo, &amp;lt;code&amp;gt;gparted&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;parted&amp;lt;/code&amp;gt;) para expandir a partição principal, caso você queira aproveitar o espaço extra.&lt;br /&gt;
&lt;br /&gt;
Não tente:&lt;br /&gt;
&lt;br /&gt;
* Criar partições antes e depois rodar &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; – o &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; irá sobrescrever a tabela de partições.  &lt;br /&gt;
* Rodar &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt; diretamente para uma partição (por exemplo, &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt;) quando a imagem contém o disco inteiro – isso não é equivalente e não funcionará corretamente.&lt;br /&gt;
&lt;br /&gt;
Antes de gravar a imagem, '''desmonte''' o disco de destino (se alguma partição estiver montada):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount /dev/sdY1&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(adaptando &amp;lt;code&amp;gt;/dev/sdY1&amp;lt;/code&amp;gt; para as partições do disco de destino).&lt;br /&gt;
&lt;br /&gt;
Considere agora:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/sdY&amp;lt;/code&amp;gt; → disco de destino.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Restaurar a partir de uma imagem bruta'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/caminho/para/backups/nome_da_imagem.img of=/dev/sdY bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Exemplo real:''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;sudo dd if=/home/vitor/Documents/Verlab/GO2/backups/go2_edu_backup.img of=/dev/sda bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Restaurar a partir de uma imagem comprimida (&amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;)'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neste caso, a imagem é descompactada ''on the fly'' e enviada diretamente ao &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;zstd -dc -T0 /caminho/para/backups/nome_da_imagem.img.zst | sudo dd of=/dev/sdY bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onde:&lt;br /&gt;
* &amp;lt;code&amp;gt;-d&amp;lt;/code&amp;gt; → descomprimir;  &lt;br /&gt;
* &amp;lt;code&amp;gt;-c&amp;lt;/code&amp;gt; → enviar saída descomprimida para &amp;lt;code&amp;gt;stdout&amp;lt;/code&amp;gt; (console), permitindo o ''pipe'' para &amp;lt;code&amp;gt;dd&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
''Exemplo real:''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;zstd -dc -T0 /home/vitor/Documents/Verlab/GO2/backups/go2_edu_backup.img.zst | sudo dd of=/dev/sda bs=4M status=progress conv=fsync&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Testar o disco clonado ====&lt;br /&gt;
&lt;br /&gt;
Depois de escrever a imagem no disco de destino, é recomendável fazer alguns testes básicos.&lt;br /&gt;
&lt;br /&gt;
* Criar um diretório temporário para montagem:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;mkdir /tmp/test_mount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Montar uma das partições do disco clonado em modo somente leitura (&amp;lt;code&amp;gt;-o ro&amp;lt;/code&amp;gt;).  &lt;br /&gt;
  Em geral, a partição maior é a que contém o sistema (pastas &amp;lt;code&amp;gt;/home&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/usr&amp;lt;/code&amp;gt;, etc.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo mount -o ro /dev/sda1 /tmp/test_mount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(adapte &amp;lt;code&amp;gt;/dev/sda1&amp;lt;/code&amp;gt; para a partição correta).&lt;br /&gt;
&lt;br /&gt;
* Verificar o conteúdo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ls /tmp/test_mount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se aparecerem diretórios como &amp;lt;code&amp;gt;home&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;usr&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;etc&amp;lt;/code&amp;gt; etc., é um bom sinal de que a clonagem foi bem-sucedida.&lt;br /&gt;
&lt;br /&gt;
Mensagens como &amp;quot;wrong fs type&amp;quot; ou &amp;quot;bad superblock&amp;quot; indicam que:&lt;br /&gt;
&lt;br /&gt;
* A clonagem falhou; ou  &lt;br /&gt;
* Você montou a partição errada (por exemplo, uma partição de boot em vez da partição de sistema).&lt;br /&gt;
&lt;br /&gt;
* Desmontar a partição de teste:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;sudo umount /tmp/test_mount&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sempre que possível, faça também um teste de boot a partir do disco clonado (por exemplo, usando um enclosure USB e configurando a BIOS/UEFI para inicializar por ele). Isso é a validação mais forte de que o backup está funcional.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Compressão e integridade dos backups ===&lt;br /&gt;
&lt;br /&gt;
Imagens de disco costumam ser arquivos muito grandes. Para facilitar armazenamento e aumentar a segurança contra corrupção de dados (''bit rot'', problemas em HD, etc.), vale combinar compressão com arquivos de reparo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Compressão com &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O &amp;lt;code&amp;gt;zstd&amp;lt;/code&amp;gt; (Zstandard) é um compressor moderno, rápido e com bom nível de compactação. Para comprimir uma imagem já criada:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;zstd -12 -T0 nome_da_imagem.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Isto irá gerar um arquivo &amp;lt;code&amp;gt;nome_da_imagem.img.zst&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Arquivos de reparo com &amp;lt;code&amp;gt;par2&amp;lt;/code&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O &amp;lt;code&amp;gt;par2&amp;lt;/code&amp;gt; cria arquivos de redundância (''parity files'') que permitem reparar a imagem caso alguns bytes sejam corrompidos.&lt;br /&gt;
&lt;br /&gt;
Exemplo de criação de arquivos de reparo com 10% de redundância:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;par2create -r10 -n2 nome_da_imagem.img&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Onde:&lt;br /&gt;
* &amp;lt;code&amp;gt;-r10&amp;lt;/code&amp;gt; → cria aproximadamente 10% de dados extras de paridade;  &lt;br /&gt;
* &amp;lt;code&amp;gt;-n2&amp;lt;/code&amp;gt; → número de arquivos &amp;lt;code&amp;gt;.par2&amp;lt;/code&amp;gt; gerados (pode variar conforme preferência).&lt;br /&gt;
&lt;br /&gt;
Depois de criar os arquivos de reparo, é recomendável verificar a integridade com:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;par2verify nome_da_imagem.img.par2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Armazene juntos, na mesma pasta de backup:&lt;br /&gt;
&lt;br /&gt;
* A imagem comprimida (por exemplo, &amp;lt;code&amp;gt;nome_da_imagem.img.zst&amp;lt;/code&amp;gt;);  &lt;br /&gt;
* Os arquivos &amp;lt;code&amp;gt;.par2&amp;lt;/code&amp;gt; de reparo.&lt;br /&gt;
&lt;br /&gt;
Assim, mesmo que haja pequenos danos no arquivo de imagem, há chance de recuperação usando os arquivos de paridade.&lt;/div&gt;</summary>
		<author><name>Vitorortega</name></author>	</entry>

	<entry>
		<id>http://www.verlab.dcc.ufmg.br/mediawiki/index.php?title=Sistema_Operacional_Linux&amp;diff=1601</id>
		<title>Sistema Operacional Linux</title>
		<link rel="alternate" type="text/html" href="http://www.verlab.dcc.ufmg.br/mediawiki/index.php?title=Sistema_Operacional_Linux&amp;diff=1601"/>
				<updated>2025-12-11T11:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vitorortega: /* Instalação de aplicativos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As máquinas do Verlab/J utilizam em sua maioria o sistema operacional '''Ubuntu LTS''' que sempre são lançadas em anos pares: 2016, 2018, 2020, 2022...&lt;br /&gt;
&lt;br /&gt;
Em geral, usamos a mais madura e não a recém lançada do ano, por motivos de já terem corrigidos os bug de lançamento. Por exemplo, em 2022 usávamos o ubuntu 20.04 e não o ubuntu 22.04. Porém em 2023 começamos a migrar as máquinas para ubuntu 22.04.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Introdução ao Uso do Linux ==&lt;br /&gt;
* '''Canal Curso em Vídeo - You Tube'''&amp;lt;br&amp;gt;Curso completo desde a instalação, mas pode-se assitir apenas a parte 4 (Comandos do Terminal do Linux)&amp;lt;br&amp;gt;https://www.youtube.com/playlist?list=PLHz_AreHm4dlIXleu20uwPWFOSswqLYbV&amp;lt;br&amp;gt;Se tiver interesse em realizar o curso completo e emitir um certificado&amp;lt;br&amp;gt;https://www.cursoemvideo.com/course/linux/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Canal Matheus Battisti - You Tube'''&amp;lt;br&amp;gt;Diversos Vídeos Curtos com dicas de comandos no bash&amp;lt;br&amp;gt;https://www.youtube.com/watch?v=aW4Owxgcvq4&amp;amp;list=PLnDvRpP8BnezDTtL8lm6C-UOJZn-xzALH&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* '''Cursos grátis e interativos da Robot Ignite Academy - The Construct''' (idioma inglês, precisa se inscrever no site)&lt;br /&gt;
** '''Linux for Robotics''' ([https://www.theconstructsim.com/robotigniteacademy_learnros/ros-courses-library/linux-for-robotics/ link]) &amp;lt;br&amp;gt;Apesar de ter exemplos aplicados ao ROS, é um ótimo curso rápido para quem quer aprender linhas de comando Linux&amp;lt;br&amp;gt;https://www.theconstructsim.com/robotigniteacademy_learnros/ros-courses-library/linux-for-robotics/&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dicas sobre uso de TMux, Byobu, screen e etc ==&lt;br /&gt;
&lt;br /&gt;
* '''TMux'''&lt;br /&gt;
** Vídeo em pt-br sobre o que é tmux e com resumo dos principais atalhos&amp;lt;br&amp;gt;https://www.youtube.com/watch?v=abuMVACvRNI&lt;br /&gt;
** Blog em inglês sobre o que é tmux e principais atalhos&amp;lt;br&amp;gt;https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/&lt;br /&gt;
** Tabela de atalhos (Cheat Sheet):&amp;lt;br&amp;gt;https://tmuxcheatsheet.com/&amp;lt;br&amp;gt;https://tmuxguide.readthedocs.io/en/latest/tmux/tmux.html&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Restaurar o &amp;lt;code&amp;gt;.bashrc&amp;lt;/code&amp;gt; default no Ubuntu ==&lt;br /&gt;
&lt;br /&gt;
Talvez o usuário editou incorretamente o .bashrc ou corrompeu o mesmo, e precisa restaurar para a versão default que o ubuntu cria ao criar a home do usuário. O arquivo default fica armazenado em /etc/skel/.bashrc e pode ser usado para sobreescrever o arquivo corrompido na home:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; cat /etc/skel/.bashrc &amp;gt; ~/.bashrc &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ou&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt; cp /etc/skel/.bashrc ~/ &amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
referencias: [https://unix.stackexchange.com/questions/740146/how-can-i-restore-my-default-bashrc-file-again link1] [https://askubuntu.com/questions/404424/how-do-i-restore-bashrc-to-its-default link2]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Para comparar o conteúdo de /etc/skel.bashrc do ubuntu 22.04 foi colado abaixo:&lt;br /&gt;
|-&lt;br /&gt;
|  &lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
# ~/.bashrc: executed by bash(1) for non-login shells.&lt;br /&gt;
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)&lt;br /&gt;
# for examples&lt;br /&gt;
&lt;br /&gt;
# If not running interactively, don't do anything&lt;br /&gt;
case $- in&lt;br /&gt;
    *i*) ;;&lt;br /&gt;
      *) return;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# don't put duplicate lines or lines starting with space in the history.&lt;br /&gt;
# See bash(1) for more options&lt;br /&gt;
HISTCONTROL=ignoreboth&lt;br /&gt;
&lt;br /&gt;
# append to the history file, don't overwrite it&lt;br /&gt;
shopt -s histappend&lt;br /&gt;
&lt;br /&gt;
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)&lt;br /&gt;
HISTSIZE=1000&lt;br /&gt;
HISTFILESIZE=2000&lt;br /&gt;
&lt;br /&gt;
# check the window size after each command and, if necessary,&lt;br /&gt;
# update the values of LINES and COLUMNS.&lt;br /&gt;
shopt -s checkwinsize&lt;br /&gt;
&lt;br /&gt;
# If set, the pattern &amp;quot;**&amp;quot; used in a pathname expansion context will&lt;br /&gt;
# match all files and zero or more directories and subdirectories.&lt;br /&gt;
#shopt -s globstar&lt;br /&gt;
&lt;br /&gt;
# make less more friendly for non-text input files, see lesspipe(1)&lt;br /&gt;
[ -x /usr/bin/lesspipe ] &amp;amp;&amp;amp; eval &amp;quot;$(SHELL=/bin/sh lesspipe)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# set variable identifying the chroot you work in (used in the prompt below)&lt;br /&gt;
if [ -z &amp;quot;${debian_chroot:-}&amp;quot; ] &amp;amp;&amp;amp; [ -r /etc/debian_chroot ]; then&lt;br /&gt;
    debian_chroot=$(cat /etc/debian_chroot)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# set a fancy prompt (non-color, unless we know we &amp;quot;want&amp;quot; color)&lt;br /&gt;
case &amp;quot;$TERM&amp;quot; in&lt;br /&gt;
    xterm-color|*-256color) color_prompt=yes;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# uncomment for a colored prompt, if the terminal has the capability; turned&lt;br /&gt;
# off by default to not distract the user: the focus in a terminal window&lt;br /&gt;
# should be on the output of commands, not on the prompt&lt;br /&gt;
#force_color_prompt=yes&lt;br /&gt;
&lt;br /&gt;
if [ -n &amp;quot;$force_color_prompt&amp;quot; ]; then&lt;br /&gt;
    if [ -x /usr/bin/tput ] &amp;amp;&amp;amp; tput setaf 1 &amp;gt;&amp;amp;/dev/null; then&lt;br /&gt;
	# We have color support; assume it's compliant with Ecma-48&lt;br /&gt;
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such&lt;br /&gt;
	# a case would tend to support setf rather than setaf.)&lt;br /&gt;
	color_prompt=yes&lt;br /&gt;
    else&lt;br /&gt;
	color_prompt=&lt;br /&gt;
    fi&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$color_prompt&amp;quot; = yes ]; then&lt;br /&gt;
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '&lt;br /&gt;
else&lt;br /&gt;
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '&lt;br /&gt;
fi&lt;br /&gt;
unset color_prompt force_color_prompt&lt;br /&gt;
&lt;br /&gt;
# If this is an xterm set the title to user@host:dir&lt;br /&gt;
case &amp;quot;$TERM&amp;quot; in&lt;br /&gt;
xterm*|rxvt*)&lt;br /&gt;
    PS1=&amp;quot;\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
*)&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
# enable color support of ls and also add handy aliases&lt;br /&gt;
if [ -x /usr/bin/dircolors ]; then&lt;br /&gt;
    test -r ~/.dircolors &amp;amp;&amp;amp; eval &amp;quot;$(dircolors -b ~/.dircolors)&amp;quot; || eval &amp;quot;$(dircolors -b)&amp;quot;&lt;br /&gt;
    alias ls='ls --color=auto'&lt;br /&gt;
    #alias dir='dir --color=auto'&lt;br /&gt;
    #alias vdir='vdir --color=auto'&lt;br /&gt;
&lt;br /&gt;
    alias grep='grep --color=auto'&lt;br /&gt;
    alias fgrep='fgrep --color=auto'&lt;br /&gt;
    alias egrep='egrep --color=auto'&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# colored GCC warnings and errors&lt;br /&gt;
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'&lt;br /&gt;
&lt;br /&gt;
# some more ls aliases&lt;br /&gt;
alias ll='ls -alFh'&lt;br /&gt;
alias la='ls -A'&lt;br /&gt;
alias l='ls -CF'&lt;br /&gt;
&lt;br /&gt;
# Add an &amp;quot;alert&amp;quot; alias for long running commands.  Use like so:&lt;br /&gt;
#   sleep 10; alert&lt;br /&gt;
alias alert='notify-send --urgency=low -i &amp;quot;$([ $? = 0 ] &amp;amp;&amp;amp; echo terminal || echo error)&amp;quot; &amp;quot;$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&amp;amp;|]\s*alert$//'\'')&amp;quot;'&lt;br /&gt;
&lt;br /&gt;
# Alias definitions.&lt;br /&gt;
# You may want to put all your additions into a separate file like&lt;br /&gt;
# ~/.bash_aliases, instead of adding them here directly.&lt;br /&gt;
# See /usr/share/doc/bash-doc/examples in the bash-doc package.&lt;br /&gt;
&lt;br /&gt;
if [ -f ~/.bash_aliases ]; then&lt;br /&gt;
    . ~/.bash_aliases&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# enable programmable completion features (you don't need to enable&lt;br /&gt;
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile&lt;br /&gt;
# sources /etc/bash.bashrc).&lt;br /&gt;
if ! shopt -oq posix; then&lt;br /&gt;
  if [ -f /usr/share/bash-completion/bash_completion ]; then&lt;br /&gt;
    . /usr/share/bash-completion/bash_completion&lt;br /&gt;
  elif [ -f /etc/bash_completion ]; then&lt;br /&gt;
    . /etc/bash_completion&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Stress test CPU, GPU, IO, etc ==&lt;br /&gt;
* https://lambda.ai/blog/perform-gpu-and-cpu-stress-testing-on-linux&lt;br /&gt;
* https://lambda.ai/lambda-stack-deep-learning-software&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Criar regra udev para dispositivo USB ==&lt;br /&gt;
Para descobrir o idProduct e idVendor do dispositivo, pode-se usar:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; udevadm info -a -n /dev/ttyACM0 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Para criar o arquivo com a regra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt; sudo nano /etc/udev/rules.d/99-ublox-gps.rules &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adicionar essa linha no arquivo e salvar o arquivo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;tty&amp;quot;, ATTRS{idVendor}==&amp;quot;1546&amp;quot;, ATTRS{idProduct}==&amp;quot;01a9&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se quiser criar um novo nome (link simbolico /dev/ublox) adicionar SYMLINK:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SUBSYSTEM==&amp;quot;tty&amp;quot;, ATTRS{idVendor}==&amp;quot;1546&amp;quot;, ATTRS{idProduct}==&amp;quot;01a9&amp;quot;, SYMLINK+=&amp;quot;ublox&amp;quot;, MODE=&amp;quot;0666&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
 &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desconectar e conectar o dispositivo da USB novamente para acionar a nova regra&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Instalação de aplicativos ==&lt;br /&gt;
Caso esteja usando alguma maquina desktop do verlab, de preferencia por instalar via AppImage, aplicativos também pode ser instalados via contêiner Docker.&lt;br /&gt;
&lt;br /&gt;
=== Snap ===&lt;br /&gt;
O Snap é um sistema de empacotamento e distribuição de aplicativos mantido pela Canonical, empresa responsável pelo Ubuntu.  &lt;br /&gt;
Diferente do Flatpak, o Snap já vem instalado por padrão no Ubuntu e sua instalação e gerenciamento de aplicativos geralmente exigem permissões de superusuário (''sudo''). &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alguns aplicativos disponíveis em Snap podem estar desatualizados em relação às versões oficiais, mas, em contrapartida, o Snap oferece '''grande compatibilidade''' e integração com o Ubuntu, justamente por ser desenvolvido e mantido pela própria Canonical.&lt;br /&gt;
&lt;br /&gt;
Sua instalação é feita com o comando:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt install snapd&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A instalação de aplicativos via Snap é feita com:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo snap install (nome-do-aplicativo)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Flatpak ===&lt;br /&gt;
O Flatpak é um formato de empacotamento de aplicativos que funciona de forma independente das bibliotecas do sistema.  &lt;br /&gt;
Cada aplicativo traz consigo suas próprias dependências, o que pode torná-los mais pesados em comparação a outros métodos de instalação, como os pacotes nativos da distribuição.&lt;br /&gt;
&lt;br /&gt;
Entre as vantagens, destacam-se:&lt;br /&gt;
* '''Compatibilidade''': os aplicativos em Flatpak funcionam em diversas distribuições Linux, sem depender de versões específicas das bibliotecas do sistema.  &lt;br /&gt;
* '''Atualizações recentes''': geralmente oferecem versões mais novas dos aplicativos em comparação aos repositórios oficiais de algumas distribuições.  &lt;br /&gt;
* '''Instalação sem privilégios de superusuário''': não é necessário usar ''sudo'' para instalar ou executar aplicativos em Flatpak, sendo exigido apenas para a instalação inicial do próprio Flatpak na máquina.&lt;br /&gt;
&lt;br /&gt;
==== Instalação do Flatpak ====&lt;br /&gt;
Para instalar o Flatpak no Ubuntu 18.10 ou superior: [https://flatpak.org/setup/Ubuntu Guia oficial].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
&lt;br /&gt;
sudo apt install flatpak&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instalando os plugins do GNOME para gerenciar aplicativos sem linha de comando:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
sudo apt install gnome-software-plugin-flatpak&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Adicionando o Flathub (repositório centralizado com diversos aplicativos):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Após adicionar, reinicie a máquina.&lt;br /&gt;
&lt;br /&gt;
==== Uso do Flatpak ====&lt;br /&gt;
Instalar aplicativos:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak install nome.do.aplicativo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desinstalar aplicativos:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak uninstall nome.do.aplicativo&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Listar aplicativos instalados:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak list&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gerenciador gráfico recomendado: Flatseal &lt;br /&gt;
Instalação:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
flatpak install flathub com.github.tchx84.Flatseal&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== AppImage ===&lt;br /&gt;
O AppImage é outro formato de empacotamento multiplataforma que permite executar aplicativos no Linux sem precisar de instalação tradicional.  &lt;br /&gt;
Ele é um arquivo único (extensão ''.AppImage'') que contém todas as dependências necessárias para rodar o aplicativo.&lt;br /&gt;
&lt;br /&gt;
Entre suas principais características:&lt;br /&gt;
* '''Portabilidade''': pode ser executado diretamente, sem necessidade de instalação no sistema.  &lt;br /&gt;
* '''Independência''': não modifica bibliotecas ou arquivos do sistema.  &lt;br /&gt;
* '''Facilidade''': basta dar permissão de execução e abrir o arquivo.  &lt;br /&gt;
&lt;br /&gt;
==== Como usar um AppImage ====&lt;br /&gt;
1. Baixe o arquivo ''.AppImage'' no site oficial do aplicativo.  &lt;br /&gt;
2. Dê permissão de execução:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
chmod +x nome-do-arquivo.AppImage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
3. Execute o arquivo:  &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./nome-do-arquivo.AppImage&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O AppImage não precisa ser instalado no sistema e pode ser armazenado em qualquer pasta (ex.: ''~/Aplicativos'').  &lt;br /&gt;
Também é possível integrá-lo ao menu do sistema usando ferramentas como [https://appimagelauncher.com/ AppImageLauncher] ([https://github.com/TheAssassin/AppImageLauncher github do projeto]).&amp;lt;br&amp;gt;&lt;br /&gt;
Tem esse tutorial que pode ajudar a entender e utilizar o AppImageLaucher:&amp;lt;br&amp;gt;https://www.edivaldobrito.com.br/integrador-appimagelauncher-no-linux/ &amp;lt;br&amp;gt;e também o [https://github.com/TheAssassin/AppImageLauncher github do projeto] e o [https://github.com/TheAssassin/AppImageLauncher/wiki guia de instalação oficial]. Foi testado a ver~so .deb para ubuntu 18 (bionic) no ubuntu 20.04 e 24.04 e funcionou corretamente!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Backup de Discos ==&lt;br /&gt;
&lt;br /&gt;
oioi&lt;/div&gt;</summary>
		<author><name>Vitorortega</name></author>	</entry>

	</feed>