Optimizando seu SSD no Linux

Kingston-SSDNow-KC100

Existe muita documentação sobre o uso de HDs SSD no LINUX. Algumas são antigas e outras pouco detalhadas.
Bem pesquisei várias documentações em diversos sites e baseado nas que achei mais interessantes criei um script para ser usado no Debian. Este script foi testado no Debian 8 Jessie mas imagino que possa funcionar bem no Wheezy e também no Ubuntu e Linux Mint devido a semelhança destes sistemas.

#!/bin/bash
# edmarcos antonio de souza
# contato arroba edeg.com.br
# 20150704
# http://stackoverflow.com/questions/18596778/difference-between-using-chmod-ax-and-chmod-755
# http://unix.stackexchange.com/questions/37313/how-do-i-grep-for-multiple-patterns
# http://blog.neutrino.es/2013/howto-properly-activate-trim-for-your-ssd-on-linux-fstrim-lvm-and-dmcrypt/
# https://en.opensuse.org/SDB:SSD_performance
# https://wiki.freeswitch.org/wiki/SSD_Tuning_for_Linux
# https://wiki.archlinux.org/index.php/Solid_State_Drives

# fstrim -------------------------------
test -x /etc/cron.weekly/dofstrim || {
echo "#!/bin/sh
#
# To find which FS support trim, we check that DISC-MAX (discard max bytes)
# is great than zero. Check discard_max_bytes documentation at
# https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
#
# http://blog.neutrino.es/2013/howto-properly-activate-trim-for-your-ssd-on-linux-fstrim-lvm-and-dmcrypt/

for fs in \$(lsblk -o MOUNTPOINT,DISC-MAX,FSTYPE | grep -E '^/.* [1-9]+.* ' | awk '{print \$1}'); 
	do
	fstrim -v \"\$fs\"
	done" > /etc/cron.weekly/dofstrim

chmod a+x /etc/cron.weekly/dofstrim
}

# swappiness ---------------------------
echo "# https://en.opensuse.org/SDB:SSD_performance

vm.swappiness=1
vm.vfs_cache_pressure=50" > /etc/sysctl.d/30-ssd.conf 

# scheduler ----------------------------
# https://wiki.archlinux.org/index.php/Solid_State_Drives

test -f /etc/udev/rules.d/60-scheduler.rules || {
echo "# set deadline scheduler for non-rotating disks
ACTION==\"add|change\", KERNEL==\"sd[a-z]\", ATTR{queue/rotational}==\"0\", ATTR{queue/scheduler}=\"deadline\"

# set cfq scheduler for rotating disks
ACTION==\"add|change\", KERNEL==\"sd[a-z]\", ATTR{queue/rotational}==\"1\", ATTR{queue/scheduler}=\"cfq\"" > /etc/udev/rules.d/60-scheduler.rules

}

# fstab --------------------------------

FSTAB=/etc/fstab
IFS_CURRENT=$IFS
IFS=$(echo -en "\n\b")

# noatime
for i in `cat $FSTAB | grep -w "ext[3-4]" | grep -v "noatime"`
	do
	OPTIONS=$(echo $i | awk {'print $4'})
	LINE=$(echo $i | sed s/$OPTIONS/$OPTIONS,noatime/g)
	sed -i "s|$i|$LINE|" $FSTAB
	done

# commit=600
for i in `cat $FSTAB | grep -w "ext[3-4]" | grep -v "commit=600"`
	do
	OPTIONS=$(echo $i | awk {'print $4'})
	LINE=$(echo $i | sed s/$OPTIONS/$OPTIONS,commit=600/g)
	sed -i "s|$i|$LINE|" $FSTAB
	done

IFS=$IFS_CURRENT

Abaixo o link para o script.
Faça o download do mesmo renomeie a extensão .txt para .sh , de permissão de execução para o mesmo e execute.
task-ssd

Instalando java pelo site da oracle

tux-java-images

Recentemente o java tem se tornando uma grande dor de cabeça tanto no windows quanto no linux.
Manter uma versão desatualizada impede o funcionamento de diversas aplicações on-line principalmente o sistemas da Caixa Econômica Federal. E as versões disponibilizadas pelos repositórios das distribuições nem sempre são devidamente atualizadas.
O código abaixo automatiza a instalação do java baixado diretamente do site da oracle já configurando devidamente os parâmetros necessários para o bom funcionamento das aplicações.

Este código foi testado em distribuições baseadas no Debian.

Antes de começar desinstale todos os pacotes “.deb” que por ventura tenha vindo a instalar.

Escolha a versão Linux ou Linux64 conforme a versão do seu Linux.
Obs: Não baixe as versões “RPM”!

#!/bin/bash
# edmarcos antonio de souza
# 20111109
# 20130102
# 20130318
# 20130402
# 20130529
# 20130230
# 20130807
# 20140112
# 20140121
# 20140129

# http://www.java.com/en/download/help/linux_install.xml
# http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR
# http://wiki.debian.org/JavaPackage
# http://www.crazysquirrel.com/computing/debian/java.jspx
# http://forums.debian.net/viewtopic.php?f=16&t=77140

# download do java
# chmod 755 pacote-java.bin ( no rpm )
# ./pacote-java.bin
# mv pasta_java /usr/local/
# ln -sf /usr/local/pasta_java /usr/local/java

# update-alternatives --install /usr/bin/java java /usr/local/java/bin/java 1
# update-alternatives --install /usr/bin/javaws javaws /usr/local/java/bin/javaws 1

COLOR_BLUE="\033[0;34m"
COLOR_LESS="\033[0m"

ARCH=`arch`

case $ARCH in
	i686|i486)
	# 32 bits ----------------------
	PLUGIN()
	{
	test ! -d  /usr/lib/mozilla || { 
		ln -sf /usr/local/java/lib/i386/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.so
		}
	}
	FILE="Linux"
	;;

	x86_64)
	# 64 bits ----------------------
	PLUGIN()
	{
	test ! -d /usr/lib/mozilla || {
		ln -sf /usr/local/java/lib/amd64/libnpjp2.so /usr/lib/mozilla/plugins/libnpjp2.so
		}
	}
	FILE="Linux x64"
	;;
esac

clear
echo
echo "Acesse:"
echo -e "${COLOR_BLUE}http://www.java.com/pt_BR/download/linux_manual.jsp?locale=pt_BR${COLOR_LESS}"
echo "Selecione o arquivo $FILE e copie o link com o botão direito do mouse."
echo "Obs: Não selecione o arquivo $FILE RPM !"
echo "Cole o link selecionado do download do java neste terminal..."
echo
read LINK
echo

wget -c $LINK -O /tmp/java.tar.gz

# descompacta o java -------------------
tar -zxvf /tmp/java.tar.gz -C /usr/local/

# ajustas as permissoes do java --------
chown -R root:root /usr/local/`tar -ztvf /tmp/java.tar.gz | awk {'print $6'} | cut -d / -f1 | uniq`

# cria o link simbolico java -----------
test -L /usr/local/java && { 
	rm -vf /usr/local/java
	}

test -d /usr/local/java && { 
	mv /usr/local/java /usr/local/java-`date +%Y%m%d`.old
	}

cd /usr/local/ 
ln -sf `tar -ztvf /tmp/java.tar.gz | awk {'print $6'} | cut -d / -f1 | uniq`/ java

# set java como padrão -----------------
update-alternatives --install /usr/bin/java 	java 	 /usr/local/java/bin/java 1
update-alternatives --install /usr/bin/javaws 	javaws 	 /usr/local/java/bin/javaws 1
update-alternatives --install /usr/bin/jcontrol	jcontrol /usr/local/java/bin/jcontrol 1

update-alternatives --set java 	   /usr/local/java/bin/java
update-alternatives --set javaws   /usr/local/java/bin/javaws
update-alternatives --set jcontrol /usr/local/java/bin/jcontrol

# habilita plugin navegador ----------------------------------------------------
PLUGIN

Baixe o arquivo abaixo e renomeie o mesmo para .sh

mv task-sun_java.sh_.txt task-sun_java.sh

De permissão de execução para o mesmo.

chmod 755 task-sun_java.sh

Execute o mesmo como root.

./task-sun_java.sh

Baixe o arquivo aqui:
task-sun_java

Instalando Firefox no Debian

mozicon128Quem é usuário Debian sabe que o Iceweasel é o mesmo Firefox apenas com uma roupagem diferente.
Mas quando se instala um Debian para uma outra pessoa usar, por mais que se explique para a mesma que é a mesma coisa tanto um como outro, mesmo assim elas muitas vezes não entendem e ainda ficam pedindo se tem como instalar o Firefox.

Neste post vou mostrar como instalar o Firefox de maneira rápida e prática apenas executando o script abaixo.

Além de instalar e configurar o Firefox, quando se clicar no atalho do Iceweasel o mesmo vai abrir o Firefox instalado por você.

Para proceder com a instalação baixe o script no link abaixo.
task-firefox.txt
Dentro de um terminal na pasta aonde o arquivo foi baixado e como usuário root renomeie o mesmo para .sh com o comando:

mv task-firefox.txt task-firefox.sh

também de permissão de execução com o comando:

chmod 755 task-firefox.sh

e execute o mesmo em sua máquina como administrador da conta root dentro do ambiente gráfico de sua preferência.

#!/bin/bash
# edmarcos antonio de souza
# 20131012
# Referencias:
# http://www.linuxfromscratch.org/blfs/view/svn/xsoft/firefox.html
# http://www.vivaolinux.com.br/dica/Shell-script-com-texto-colorido

COLOR_BLUE="\033[0;34m"
COLOR_LESS="\033[0m"
SERVER="http://ftp.mozilla.org"
FILE_64="pub/mozilla.org/firefox/releases/latest/linux-x86_64/pt-BR/"
FILE_32="pub/mozilla.org/firefox/releases/latest/linux-i686/pt-BR/"
ARCH=`arch`

if [ `id -u` != 0 ] ; then
	clear
	echo "Voce deve ser root para prosseguir..."
	exit 1
fi

INSTALL()
{
clear
echo "----------------------------------------"
echo -e "Abra o endereco: ${COLOR_BLUE}$SERVER/$FILE${COLOR_LESS}\n"
echo -e "Na pagina selecione copie o link do arquivo para download...\n"
echo -n "Cole o link selecionado aqui: "
read LINK
if [ ! -z $LINK ] ; then
	wget -c $LINK -O /usr/local/src/`basename $LINK`
	tar -jxvf /usr/local/src/`basename $LINK` -C /opt
fi

update-alternatives --install /usr/bin/firefox.real firefox /opt/firefox/firefox 100
update-alternatives --install /usr/bin/iceweasel iceweasel /opt/firefox/firefox 100
update-alternatives --install /usr/bin/iceweasel iceweasel /usr/lib/iceweasel 100
update-alternatives --set firefox /opt/firefox/firefox
update-alternatives --set iceweasel /opt/firefox/firefox

echo "[Desktop Entry]
Encoding=UTF-8
Name=Firefox Web Browser
Comment=Browse the World Wide Web
GenericName=Web Browser
Exec=firefox %u
Terminal=false
Type=Application
Icon=/opt/firefox/browser/icons/mozicon128.png
Categories=GNOME;GTK;Network;WebBrowser;
MimeType=application/xhtml+xml;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true" > /usr/share/applications/firefox.desktop

}

case "$ARCH" in
	x86_64)
	FILE=$FILE_64
	INSTALL
	;;

	i686)
	FILE=$FILE_32
	INSTALL
	;;

	*)
	echo "Versao nao suportada..."
	;;

esac

Fazendo um faxina no Linux no estilo cclean

Apesar de no Linux arquivos de cache e temporários não prejudicar o desempenho no sistema assim como acontece no Windows.
Usuários do Windows quase sempre tem que recorrer a programas como o cclean para tentar melhorar um pouco o desempenho.

Para o Linux existe um programa parecido o bleachbit.
http://bleachbit.sourceforge.net/

O mesmo se encontra disponível para Debian, Ubuntu, Mint, e outros.

Mas em uma situação como de um servidor LTSP onde teremos muitos usuários, executar o mesmo usuário por usuário pode não ser muito prático.

Então resolvi criar o script abaixo. Em um cliente a execução do mesmo reduziu 40gb de arquivos.

Com certeza o mesmo pode ser melhorado em muito. Então assim que tiver nova versão publico a mesma.

Abaixo segue o script:

#!/bin/bash
# edmarcos antonio de souza
# 20130407
# uma versao cclean pra linux

for file in `find /home -maxdepth 1 -mindepth 1 -type d`
	do
	# trash (lixeira)
	test -d $file/.local/share/Trash/ && rm -vfr $file/.local/share/Trash/*
	# thumbnails
	test -d $file/.thumbnails && rm -vfr $file/.thumbnails/*
	# mozila-cache
	test -d $file/.mozilla/firefox/*/Cache && rm -vfr $file/.mozilla/firefox/*/Cache/*
	# chrome-cache
	test -d $file/.cache/google-chrome/Default/Cache && rm -vfr $file/.cache/google-chrome/Default/Cache/*
	#test -d "$file/.config/google-chrome/Default/Pepper Data" rm -vfr "$file/.config/google-chrome/Default/Pepper Data/*"
	rm -vfr $file/.cache/google-chrome/Default/old_Cache_*
	# pulse audio
	test -d $file/.pulse && rm -vfr $file/.pulse/*
	# .xsession-errors
	test -f $file/.xsession-errors.old && rm -f $file/.xsession-errors.old
	test -f $file/.xsession-errors && cat /dev/null > $file/.xsession-errors
	# amsn
	#test -d $file/.amsn/displaypic/cache && rm -v $file/.amsn/displaypic/cache/*
	# openoffice|broffice|broffice2|libreoffice
	test -d $file/.openoffice.org && rm -vfr $file/.openoffice.org
	test -d $file/.openoffice.org2 && rm -vfr $file/.openoffice.org2
	test -d $file/.broffice.org/*/user/gallery && rm -v $file/.broffice.org/*/user/gallery/*
	test -d $file/.config/libreoffice/*/user/gallery && rm -vfr $file/.config/libreoffice/*/user/gallery/*
	# compiz
	test -d $file/.compiz/session && rm -v $file/.compiz/session/*
	test -d $file/.compiz-1/session && rm -v $file/.compiz-1/session/*
	# gbas.so_u
	test -f $file/.?gbas.so_u && rm -v $file/.?gbas.so_u
	# adobe	
	test -d $file/.adobe && rm -vfr $file/.adobe/*
	# nautilus (obsoleto)
	test -d $file/.nautilus && rm -vfr $file/.nautilus
	# event-sound-cache.tdb	
	test -f $file/.cache/event-sound-cache.tdb.* && rm -v $file/.cache/event-sound-cache.tdb.*
	# nfs
	test -f $file/.nfs* && rm -v $file/.nfs*
	# gimp 2.4
	test -d $file/.gimp-2.4 && rm -vfr $file/.gimp-2.4
	# mplayer
	test -d $file/.mplayer && rm -vfr $file/.mplayer
	# macromedia
	test -d $file/.macromedia && rm -vfr $file/.macromedia
	done

Alterando o background padrão no Debian

O Debian Squeeze vem com uma imagem de fundo padrão o space-fun que na minha opinião não é a das mais bonitas.

Agora imagine que você tenha um servidor LTSP e deseja mudar automaticamente para todos usuários. Como fazer ? É isto que vou mostrar.

O Debian gerencia a desktop-background padrão usando o “update-alternatives”, então o que precisamos fazer é inserir nossa imagem para que o mesmo possa a passar a gerenciar esta imagem.

Supondo que você baixou uma imagem muito bonita que vamos chamar de beautiful-image.png. Você pode salvar esta imagem em qualquer lugar, mas de preferência salve em /usr/share/images.

Então execute o seguinte comando:

update-alternatives --install /usr/share/images/desktop-base/desktop-background desktop-background /usr/share/images/beautiful-image.png 40
update-alternatives --set desktop-background /usr/share/images/beautiful-image.png

Feito isto a sua nova imagem será a padrão para todos os usuários deste pc.

Recuperando o grub

Muitas vezes podemos ter algum problema na instalação  e o grub não ser instalado corretamente, outras vezes quando usamos o sistema em dual-boot perdemos o grub ao reinstalar o windows.

Então vamos ver como reinstalar seu grub usando um Live-Cd do Ubuntu.

1- Comece dando boot pelo Live-Cd no modo experimetar apenas. Após o live carregar abra o terminal do gnome e invoque poderes de super usuário usando o comando “sudo su”.

2 – Agora vamos identificar nosso HD e em que partição está a “raiz”  do Linux, para isto digite

fdisk -l

Este comando irá retornar quantos discos tivermos e suas partições. Para nossa simulção vamos considerar que temos 2 discos que seria o “sda” e o “sdb”, e nosso Linux está instalado no sdb5.

3 – Bem sabemos então que o Linux está em sdb5 e agora presisamos acessar o esta partição no modo “chroot” então vamos montar a mesma com o comando “mount /dev/sdb5 /mnt” e chroot  /mnt. Pronto estamos agora no seu Linux instalado.

4 – Abra outra aba no terminal do gnome e digite:

ls  -l /dev/sda /dev/sdb5

você  verá algo como isto:

brw-rw—T 1 root disk 8, 0 Mai 26 07:56 /dev/sda

brw-rw—T 1 root disk 8, 16 Mai 26 07:56 /dev/sdb5

repare que ressaltei os números 8 e 0 para sda e 8 e 16 para sdb5. Anote os números obtidos no seu caso.  Volte agora para aba onde está no modo chroot e digite o seguintes comandos

mknod /dev/sda b 8 0
mknod /dev/sdb5 b 8 16

5 – Considerando que sua máquina dá boot pelo /dev/sda digite no ambiente chroot:

grub-install /dev/sda

Pronto grub reinstalado. Digite exit para sair o modo chroot e pode reinciar o live e deixar carregar o sistema pelo seu HD.

Listando o tamanho dos arquivos de um diretório inclusive os ocultos.

Escrevo este post baseado em problemas que me afligem a creio que afligem a muito mais pessoas.

É quando nosso diretório “home”está muito cheio e ai usamos o comando du -msc * para contar e vemos que ele não mostrou as pastas ocultas. E as pastas da lixeira, evolution ficam em diretórios ocultos dentro da “home”.

Bem a primeiro momento vem o pensamento. Os diretórios ocultos no Linux começam com “.” então basta fazer um “du .*”, mas para sua triste surpresa isto não funciona.

Se quizer listar apenas o tamanho dos diretórios ocultos use:

du -msc \.*[!..]

mas se quizer listar os diretórios ocultos e mais os normais use:

du -msc \.*[!..] *

Ext4 x NTFS

Para quem resolveu adotar o Linux muitas vezes tem que ficar justificando para os outros o motivo de tal escolha, visto que para muitos dos mortais comuns o Linux ainda é considerado ruim de usar. Ai temos que ficar explicando que o Linux não pega vírus que é mais seguro e mais rápido que o Windows, etc, etc.

Bem neste artigo venho reproduzir os testes feitos pelo site Phoronix onde foram testados os sistemas de arquivos Ext4 que agora é padrão na maioria das distribuições Linux e o NTFS que é padrão do Windows desde o Windows XP.

Nos testes foram usados o Ubuntu 10.04 LTS e o Windows Seven 64.

O primeiro teste analisa o desempenho usando IOzone em uma gravação de 4GB.

Em média, o Ubuntu 10.04 no topo da EXT4 do sistema de arquivos com o kernel 2.6.32 do Linux foi de 26,5% mais rápido que o Windows 7 x64 com o seu sistema de arquivos NTFS.

Já no teste de leitura a diferenção não foi tão grande, mas ainda assim o Ext4 se saiu melhor.


Vale ressaltar que um dos desafios do Ext4 é ser um sistema de arquivos seguro, nem que o custo seja o desempenho, e como podemos ver ele ainda assim é mais rápido do seu concorrente do mundo Windows.

Para ver reportagem completa e original acesse:

http://www.phoronix.com/scan.php?page=news_item&px=ODIxNw

 

Resolvendo problema de ícones que não aparecem no menu gnome no Debian

Tenho notado que algumas aplicações tais como google chrome e outras que se instalam no diretório /opt muitas vezes seus ícones some dos menus.

Este problema aconteceu com meu amigo João. Para resolver tal problema eu fiz assim:


cd /usr/share/applications/
find /opt/ -iname *.desktop -exec ln -sf {} ./ \;

Espero que seja útil para muita gente.