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