A tecla para desligar o computador via teclado é uma legítima idéia de jerico. Para desativá-la no KDE, deve-se editar /etc/kde3/kpowersaverc e mudar:
ActionOnPowerButton=SHUTDOWN
para:
ActionOnPowerButton=LOGOUT_DIALOG
2008-11-22
Desativando teclas de desligar o computador no teclado do KDE
2008-10-18
Compilando um kernel com suporte a memória ruim
Se um computador está com uma parte da memória ruim (detectado via memtest86+), pode-se compilar um kernel que seja capaz de isolar essa memória ruim e somente usar o resto, não sendo necessário trocar o pente de memória.
- Instalar os pacotes necessários: linux-image-2.6.26-1-686, linux-source-2.6.26, kernel-package, kernel-patch-badram, memtest86+:
apt-get install linux-image-2.6.26-1-686 linux-source-2.6.26 \
kernel-package kernel-patch-badram memtest86+ - Verificar se o patch de badram correspondente ao kernel sendo instalado (por exemplo BadRAM-2.6.26.1.patch.gz) existe no diretório /usr/src/kernel-patches/diffs/badram/:
ls /usr/src/kernel-patches/diffs/badram
Caso contrário, baixar e aplicar o patch para suporte a BadRAM de http://rick.vanrein.org/linux/badram/download.html - Executar make-kpkg no diretório fonte:
cd /usr/src
sudo tar -xjf linux-source-2.6.26.tar.bz2
cd /usr/src/linux-source-2.6.26
sudo cp /boot/config-2.6.26-1-686 .config
sudo make-kpkg --revision 1.Bello --initrd --added-patches badram binary-arch
Work around bad spots in RAM (BADRAM) [Y/n/?] (NEW) Y - Instalar o novo kernel e headers recém criados:
sudo dpkg -i /usr/src/linux-image-2.6.26_1.Bello_i386.deb
sudo dpkg -i /usr/src/linux-headers-2.6.26_1.Bello_i386.deb - Modificar /etc/lilo.conf para conter as linhas:
default=Badram_2.6.26
image=/boot/vmlinuz-2.6.26
label=Badram_2.6.26
initrd=/boot/initrd.img-2.6.26 append="badram=0x141ab2ac,0xfffffffc,0x0c863094,0xfffffffc,0x20bf1b34,0xfffffffc,0x22101c94,0xfa501ffc,0x2799ded4,0xfffffffc"
optional
restricted - Executar Lilo:
sudo lilo
2008-08-12
Usando o Dosemu
O Dosemu é um emulador DOS para Linux. Para instalá-lo, deve-se usar:
sudo apt-get install dosemuArquivos de configuração:
- /etc/dosemu/dosemu.users: define quais usuários podem fazer o quê (ver /usr/share/doc/dosemu/README-tech.txt.gz#2.1)
- /etc/dosemu/global.conf
- /etc/dosemu/dosemu.conf
- ~/.dosemurc
- /etc/dosemu/freedos/autoexec.bat
- /etc/dosemu/freedos/config.sys
- ~/.dosemurc
2008-07-06
DVD9 para DVD5: Coisas que podem dar errado
No processo de converter DVD9 em DVD5, algumas coisas podem não funcionar direito. Eis uma lista de problemas encontrados e como resolvê-los:
- Um arquivo de áudio (AC3) está corrompido: O arquivo no formato AC3 é composto por uma série de frames que começam com os bytes [0b 77]. Às vezes, é necessário eliminar o lixo que aparece antes do primeiro frame. Para isso, deve-se determinar a posição do primeiro byte válido (o primeiro 0b seguido por 77 do primeiro frame) e eliminar o que vem antes. Uma maneira é:
inicial=`hexdump -e "\"%_ad \" 1/1 \"%02x\n\"" ARQ.ac3 \
| awk '/ 77$/ {if (OK==1) print $1}; {OK=0}; / 0b$/ {OK=1}' \
| head -1`
tail -c +$inicial ARQ.ac3 >arqtemp.ac3
mv arqtemp.ac3 ARQ.ac3 - As legendas estão transparentes: às vezes os arquivos PNG contendo as legendas podem estar com o texto semi-transparente. Neste caso, é necessário converter cada um dos PNGs, eliminando a transparência do texto (mas não do fundo):
for i in DIR/sub*.png; do
convert $i -channel Alpha -level 99%,100% arqtemp.png
mv arqtemp.png $i
done - Preciso eliminar uma parte do video: Às vezes, pode ser desejável eliminar parte de uma trilha. Essa parte pode estar no início, meio ou fim. Segue a seqüência de passos necessária para eliminar um pedaço no início:
- Extrair os canais (vídeo, áudio e legendas)
- Eliminar os primeiros DELTA segundos do canal de vídeo:
ffmpeg -i ARQ.m2v -ss DELTA -vcodec copy arqtemp.m2v
mv arqtemp.m2v ARQ.m2v - Eliminar os primeiros DELTA segundos dos canais de áudio:
ffmpeg -i ARQ.ac3 -ss DELTA -acodec copy arqtemp.ac3
mv arqtemp.ac3 ARQ.ac3 - Modificar o tempo das legendas em DIR/sub.xml:
delta=DELTA
cat DIR/sub.xml | perl -e '
while (<stdin>) {
if (!/start=.*end=/) {
print($_);
} else {
$s = $_;
$s =~ s/.* start="([0-9:.]*)".*/$1/;
@s = split(/:/, $s);
$s = $s[0] * 3600 + $s[1] * 60 + $s[2] - '$delta';
$s = sprintf("%02d:%02d:%05.2f", $s / 3600,
($s % 3600) / 60, 0.0 + $s - int($s / 60) * 60);
$e = $_;
$e =~ s/.* end="([0-9:.]*)".*/$1/;
@e = split(/:/, $e);
$e = $e[0] * 3600 + $e[1] * 60 + $e[2] - '$delta';
$e = sprintf("%02d:%02d:%05.2f", $e / 3600,
($e % 3600) / 60, 0.0 + $e - int($e / 60) * 60);
$l = $_;
$l =~ s/start="[0-9:.]*"/start="$s"/;
$l =~ s/end="[0-9:.]*"/end="$e"/;
print ($l);
}
}' \
>arqtemp.xml
mv arqtemp.xml DIR/sub.xml - Modificar o tempo dos capítulos em dvd.xml.
- As cores da legenda estão erradas: O problema é na definição de cores do arquivo palette.rgb. Para gerar um arquivo que produza legendas com as cores certas, deve-se primeiro gerar um com as cores erradas, identificar a posição de cada cor e depois substituir a cor no arquivo palette.rgb pela cor correta:
- Gerar um arquivo palette.rgb com o seguinte conteúdo:
ff0000
ff8000
ffc000
ffff00
c0ff00
00ff00
00ffc0
00ffff
00c0ff
0080ff
0000ff
8000ff
c000ff
ff00ff
ff00c0
ff0080 - Extrair as legendas de um canal da forma usual:
mkdir -p tNsS
spuunmux -o tNsS/sub -s S -p palette.rgb tN.mpg - Abrir um dos arquivos PNG gerados (por exemplo, tNsS/sub00000.png) e verificar a cor das letras, do contorno e, se houver, dos pontos de transição entre as letras e o contorno.
- Substituir o arquivo palette.rgb por um que tenha as seguintes cores:
- ffc000 no lugar da cor das letras
- 000000 no lugar da cor do contorno das letras
- 806000 no lugar da cor dos pontos de transição entre as letras e o contorno, se houver
- 00ff00 em todas as outras posições
- ffc000 no lugar da cor das letras
- Extrair as legendas de todos os canais desejados normalmente.
- Abrir um dos novos arquivos PNG gerados (por exemplo, tNsS/sub00000.png) e verificar se as cores estão corretas. Se não estiverem, alguma coisa foi feita errada (ver também observação sobre legendas transparentes).
- Gerar um arquivo palette.rgb com o seguinte conteúdo:
2008-07-05
Passos para reduzir DVD9 para DVD5
Obs: A informação aqui postada não deve ser utilizada para fazer cópias não autorizadas de material protegido.
Para criar uma imagem ISO que caiba em 4.7GB a partir de uma imagem ISO maior, pode-se proceder da seguinte forma:
- Decidir quais trilhas do DVD devem ser copiadas e, para cada uma delas, quais canais de áudio e quais canais de legenda e em qual ordem (por exemplo: audio 1 em inglês, audio 2 em português; legenda 1 em português, legenda 2 em inglês). Defina também a lista de capítulos de cada trilha. Alguns programas para auxiliar na decisão:
lsdvd -x ARQ.iso
tcprobe -i ARQ.iso -T N -H 100 - Extrair as trilhas selecionadas da imagem ISO para arquivos MPEG:
tccat -i ARQ.iso -t dvd -T N,-1 -L >tN.mpg
- Extrair o canal de vídeo de cada trilha:
tcextract -i tN.mpg -x mpeg2 -t vob >tN.m2v
- Extrair os canais de áudio de cada trilha:
tcextract -i tN.mpg -x ac3 -t vob -a A >tNaA.ac3
- Criar um arquivo de paleta para extrair as legendas. Um que geralmente funciona é:
cat >palette.rgb <<EOF
000000
000000
ffc000
808080
808080
808080
808080
808080
806000
ffc000
808080
808080
808080
ffc000
000000
808080
EOF - Extrair as legendas (subtítulos) de cada trilha para arquivos PNG dentro de um subdiretório:
mkdir -p tNsS
spuunmux -o tNsS/sub -s S -p palette.rgb tN.mpg - Se necessário, reduzir o bitrate β dos canais de áudio (β=192 parece adequado):
ffmpeg -v 0 -y -i tNaA.ac3 -f ac3 -acodec ac3 -ab βk nNaA.ac3
- Calcular o fator de redução Φ necessário para os canais de vídeo:
Φ = ΣVi / (4500000000 - ΣAij - ΣSijk)
onde:Vi = Tamanho do arquivo do canal de vídeo (m2v) da trilha i.
Aij = Tamanho do arquivo do canal de áudio (ac3) j da trilha i (depois de reduzir o bitrate).
Sijk = Tamanho do arquivo (png) k das legendas j da trilha i. - Se o fator de redução for maior que 1, reduzir o tamanho dos canais de vídeo:
tcrequant -f Φ -d 0 -i tN.m2v -o nN.m2v
- Para cada trilha, determinar o deslocamento Δ em segundos entre o canal de vídeo e os canais de áudio, usando a informação gerada por:
tcprobe -i tN.mpg
O deslocamento será:Δ = PTSv - PTSa
onde:PTSv = PTS do canal de vídeo
PTSa = PTS dos canais de áudio (devem ser aproximadamente iguais) - Combinar o canal de vídeo e os canais de áudio (0, 1, etc.) de cada título:
mplex -f 8 -S 0 -o nN.mpg -O Δs nN.m2v nNa0.ac3 nNa1.ac3 ...
- Adicionar cada canal de legendas (0, 1, etc.) a cada título:
mv nN.mpg xN.mpg
spumux -m dvd -s 0 tNs0/sub.xml <xN.mpg >nN.mpg
mv nN.mpg xN.mpg
spumux -m dvd -s 1 tNs1/sub.xml <xN.mpg >nN.mpg
... - Obter a informação necessária sobre o vídeo para o arquivo XML (formato, aspecto, widescreen, resolução) de uma das seguintes formas:
tcprobe -i ARQ.iso -T N 2>&1 | grep video
tcprobe -i nN.mpg 2>&1 - Criar um arquivo XML contendo a descrição de como deve ser gerado o DVD. O exemplo abaixo gera uma estrutura de DVD no diretório DIR. Ao iniciar, são selecionados o primeiro canal de áudio (inglês) e o primeiro canal de legenda (português), e a primeira trilha inicia automaticamente. O vídeo está em formato NTSC 16:9 (quando visto em 4:3, coloca barras horizontais) e resolução 720x480. Há dois canais de áudio (inglês e português) e dois canais de legenda (português e inglês). Há três trilhas, armazenadas nos arquivos n1.mpg, n2.mpg e n3.mpg, com capítulos a cada meia hora (na primeira trilha) ou a cada 10 minutos (nas demais). Ao terminar uma trilha, a próxima inicia automaticamente, voltando ao início no final.
<dvdauthor dest="DIR">
<vmgm>
<fpc>{ audio=0; subtitle=64; jump title 1; }</fpc>
</vmgm>
<titleset>
<titles>
<video format="ntsc" aspect="16:9" widescreen="nopanscan" resolution="720x480" />
<audio lang="en" />
<audio lang="pt" />
<subpicture lang="pt" />
<subpicture lang="en" />
<pgc>
<vob file="n1.mpg" chapters="00:00:00.000,00:30:00.000,01:00:00.000,01:30:00.000" />
<post>jump title 2;</post>
</pgc>
<pgc>
<vob file="n2.mpg" chapters="00:00:00.000,00:10:00.000,00:20:00.000" />
<post>jump title 3;</post>
</pgc>
<pgc>
<vob file="n3.mpg" chapters="00:00:00.000,00:10:00.000,00:20:00.000,00:30:00.000" />
<post>jump title 1;</post>
</pgc></titles>
</titleset>
</dvdauthor> - Criar a estrutura de DVD usando o arquivo XML acima:
dvdauthor -x dvd.xml
- Criar a nova imagem ISO do DVD (usar o título de lsdvd ou definir um novo):
genisoimage -dvd-video -V "TITULO" -o ARQNOVO.iso DIR/
2008-03-31
Formato MPEG-1
O Formato MPEG-1 é muito parecido com o MPEG-2. Segue a interpretação dos bits:
MPEG-1 PACK:
- 0..3: 00 00 01 ba
- 4..8: 0010SSS1 SSSSSSSS SSSSSSS1 SSSSSSSS SSSSSSS1
- 9..11: 1RRRRRRR RRRRRRRR RRRRRRR1
R = Multiplex Rate, 22 bits, unidades de 50 bits por segundo (> 0)
SYSTEM HEADER:
- 0..3: 00 00 01 bb
END CODE:
- 0..3: 00 00 01 b9
Fonte: http://www.andrewduncan.ws/MPEG/MPEG-1_Picts.html
http://neuron2.net/library/mpeg2/iso13818-1.pdf
(Obs: No MPEG-1 Pack, a multiplex rate não é x400, e sim x50 bits/s)
2008-03-21
Formato MPEG-2
Os arquivos MPEG-2 têm um formato que não é muito fácil de achar na Internet. Cada arquivo é formado por uma série de packs, de tipos diversos. Cada pack tem um header, seguido do seu conteúdo. O formato dos packs é o seguinte:
Pack header:
- 0..3: 00 00 01 ba
- 4..9: 01SSS1SS SSSSSSSS SSSSS1SS SSSSSSSS SSSSS1EE EEEEEEE1
- 10..12: MMMMMMMM MMMMMMMM MMMMMM11
- 13: xxxxxLLL
- ?: ff ...
E = SCR extension, 9 bits, 27 MHz (0-299, somado a SCR)
M = Program Mux Rate, 22 bits, unidades de 50 bits por segundo (> 0)
x = Reservado, 5 bits
L = Pack stuffing length, 3 bits: Número de bytes de enchimento (ff) que seguem
System header:
- 0..3: 00 00 01 bb
- 4..5: HHHHHHHH HHHHHHHH
- 6..8: 1RRRRRRR RRRRRRRR RRRRRRR1
- 9: AAAAAAFC
- 10: LK1VVVVV
- 11: Pxxxxxxx
- ?: NLoop
R = Rate bound, 22 bits
A = Audio bound, 6 bits
F = Fixed flag
C = CSPS flag
L = Audio lock flag
K = Video lock flag
V = Video bound, 5 bits
P = Packet rate restriction flag
x = Reservado, 7 bits
NLoop:
- 0: IIIIIIII
- 1..2: 11SZZZZZ ZZZZZZZZ
- 3: IIIIIIII
- 4..5: 11SZZZZZ ZZZZZZZZ
- ...
S = P-STD buffer bound scale
Z = P-STD buffer size bound
http://www.ietf.org/mail-archive/web/avt/current/msg01807.html
http://www.cs.ucl.ac.uk/teaching/GZ05/10-system-streams.pdf
http://www.codeproject.com/KB/audio-video/program_stream_analyzer.aspx
http://osdir.com/ml/video.dvbcut.user/2006-01/msg00006.html
http://dvd.sourceforge.net/dvdinfo/index.html
http://en.wikipedia.org/wiki/Program_Stream
http://www.codeproject.com/KB/audio-video/mpegaudioinfo.aspx
2008-02-27
Incluindo mapas do Google numa página
Os mapas do google podem ser incluidos numa página. O primeiro passo é pegar uma chave em http://code.google.com/apis/maps/signup.html, que vale para um diretório de um site e seus subdiretórios. Por exemplo, a chave para http://flaviobello.blogspot.com/ é:
ABQIAAAAw_p9eDbkwTneuB0--hXZcBS7fJfltfKGu7qGU5ECdwSrRGff1BQWDRxsX2R-gEP5DLDtVfsSpJ_Deg
Depois, deve-se incluir um mapa numa página. Há várias formas de fazer isso. Um mapa estático pode ser incluído de forma bastante simples:
- Imagem estática:
<img width="400" height="300"
src="http://maps.google.com/staticmap?
center=-29.17,-51.52&
zoom=14&
size=300x200&
key=ABQIAAAAw_p9eDbkwTneuB0--hXZcBS7fJfltfKGu7qGU5ECdwSrRGff1BQWDRxsX2R-gEP5DLDtVfsSpJ_Deg">
Opções:- Tipo de mapa (padrão=roadmap)
maptype=mobile
- Marcadores (TamanhoCorAlfa={, mid, small, tiny}{black, brown, green, purple, yellow, blue, gray, orange, red, white}{, a..z})
markers=-29.174656,-51.521947,greenp
|-29.164749,-51.525981,bluee
|-29.17,-51.526,yellow
|-29.17,-51.524,midyellow
|-29.17,-51.522,smallyellow
|-29.17,-51.520,tinyyellow - Caminhos
path=rgba:0x0000ff80,weight:5
|-29.174656,-51.521947
|-29.17,-51.526
|-29.17,-51.520
|-29.164749,-51.525981 - Localização
hl=cn
- Tipo de mapa (padrão=roadmap)
- Iframe embutido:
<iframe width="400" height="300"
src="http://maps.google.com/?
ll=-29.17,-51.52&
z=14&
t=h&
output=embed&
ie=UTF8&
s=AARTsJqzARj-Z8VnW5pkPMLMmZbqrJcYpw"></iframe>
2008-02-24
Configuração do roteador wireless D-Link DI-524
Para reiniciar o roteador D-Link DI-524, pressionar o botão de reset (ao lado da entrada de força) por 10 segundos e depois esperar até a luz WLAN parar de piscar. Depois, ligar um computador diretamente a ele e acessar http://192.168.0.1/, com login admin e senha em branco.
Para uma configuração rápida, clicar em Run Wizard (na aba Home/Wizard), executando os passos:
- Set password: Não esquecer da senha nova!
- Choose time zone: (GMT-03:00) Buenos Aires, Georgetown, Brasilia
- Select internet connection type (WAN): PPP over Ethernet
- Set PPPoE: Username e senha do provedor
- Set wireless connection: Network ID (SSID)=ZBF; Channel=6; Security=WPA-PSK; Preshare key=Outra senha!
- Aguardar 20 segundos e depois: Restart
- Home/Wireless: Wireless=Enabled; Network ID(SSID)=ZBF; Channel=6; Security: WPA-PSK/WPA2-PSK; Preshare Key=*SENHA-WIRELESS*
- Home/WAN: WAN Settings=PPPoE; PPP over Ethernet=Dynamic PPPoE; Username=*LOGIN-PROVEDOR*; Password=*SENHA-PROVEDOR*; Service name=(em branco); Maximum idle time=5; MTU=1452; Connect mode select=Always-on; Do not change the TTL value=enabled; IGMP=enabled
- Home/LAN: IP Address=192.168.0.1; Subnet mask=255.255.255.0; Domain Name=(em branco)
- Home/DHCP: DHCP Server=Enabled; Starting IP address=192.168.0.100; Ending IP Address=192.168.0.199; Lease time=1 week; Static DHCP=(adicionar IPs de computadores conhecidos, começando por 51)
2008-02-23
Rede wireless no HP Pavilion dv1000 (dv1217us) usando Debian Linux
O dispositivo wireless é o Intel PRO/Wireless 2200BG:
$ lspci
02:06.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)
O módulo a ser carregado é o ipw2200. O site oficial do driver está em http://ipw2200.sourceforge.net/. O kernel 2.6.22 (e acima, suponho) já vem com o módulo. Entretando, os arquivos de firmware não vêm com o Debian. Na primeira tentativa, ocorreram os seguintes erros:
$ sudo modprobe ipw2200
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0kmq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ACPI: PCI Interrupt 0000:02:06.0[A] -> GSI 18 (level, low) -> IRQ 20
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
ipw2200: Unable to load firmware: -2
ipw2200: failed to register network device
ACPI: PCI interrupt for device 0000:02:06.0 disabled
ipw2200: probe of 0000:02:06.0 failed with error -5
Estavam faltando os arquivos de firmware. O arquivo com o firmware ipw2200-fw-3.0.tgz pode ser baixados do site do driver, aqui, após aceitar a licença da Intel. O conteúdo do arquivo deve ser descompactado no diretório /lib/firmware:
$ sudo tar -xvzf ipw2200-fw-3.0.tgz -C /lib/firmware --strip 1
ipw2200-fw-3.0/ipw2200-bss.fw
ipw2200-fw-3.0/ipw2200-sniffer.fw
ipw2200-fw-3.0/LICENSE.ipw2200-fw
ipw2200-fw-3.0/ipw2200-ibss.fw
Após a instalação do firmware, o módulo ipw2000 passou a funcionar:
$ sudo modprobe -r ipw2200
ieee80211_crypt: unregistered algorithm 'NULL'
$ sudo modprobe ipw2200 led=1
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, git-1.1.13
ieee80211: Copyright (C) 2004-2005 Intel Corporation <jketreno@linux.intel.com>
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0kmq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
ACPI: PCI Interrupt 0000:02:06.0[A] -> GSI 18 (level, low) -> IRQ 20
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Detected geography ZZM (11 802.11bg channels, 0 802.11a channels)
udev: renamed network interface eth1 to eth2
Feito isso, a interface wireless deve ser configurada. Isso envolve a instalação dos pacotes wpasupplicant e wireless-tools:
$ sudo apt-get install wpasupplicant wireless-tools
A interface de rede deve ser configurada em /etc/network/interfaces:
auto eth2
iface eth2 inet dhcp
wpa-ssid "ZBF"
wpa-key-mgmt WPA-PSK
wpa-proto WPA2
wpa-pairwise CCMP
wpa-group CCMP
wpa-psk "*SENHA-WIRELESS*"
pre-up echo 1 > /sys/bus/pci/drivers/ipw2200/0000\:02\:06.0/led
A configuração acima usa o sistema WPA2-PSK, que é o mais seguro para uma rede caseira. Não funciona se o roteador wireless não estiver configurado da mesma forma. Se o roteador estiver configurado para WPA-PSK (mais antigo), retirar as linhas wpa-proto, wpa-pairwise e wpa-group.
A configuração correta pode ser verificada da seguinte forma:
$ sudo ifdown eth2
$ sudo ifup eth2
$ sudo iwconfig eth2
$ sudo iwlist eth2 wpakeys
$ sudo wpa_cli status