Criar um pendrive de instalação do windows a partir do linux

Depois que meu notebook queimou, fui obrigado a voltar a usar o desktop. máquina essa que estava dedicada pra patroa, com windows instalado e talz.

Depois de redimensionar as partições e fazer a instalação do linux, vou testar o boot no windows (afinal , não quero dormir no sofá) e me deparo com essa tela:

Com windows original, o azul é mais azul

Provavelmente o gparted destruiu o setor de boot do windows quando redimensionou a partição.

Até aí tudo bem, é fácil recuperar com um cd de instalação… porém:
– Meu drive de CD não funciona a muito tempo
– Não tenho outra máquina com windows pra gravar a iso num pendrive

Depois de uma bela fuçada na internet descobri um utilitário chamado woeusb que resolveu essa questão.

Pra instalar em sistemas derivados do ubuntu, é só adicionar esse ppa e instalar via APT

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update
sudo apt install woeusb

Depois de instalado, só abrir o programa, escolher o pendrive e a imagem (não esqueça de formatar o pendrive em ntfs antes)

A instalação demora uns 15 minutos, tem que ser paciente! =)

Mensagem exibida ao concluir o processo:

Depois disso, foi só bootar com o pendrive e seguir com os procedimentos usuais (instalação, recuperação, etc)

 

Controle de cache com PHP

Para nunca fazer cache de uma página

$ts = gmdate("D, d M Y H:i:s") . " GMT";
header("Expires: $ts");
header("Last-Modified: $ts");
header("Pragma: no-cache");
header("Cache-Control: no-cache, must-revalidate");

Para fazer cache de 1 hora (3600 segundos)

$seconds_to_cache = 3600;
$ts = gmdate("D, d M Y H:i:s", time() + $seconds_to_cache) . " GMT";
header("Expires: $ts");
header("Pragma: cache");
header("Cache-Control: max-age=$seconds_to_cache");

 

Removendo aplicações padrões no windows 10

O windows 10 vem carregado de bloatware, que não são usados pela maioria dos usuários.

Infelizmente não é possível removê-los através interface gráfica, então temos que recorrer ao powershell pra isso.

Nota: É necessário acessar o powershell como administrador, então é só abrir o menu “iniciar” digitar “powershell”, clicar com o botão direito e selecionar “Executar como administrador”

 

Remover 3D Builder:

Get-AppxPackage *3dbuilder* | Remove-AppxPackage

Remover Alarms and Clock:

Get-AppxPackage *windowsalarms* | Remove-AppxPackage

Remover Calculadora:

Get-AppxPackage *windowscalculator* | Remove-AppxPackage

Remover Calendario and Mail:

Get-AppxPackage *windowscommunicationsapps* | Remove-AppxPackage

Remover Camera:

Get-AppxPackage *windowscamera* | Remove-AppxPackage

Remover Contact Support:

Não pode ser removido

Remover Cortana:

Não pode ser removido

Remover Get Office:

Get-AppxPackage *officehub* | Remove-AppxPackage

Remover Get Skype:

Get-AppxPackage *skypeapp* | Remove-AppxPackage

Remover Get Started:

Get-AppxPackage *getstarted* | Remove-AppxPackage

Remover Groove Music:

Get-AppxPackage *zunemusic* | Remove-AppxPackage

Remover Maps:

Get-AppxPackage *windowsmaps* | Remove-AppxPackage

Remover Microsoft Edge:

Não pode ser removido

Remover Microsoft Solitaire Collection:

Get-AppxPackage *solitairecollection* | Remove-AppxPackage

Remover Money:

Get-AppxPackage *bingfinance* | Remove-AppxPackage

Remover Movies & TV:

Get-AppxPackage *zunevideo* | Remove-AppxPackage

Remover News:

Get-AppxPackage *bingnews* | Remove-AppxPackage

Remover OneNote:

Get-AppxPackage *onenote* | Remove-AppxPackage

Remover People:

Get-AppxPackage *people* | Remove-AppxPackage

Remover Phone Companion:

Get-AppxPackage *windowsphone* | Remove-AppxPackage

Remover Photos:

Get-AppxPackage *photos* | Remove-AppxPackage

Remover Store:

Get-AppxPackage *windowsstore* | Remove-AppxPackage

Remover Sports:

Get-AppxPackage *bingsports* | Remove-AppxPackage

Remover Voice Recorder:

Get-AppxPackage *soundrecorder* | Remove-AppxPackage

Remover Weather:

Get-AppxPackage *bingweather* | Remove-AppxPackage

Remover Windows Feedback:

Não pode ser removido

Remover Xbox:

Get-AppxPackage *xboxapp* | Remove-AppxPackage

Rollback:

Pra reinstalar todos os apps:

Get-AppxPackage -AllUsers| Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “$($_.InstallLocation)\AppXManifest.xml”}

Renomear chave de deploy no gitlab

Enquanto não sai o merge request, a atualização do nome da deploy key tem que ser direto no banco.

Numa instalação padrão, conectamos no banco pgsql via linha de comando:

su gitlab-psql
/opt/gitlab/embedded/bin/psql --port 5432 -h /var/opt/gitlab/postgresql -d gitlabhq_production

 Depois localizamos o ID da chave (nesse caso eu exibi todas) e fazemos um update pelo id

SELECT id, title FROM keys WHERE type='DeployKey';
UPDATE keys SET title='root@shared-servers' WHERE id=181;

 Simples, não? =)

backup de sites com wget

Recentemente precisei efetuar backup de um site para leitura offline, tinha feito um script mirabolante com wget e sed, convertendo links etc, mas pesquisando melhor descobri que o proprio wget tem opções pra muita coisa.

O comando que usei foi

wget \
     --recursive \
     --no-clobber \
     --page-requisites \
     --html-extension \
     --convert-links \
     --restrict-file-names=windows \
     --domains website.org \
     --no-parent \
     http://website.org/diretorio/

As opções usadas são:

  • –recursive: backup do site inteiro, de forma recursiva.
  • –domains website.org: não vai seguir nenhum link de fora do domínio especificado.
  • –no-parent: não vai seguir nenhum link que remeta a diretórios anteriores.
  • –page-requisites: obter todos os elementos que compõem a página (imagens, css, etc).
  • –html-extension: usar extensão html.
  • –convert-links: converter links para uso offline.
  • –restrict-file-names=windows: Modificar nomes de arquivos para funcionar em windows
  • –no-clobber: não sobescrever arquvos (para caso o download ser interrompido e ter que recomeçar).

erro dropbox segmentation fault kde5

Desde que comecei na área de TI, lá pelos meus 15 anos de idade sempre gostei de testar novos sistemas operacionais, passei por n versões de windows, linux, osx, já tive hackintosh por um bom tempo inclusive.

Bem, atualmente estou usando o maui linux que é uma distribuição baseada no ubuntu (sempre a última lts) porém, na minha opinião, mais polida do que o kubuntu.

Após efetuar backup de todos os dados, instalar, restaurar as informações, o dropbox parou de funcionar, ficava dando segmentation fault e randomicamente funcionava.

Notei que era algo relativo ao kde, pois ao testar em outro ambiente gráfico (lxde) funcionou perfeitamente, já estava quase desistindo e voltando ao ubuntu, porém resolvi, em uma ultima tentativa, efetuar um trace do executável e ver se achava alguma coisa.

braz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ strace ./dropbox 2> debug.txt

Então essas linhas me chamaram atenção

open("/usr/lib/dri/tls/swrast_dri.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/dri/swrast_dri.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
rt_sigaction(SIGSEGV, {0x7f09e1dea010, [SEGV], SA_RESTORER|SA_RESTART, 0x7f09e1a88d60}, NULL, 8) = 0
write(4, "Fatal Python error: ", 20)    = 20
write(4, "Segmentation fault", 18)      = 18
write(4, "\n\n", 2)                     = 2
write(4, "Traceback (most recent call firs"..., 36) = 36
write(4, "  File ", 7)                  = 7
write(4, "\"", 1)                       = 1
write(4, "d", 1)                        = 1

O dropbox estava tentando usar a Raster library, que não possuo uma vez que uso o driver proprietário da nvidia.

Mais um teste e BINGO

braz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ LIBGL_DEBUG=verbose ./dropbox
libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so
libGL error: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: reverting to indirect rendering

Solução:

Remover (nó meu caso eu só movi, para fins de backup), a biblioteca de opengl do dropbox.

felipebraz@sistemas-01:dropbox-lnx.x86_64-3.10.8$ mv libGL.so.1 libGL.so.1.bkp

Done, Dropbox funcionando de novo!

resolvendo mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

Problema do dia:

Servidor mysql usado a quase 10 anos, que mesmo tendo sido atualizado a versão, os usuários legados continuam com a hash antigamente utilizada (hoje chamada de old_password)

Para estes casos, basta trocar o tipo de autenticação na session, reescrever a senha e um flush nos privilegios.

SET SESSION old_passwords=0;
UPDATE mysql.user SET Password = PASSWORD('minhasenha') WHERE User = 'meuusuario';
FLUSH PRIVILEGES;

 

Alguns comandos úteis em docker

Esse comando faz deploy de uma imagem e loga no bash dela

docker run -t -i -P --net=host image_name /bin/bash

Logar no ssh de um container

docker exec -i -t container_name bash

Docker-Compose: Subir imagem

docker-compose up -d

Docker-Compose: Descer imagem

docker-compose stop

Ao logar no ssh, alguns comandos que depoendem da variavel TERM podem apresentar comportamento anômalo (primcipalmente no editor VIM), é só executar esse comando:

export TERM=xterm

Otimizando o Linux com Swapiness

A partir das últimas versões do kernel 2.6.x, o kernel do linux passou a permitir que o usuário controle a partir de qual percentual de uso da memória RAM que será utilizado o swap.

Entretanto não se preocupe com essa questão de versão do kernel, pois atualmente o mesmo está na versão 4.x, então a não ser que você use um linux do tempo das cavernas sua distro terá suporte a esta configuração.

Existem duas maneiras de ver como seu swapiness está configurado:

sudo cat /proc/sys/vm/swappiness
60

ou

sysctl -a|grep swappiness
vm.swappiness = 60

no caso acima, ele irá utilizar swap a partir de 40% de uso da memória RAM (a configuração se baseia em memória disponível, então use sempre “100 – valor” para aplicar esta definição).

Primeiramente, poemos definir este valor em tempo de execução de forma testar qual valor melhor se adéqua a sua máquina

sysctl -w vm.swappiness=5

Acima configuramos para só usar o swap quando a memória RAM estiver 95% cheia (lembre do cálculo mencionado anteriormente).

O único problema é que essa configuração se perde ao reiniciar a máquina, então, para torná-la permanente, basta editar o arquivo /etc/sysctl.conf e adicionar/editar a seguinte linha:

vm.swappiness = 5

Certo, e qual número eu devo configurar?

A configuração vai depender da quantidade de RAM a máquina, mas por via e regra, quanto mais memória RAM, menor deverá ser o swapiness. 

Em um note com 4GB de RAM que uso pra desenvolvimento, consegui o melhor desempenho setando o número em 5, porém é interessante testar com outros valores antes e tornar a configuração definitiva 😉