Saturday, March 31, 2018

Compilando kernel linux en arch

Era un día tranquilo y feliz con las actualizaciones habituales, en mi pc tenía la instalación de docker y varias imágenes que utilizaba en mi tiempo libre, hasta que llego febrero y el kernel 4.15 CHAN!

Adios instalación de docker 😮

Para revisar si docker puede o tiene las condiciones de ejecutarse bien:

$ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh >> check-config.sh 

todo! como usuario normal de linux

$ bash check-config.sh

ó

$ ./check-config.sh (si usas bash por defecto)

En mi instalación estaba deshabilitado la opción VSYSCALL_EMULATE por razones de seguridad, entonces hay 3 formas de editar parámetros:

A) COMPILAR EL KERNEL CON LA NUEVA CONFIG
B) PASAR EN TIEMPO DE EJECUCIÓN EN EL BOOT EL FLAG vsyscall=emulate
C) AGREGAR EL PARAMETRO AU VIVO con sysctl, de esta forma no encontré como editarlo, yo lo pasaba así
$ sysctl vsyscall=emulate
Y como no es la forma correcta, o el archivo vsyscal no existía en /proc sino en /sys no funcionaba, más adelante revisaré.

FORMA A: compilando el kernel con la herramienta asp, (hay que instalarla con pacman -S asp)

$ mkdir ~/kernelbuild
$ cd ~/kernelbuild
$ asp export linux
$ makepkg -s (genera el paquete de arch)
# pacman -U paquetedeArchConKernelNuevo.tar.xz

Ahora con estos pasos toma la misma config que tiene el sistema, en caso de compilar un kernel con una configuración diferente se puede hacer de varias formas por cli o editando el archivo .config:

Paso a paso explicado:
1 - editar una por una por un menu cli (mucho tiempo de analizar si necesitas cada opcion) para esto hay que descomentar el archivo ~/kernelbuild/linux/PKGBUILD y descomentar la opcion que se quiere usar.

  # load configuration
  # Configure the kernel. Replace the line below with one of your choice.
  #make menuconfig # CLI menu for configuration
  #make nconfig # new CLI menu for configuration
  #make xconfig # X-based configuration
  #make oldconfig # using old config from previous kernel version
  # ... or manually edit .config

2 -  editar el archivo ~/kernelbuild/linux/config que tiene todas las opciones estandars en el kernel de archlinux y agregar o eliminar la que molesta con docker.
3 - hacer makepkg -g >> PKGBUILD , esto toma los string de verificación de integridad y los actualiza, sino lo hacemos nos va a dar un error al editar el archivo .config cambiamos el archivos y tiene que generar un nuevo string

En mi caso yo usé esto:
0 - editar archivo config
-CONFIG_X86_VSYSCALL_EMULATION=y
+# CONFIG_X86_VSYSCALL_EMULATION is not set
-CONFIG_LEGACY_VSYSCALL_EMULATE=y
-# CONFIG_LEGACY_VSYSCALL_NONE is not set
+# CONFIG_LEGACY_VSYSCALL_EMULATE is not set
+CONFIG_LEGACY_VSYSCALL_NONE=y
1 - $ makepkg -g >> PKBUILD  (actualizar los hash de verificacion de archivos)
2 - $ makepkg -s
3 - # pacman -U kernel-nuevo-con-cosas-específicas.tar,xz

en caso que no tengamos una llave gpg almacenada hacer:
gpg --recev hashIDllaveGPG

# pacman -U linux-4.15.7-1-x86_64.pkg.tar.xz

y probar ejecutar:

- run "docker run --rm -it mongo:3.0"

FORMA B: Editar los parámetros pasados al kernel al inicio del sistema operativo.

/etc/default/grub
# GRUB boot loader configuration
  
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Arch suck"

GRUB_CMDLINE_LINUX_DEFAULT="quiet vsyscall=emulate"

Luego de editar la configuración del grub hay que sobreescribir el archivo /boot/grub/grub.cfg con
$ grub-mkconfig -o /boot/grub/grub.cfg

y revisamos que la línea se haya agregado al iniciar sesión:
j3nnn1:~/ $ cat /proc/cmdline                                                                                                    
BOOT_IMAGE=/boot/vmlinuz-linux root=UUID=dc9d4c3e-c8d2-4e88-b66d-f2fd3cdff1bc rw quiet vsyscall=emulate

Luego ejecutar docker normalmente!

- run "docker run --rm -it mongo:3.0"

La forma B es la más rápida!

😁

Friday, March 30, 2018

Para la nostalgia... nintendo power

Nintendo Power is a discontinued news and strategy magazine which was initially published in-house monthly by Nintendo of America, and later run independently. In December 2007, Nintendo contracted publishing duties to Future US, the U.S. subsidiary of British 

https://archive.org/details/nintendopower?sort=-date

No está disponible la publicación de nintendopower pero hay varias que recuerdo de niña (nintendo action), ir a buscar al kiosko o librería a leer un poquito:

https://archive.org/details/gamemagazines

aawwww...



Monday, March 19, 2018

Listar repositorios por velocidad de descarga

Se requiere tener el paquete:

# pacman -S pacman-contrib

Luego si hacer los siguientes pasos:

Curioso que el mirror de archlinux con mejor  conexión a Argentina sea uno que se encuentra en Italia xD

# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

# sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup

# rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist

Italia, le sigue michigan, China, Alemania, ... y de último Chile tiene un mirrror!

Server = http://archlinux.beccacervello.it/archlinux/$repo/os/$arch
Server = http://lug.mtu.edu/archlinux/$repo/os/$arch
Server = http://arch-mirror.wtako.net/$repo/os/$arch
Server = http://mirror.nexcess.net/archlinux/$repo/os/$arch
Server = http://k42.ch/mirror/archlinux/$repo/os/$arch
Server = http://mirror.archlinux.cl/$repo/os/$arch

Luego en 2018 the winners are:

Server = http://mirror.nexcess.net/archlinux/$repo/os/$arch
Server = http://mirror.archlinux.cl/$repo/os/$arch
Server = http://archlinux.beccacervello.it/archlinux/$repo/os/$arch
Server = http://k42.ch/mirror/archlinux/$repo/os/$arch
Server = http://lug.mtu.edu/archlinux/$repo/os/$arch
Server = http://arch-mirror.wtako.net/$repo/os/$arch

no se si empeoró o mejoró la conexión pero el de chile subió varias posiciones :O

Referencia tomada de:
https://wiki.archlinux.org/index.php/mirrors

para el 2019 ya había olvidado como hice esto y lo hice de otra manera con un paquete llamado reflector que consiste en scripts de python que realizan la consulta a la url que tiene el estado de los mirrors y los ordena por velocidad de descarga.

como siempre toda esta información es tomada de la wiki de archlinux

https://wiki.archlinux.org/index.php/Reflector_(Espa%C3%B1ol)

haciendo el respaldo del archivo anterior:

# cp -vf /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

El siguiente comando filtrará los primeros cinco mirrors, los ordenará en base a su velocidad, y sobrescribirá el archivo /etc/pacman.d/mirrorlist:
# reflector --verbose -l 5 --sort rate --save /etc/pacman.d/mirrorlist

Este comando evaluará de manera verbosa los 200 servidores HTTP sincronizados más recientemente, los ordenará por su tasa de descarga, y sobrescribirá el archivo /etc/pacman.d/mirrorlist:
# reflector --verbose -l 200 -p http --sort rate --save /etc/pacman.d/mirrorlist

Y eso es todo amigos!

Wednesday, March 14, 2018

Experiencia railsgirl :)


Leyendo la documentación de railsgirls acá: http://guides.railsgirls.com sólo está disponibles scripts de instalación para distribuciones como Ubuntu o Fedora, desde siempre he usado Archlinux así que por ahora hasta que no cambie de notebook no creo que instale de nuevo otra distribución. Hace un tiempo atrás utilice ruby and rails para proyectos personales, los subi a heroku, dotcloud cuando existía y era gratuito, recuerdo haber usado bundle, por lo que veo actualmente se está utilizando para la instalación, seguro que hay otras cosas más nuevas y divertidas en el mundo de ruby.

Proceso de instalación de ruby and rails en linux:

Esto está escrito como una experiencia, a medida que iba probando cosas estaba registrando cada print screen o salida de texto de la terminal, por suerte no fue muy largo pero está todo el proceso. Cuando busqué en google como instalar ruby and rails en arch lo primero devuelve google es la Fantastica wiki de archlinux, pero mi resistencia a que no haya un paquete que instale todo en un sólo comando de pacman me hizo probar un paquete de AUR, que es bien sabido que se puede subir cualquier cosa y hay muchas cosas desactualizadas por lo que NO es recomendable y de acuerdo a la filosofía de arch no lo recomienda.
En archlinux instalé el paquete de aur luego de varios Yes , y revisar el PKGBUILD PKGBUILD-ruby-and_rails
intento crear la primera app
 $rails new railsgirls

Y como output obtengo:
 
/usr/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs': 
Could not find 'thread_safe' (~> 0.1) among 50 total gem(s)
(Gem::MissingSpecError) Checked in 
'GEM_PATH=/home/j3nnn1/.gem/ruby/2.5.0:/usr/lib/ruby/gems/2.5.0', 
execute `gem env` for more information
De acuerdo a ese error hay una dependencia para que funcione ruby and rails que no se declaró en el paquete de aur, por ahora la voy a instalar independientemente lo ideal es editar el PKGBUILD y agregarla como dependencia.
$ yaourt -S ruby-thread_safe 
/usr/lib/ruby/2.5.0/rubygems/dependency.rb:310:in `to_specs':
Could not find 'minitest' (~> 5.1) among 51 total gem(s)
(Gem::MissingSpecError) Checked in 
'GEM_PATH=/home/j3nnn1/.gem/ruby/2.5.0:/usr/lib/ruby/gems/2.5.0',
execute `gem env` for more information
Fail!, otra dependencia no declarada en el PKGBUILD
$yaourt -S ruby-minitest
Fail!, luego sigue sin funcionar y con el mismo error, así que rollback a todo lo instalado por aur, y vamos por la guía de archlinux, La sabia wiki de archlinux! (https://wiki.archlinux.org/index.php/Ruby_on_Rails)
se puede hacer la instalación de dos formas:
a) Una en la que el usuario actual solo puede ejecutar o utilizar las gemas, y se guardan en el directorio: ~/.gem/ruby/
$gem install rails
$rails new railsgirls

En caso de instalar como usuario sin sudo, cancelar la instalación y hacerla desde bundle, de esta forma no edita las librerías del sistema base, en mi caso siempre es mejor instalar en el $HOME porque sino puede interferir con las librerias del sistema que utilicen ruby, ejemplo conky! está escrito en ruby. Como NO quiero instalar nada en mi sistema base, cancelo y dentro del directorio railsgirls ejecuto bundle install.

cd railsgirls/
$bundle install --path vendor/bundle
b) O Ejecutar gem install como root y setear este flag --no-user-install (por defecto tiene este valor --user-install)
 
# gem install rails --no-user-install

$ rails server 
Próximamente cuando mi hermano llegue agregamos la instalación de windows...

Proceso de instalación de ruby and rails en windows:

- Descargar el ejecutable en http://railsinstaller.org/en - Instalar nodejs descargar de:  https://nodejs.org/en/
- Crear la applicación: rails new railsgirls
- Actualizar rails con: gem update rails (dentro del directorio railsgirls)
- cd railsgirls
- rails s

Muchas gracias!