viernes, 6 de julio de 2018

(Re)Configurando Servidor de blogging con Servidor Nodejs Ghost en placa ARM(rPi)

Previos:

  • Pretendo “reconstruir” el hosting personal que monté hace un tiempo. Por los motivos inesperados (fallo de disco, etc.) perdí la configuración inicial antes de poder hacer su correspondiente copia de seguridad, pero el hosting sobre la rPi funciona correctamente.
  • El sevidor Ghost que puse en producción de momento debería ser la misma versión que funcionó en su momento, así que me veo forzado a repetir el proceso tal y como lo hice en su momento. Mas adelante me preocuparé de la actualización entre la versión de Ghost, la versión del nodejs y la del npm tal y como está detallado en los requisitos del servidor GhostConfused smile
  • Los requisitos del servidor Ghost fuerza el uso de versiones específicas de nodejs, cosa que resulta incompatible con el sistema de empaquetado de debian, por lo que si hay instalada alguna versión de NodeJs es preferible borrarla en primer lugar.

Requisitos:

  • Dispositivo de almacenamiento con el sistema instalado de la raspberryPi, en mi caso, una SDHC de 4gb con un sistema basado en Debian.
  • Ordenador secundario para configurar el chroot, en mi caso otro debian.

Proceso:

  1. 99) En el ordenador ejecutar
    1. apt-get install qemu-user-static
  2. 98) Conectar el dispositivo que contiene el sistema de la rPi y montarlo, p.ej en /mnt
    1. cd /mnt
    2. mount –t proc proc /mnt/proc/
    3. mount –t sysfs sys /mnt/sys/
    4. mount –-bind /dev /mnt/dev/
    5. mount –bind /dev/pts /mnt/dev/pts/
    6. cp /usr/bin/qemu-arm-static /mnt/usr/bin
    7. nano /mnt/etc/ld.so.preload
      1. Comentar con # cada línea de carga de módulos
    8. chroot /mnt /bin/bash
    9. En este momento ya deberiamos estar “dentro” del sistema arm
  3. 97) ANTES QUE NADA RECUERDO EL PROCESO INVERSO

    1. 99) exit
    2. 98) nano /mnt/etc/ld.so.preload y restaurar la carga de módulos
    3. 97) rm /mnt/usr/bin/qemu-arm-static
    4. 96) cd /
    5. 95) umount -–recursive /mnt
    6. Y ya puedes devolver el dispositivo a la rPi para su uso habitual Smile
  4. 97)  Posiblemente de algún github descargué este script (siento mucho no disponer de la información que recopilé en su momento (script.sh) que permite instalar una versión específica de todo el sistema V8. El script descarga el código fuente de la  versión especificada, la compila y la instala. El proceso puede ser largo según la máquina.

    • #!/usr/bin/env bash
      if [ $# -lt 1 ]; then
           echo "Usage: $0 version"
           exit 1
      fi
      version=$1
      orig_dir=$(pwd)
      work_dir=/tmp
      patch_dir=$work_dir/node-v$version/deps/v8/
      patch_file=$work_dir/node-v$version/deps/v8/SConstruct.patch
      cd $work_dir
      wget -O - http://nodejs.org/dist/v$version/node-v$version.tar.gz|tar xz
      if [ $? -ne 0 ]; then
           echo "Something wrong fetching/decompressing node-v$version.tar.gz"
           exit 0
      fi
      echo "--- SConstruct    2013-09-30 16:52:48.000000000 -0400   
      +++ ../../../node-v$version-custom/deps/v8/SConstruct    2013-09-30 16:52:48.000000000 -0400
      @@ -80,7 +80,7 @@
          },
          'gcc': {
            'all': {
      -      'CCFLAGS':      ['\$DIALECTFLAGS', '\$WARNINGFLAGS'],
      +      'CCFLAGS':      ['\$DIALECTFLAGS', '\$WARNINGFLAGS', '-march=armv6'],
              'CXXFLAGS':     ['-fno-rtti', '-fno-exceptions'],
            },
            'visibility:hidden': {
      @@ -159,12 +159,12 @@
              },
              'armeabi:softfp' : {
                'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
      -        'vfp3:on': {
      -          'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
      -        },
      -        'simulator:none': {
      -          'CCFLAGS':     ['-mfloat-abi=softfp'],
      -        }
      +#        'vfp3:on': {
      +#          'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
      +#        },
      +#        'simulator:none': {
      +#          'CCFLAGS':     ['-mfloat-abi=softfp'],
      +#        }
              },
              'armeabi:hard' : {
                'CPPDEFINES' : ['USE_EABI_HARDFLOAT=1'],
      " > $patch_file
      cd $patch_dir
      patch -p0 < SConstruct.patch
      cd ../..
      ./configure && make && sudo make install
      cd $orig_dir
      #!/usr/bin/env bash
      if [ $# -lt 1 ]; then
          echo "Usage: $0 version"
           exit 1
      fi
      version=$1
      orig_dir=$(pwd)
      work_dir=/tmp
      patch_dir=$work_dir/node-v$version/deps/v8/
      patch_file=$work_dir/node-v$version/deps/v8/SConstruct.patch
      cd $work_dir
      wget -O - http://nodejs.org/dist/v$version/node-v$version.tar.gz|tar xz
      if [ $? -ne 0 ]; then
           echo "Something wrong fetching/decompressing node-v$version.tar.gz"
           exit 0
      fi
      echo "--- SConstruct    2013-09-30 16:52:48.000000000 -0400   
      +++ ../../../node-v$version-custom/deps/v8/SConstruct    2013-09-30 16:52:48.000000000 -0400
      @@ -80,7 +80,7 @@
          },
          'gcc': {
            'all': {
      -      'CCFLAGS':      ['\$DIALECTFLAGS', '\$WARNINGFLAGS'],
      +      'CCFLAGS':      ['\$DIALECTFLAGS', '\$WARNINGFLAGS', '-march=armv6'],
              'CXXFLAGS':     ['-fno-rtti', '-fno-exceptions'],
            },
            'visibility:hidden': {
      @@ -159,12 +159,12 @@
              },
              'armeabi:softfp' : {
                'CPPDEFINES' : ['USE_EABI_HARDFLOAT=0'],
      -        'vfp3:on': {
      -          'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
      -        },
      -        'simulator:none': {
      -          'CCFLAGS':     ['-mfloat-abi=softfp'],
      -        }
      +#        'vfp3:on': {
      +#          'CPPDEFINES' : ['CAN_USE_VFP_INSTRUCTIONS']
      +#        },
      +#        'simulator:none': {
      +#          'CCFLAGS':     ['-mfloat-abi=softfp'],
      +#        }
              },
              'armeabi:hard' : {
                'CPPDEFINES' : ['USE_EABI_HARDFLOAT=1'],
      " > $patch_file
      cd $patch_dir
      patch -p0 < SConstruct.patch
      cd ../..
      ./configure && make && sudo make install
      cd $orig_dir

  5. 97.99) – INTERRUPCIÓN --- Configurar “screen” para el proceso de compilación

    1. > apt-get install screen

      1. screen y los comandos
        1. “screen (-r)”
        2. Ctrl-a ?
        3. Ctrl-a c
        4. Ctrl-a n ó Ctrl-a p
        5. Ctrl-a d
        6. Ctrl-a H (para el logging)
  6. 96) Después de “chmod +x script.sh” para permitir su ejecución, lo ejecuto:

      1. Opcionalmente hacerlo en un screen

    1. > ./script.sh 0.10.29

      1. salir del screen

    2. De esta manera,  descarga las fuentes y las compila en un directorio temporal /tmp/node-vX.YY.ZZ (PUEDE QUE TARDE ENTRE 15 MINUTOS O MAS SEGÚN EL ORDENADOR)

    3. ME HE DADO CUENTA QUE AL FINALIZAR LA COMPILACIÓN YA QUEDA INSTALADO EN EL SISTEMA, SIN POSIBILIDAD DE REINSTALACIÓN, CONSIDERO IMPORTANTE GENERAR UN PAQUETE DEBIAN DESDE LAS FUENTES EN ESTE MOMENTO

      1. 96.99)MUEVO TODO EL DIRECTORIO COMPILADO A LA CARPETA ROOT POR SI ES NECESARIO REPETIR EL PROCESO, mv /tmp/node-vX.YY.ZZ /root

      2. 96.98) “>apt-get install checkinstall”

      3. 96.97) cd /root/node-vX.YY.ZZ

        1. abrir un “screen” para este proceso

      4. 96.96) checkinstall, me he documentado muy poco sobre esto pero me ha generado un paquete DEB

        1. Como descripción indico “NodeJs for ghost blog”<ENTER> dos veces

        2. De la lista seleccionada, aprieto [3] y cambio el número de versión de “vX.YY.ZZ” a “X.YY.ZZ” sin letra,

        3. <ENTER> para realizar el proceso de compilación y empaquetado… Vuelvo a esperar algún tiempo mayor de diez minutos… (Según la instalación de linux, vigilar el espacio disponible en /var

          1. Debería indicar “Done. The new package has been installed…”

          2. Cerrar el “screen” y hacer un backup de tu .deb…

      1. Estas pruebas me han confirmado la instalación/desinstalación del paquete en otro sistema

        • dpkg –i node_X.YY.ZZ-1_ARQUITECTURA.deb
        • apt-get remove node ó bien dpkg –r node

      2. p)

  7. 96) ESTE SERÍA UN BUEN MOMENTO PARA HACER UN BACKUP POR RSYNC DE TODO EL SISTEMA..

  8. 95) PROBANDO, a partir de la versión descargada de www.ghost.org (ghost-latest.zip)

    1. > node –-version ( =v0.10.29)

    2. > npm –-version ( =1.4.14)

    3. unzip ghost-latest.zip –d prueba.com

    4. cd prueba.com

    5. cp config.example.js config.js

    6. npm install –production (para hacer la instalación en modo de producción)

      1. El proceso puede ser largo y con un poco de suerte debería de poder compilar sus dependencias automáticamente. (Recuerdo tener problemas de compilación del módulo sqlite3 al utilizar una versión diferente del node/npm). En mi caso, al disponer de poco espacio en la partición raiz también he tenido que hacer limpieza de agún kernel antiguo dejando unos 200 Megas libres para confirmar la instalación

    7. npm start

      1. Finalmente he podido comprobar que el servidor iniciaba y, en la primera ejecución, creaba las tablas necesarias… Smile

  9. 94) Configuración del registro por dirección de email Sad smile

    1. El primer acceso ya me pide una dirección de email, y prefiero crear alguna configuación personalizada interna antes que usar los servicios externos...

  10. 93

Lamento la falta de organización, es hora de backups y reorganizaciones antes de continuar este proceso.

Sad smile Intento continuarlo

miércoles, 27 de junio de 2018

Arrancando AMD Geode por tarjeta SD

 

Al final del post incluyo algunos pantallazos que espero que complementen estas explicaciones

Requisitos:

  1. Un equipo con algún sistema operativo microsoft, otro equipo con un linux… Podría ser posible utilizar algún sistema de virtualización para evitarlo. Como ya he comentado, en mi caso el sistema objetivo (aun sin arrancar) es un portatil con arquitectura AMDGEODE/586…
  2. SDHC vacia  (en mi caso 8 gbs, pero tengo un debian stecht funcionando en una targeta de 2gb) con el particionado adecuado que esté soportado por la BIOS/EFI, en este caso, la BIOS de este GEODE permite reconocer el lector SDHC interno como un USB, pero solo he conseguido arrancarlo si la SD tiene el sector de arranque de syslinux, para ello…
  3. Usando el pack RmPrepUsb Portable (2.1.730) en un ordenador windows, tengo algunass dudas de uso sobre una versión linux de syslinux, no siempre he conseguido los resultados que quería…
  4. El formateo de la tarjeta,…
    1. Buscando tutoriales sobre arranque de BIOS antiguas, explica que la tarjeta debe tener la primera partición en formato FAT(64 megas) pero el syslinux necesita identificar la partición primera como la número 4 (conocido como USB-ZIP)… En el caso de este GEODE creo que no es necesario ser tan estricto,…

Preparacion:

  1. 100) Esta primera prueba pretende como resultado, insertar la targeta arrancar el GEODEy comprobar si AL MENOS detecta el arraque de syslinux…
  2. 99) Suponiendo que la targeta está correctamente particionada, arrancar el RmPrepUsb y SELECCIONAR CON CUIDADO LA LETRA DE UNIDAD QUE CORRESPONDE A LA TARGETA sdhc Y SOLO APRETAR EL BOTÓN “Install syslinux” (COMETER UN ERROR, PUEDE SIGINIFICAR QUE MODIFIQUES LA INSTALACIÓN DE WINDOWS Y TENGAS QUE REPARARLO).
  3. 98) Respondo “Activar RAID” +  “Opción 1: instalar en /boot/grub/syslinux.cfg” y deberia confirmar que se ha ejecutado correctamente el comando “syslinux –fma –r –d /boot/syslinux LETTRA: – installed ok”
  4. 97) El archivo syslinux.cfg debería tener una configuración basado en estos parámetros (duckdukgo.com para buscar todo mas información)
  5. #COMENTARIO: Esta configuración solo sirve como referencia, los UUID de la partición se detectan a través del comando blkid desde otro linux,

    SAY arrancar ecafelinux 586por SDHC sdX5¿?mmcblkXp5
    TIMEOUT 50
    PROMPT 1

    Default GEODEBOOTUUID

    #COMENTARIO: necesitas un LINUX para identificar el UUID de la particion

    Label GEODEBOOTUUID

    kernel /VM31604586_2 append initrd=/IRD31604586_2 root=UUID=xxxxxxxxxx-xxxxx-xxxx-xxxxx ro lxfb.mode_option=800x480@60 vt_switch

    #COMENT: Forzar a buscar el linux en la primera partición lógica sda5, si fuera la ssegunda sdb5, etc.

    Label GEODEBOOT_FORZADO

    kernel /VM31604586_2 append initrd=/IRD31604586_2 root=/dev/sda5 ro lxfb.mode_option=800x480@60 vt_switch

  6. Pruebo el arranque en la máquina GEODE y me ha funcionado

NOTA EXTRA; TESTEO EN VIRTUALBOX

Con la targeta preparada y un adaptador USB insertado en el ordenador:

  1. Abrir terminal en modo Administrador y sabiendo qué número identifica el adaptador USB insertado(PhysicalDriveX desde diskmgmt.msc) :
  2. VBOXMANAGE internalcommands createrawvmdk –filename syslinuxTEST.vmdk -rawdisk \\.\PhysicalDriveX

  3. Arrancando el VirtualBox en Modo Administrador
  4. Asigno el fichero del disco virtual “syslinuxTEST.vmdk” a una nueva máquina virtual cualquiera o una nueva SIN configuración EFI
  5. Arranco la MV, puedes apretar el botón <TAB> para mostrar las opciones disponibles de arranque y detener el arranque automático
  6. image
  7. Así queda la pantalla de inicio
  8. image
  9. Información sobre el disco
  10. image
  11. image

viernes, 15 de junio de 2018

Acceso y solicitudes en SEPE

 

Antes de empezar, ACTUALIZAR LA VERSION DE la máquina virtual JAVA (JRE) !!! y reiniciar el navegador!! A fecha actual todavía trabajo con Windows Vista-32 bits…

En este caso es el acceso a una solicitud de subsidio por desempleo accediendo por la opción de DNIe, no he podido probar el acceso a otra solicitudes…

image

image

Esta pantalla la verás si no está actualizada la máquina JAVAimage

En el panel de control de JAVA, ¿en Windows Menú Inicio->Java->Configurar JAva   ---> Seguridad?+ Añadir excepción de sitio

image

image

Ahora viene el proceso en 14 o 15 pasos (…)

 

FIRMA Electrónica AL FINAL utilizando la opción de firma del DNIe

image

@B^)>

viernes, 13 de abril de 2018

Utilizando discos de diferenciación de Hyper-V/VirtualPC en VirtualBox en Windows

Posiblemente, debido a mi desconocimiento en este área existen métodos formales de hacerlo, sin embargo, me ha parecido importante mientras estoy haciendo experimentos sin mucho éxito en Máquinas Virtuales, economizar en espacio de disco duro…

Suponiendo que tienes tu disco virtual VHD creado con VirtualPC (en mi caso todavía en Windows Vista) y vas a realizar la migración a alguna versión de VirtualBox, pero hay pendiente de ver que la ejecución en la nueva máquina funcionará como es debido, entiendo que es razonable crear un disco de diferenciación desde el VirtualPC… Lo que no esperaba es que el VirtualBox al ejecutar la máquina virtual, lo detectara pero no pudiera acceder a ella,… Tratándose de software libre supongo que posiblemente será alguna característica pendiente de implementación …

Así lo he podido resolver en Windows Vista, lamento no explicarlo para humanos Sad smile :

  • RECORDAR HACER EL PROCESO INVERSO AL FINALIZAR LA EJECUCCIÓN DE LA MÁQUINA VIRTUAL desvinculando si es el caso los discos asignados
  • > vhdmount /p /f <ruta a imagen>.vhd
    • en windows 10 (dispart+attach vdisk para el disco vhd o su diferencia…)
  • > Comprobar en el Administrador de discos que Windows no le ha asignado ninguna a letra a las particiones del disco virtual, en otro casos, para cada unidad asignada
    • mountvol LETRA: /u
  • Comprobar en el Administrador de discos el número de unidad física que le ha asignado windows:
    • > diskpart
    • > list disk
    • DISKPART> list disk

        Núm Disco  Estado      Tamaño   Disp     Din  Gpt
         ---------- ----------  -------  -------  ---  ---
         Disco 0    En línea         XX GB     8 GB        *
         Disco 1    En línea       XX MB      0 B        *

    • >exit
  • Suponiendo que entiendo que el sistema le ha asignado el número de unidad “1” al disco virtual, ejecuto
  • > vboxmanage internalcommands createrawvmdk –filename <ruta a nuevo disco vinculado>.vmdk -rawdisk  \\.\PhysicalDrive1

  • y ya puedo asignar el disco vmdk a una máquina en VirtualBox que, en mis pruebas si que el “guest” detecta! Recordar que es un disco VINCULADO con las ventajas/desventajas que puede conllevar

Saludos!

viernes, 16 de marzo de 2018

Configuración del Dni eléctronico en Windows Vista(03/2018)

Estoy haciendolo ahora mismo:

  1. Por lo que tengo vsto, necesito el driver específico de mi teclado con “Lector de tarjeta inteligente USB” del DNI 2.0…
  2. Desde algun buscador llego a esta pagina: https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1101&id_menu=68
    1. image2Escojo la última versión del histórico: https://www.dnielectronico.es/descargas/historico/DNIe_v11_5_0(32bits).zip (aprox. 18MB) y una vez descargado extraigo el comprimido… haria falta hacer alguna comprobación MD5 para validar si es de confianza…
    2. image
  3. Hago el proceso de instalación y reninicio el ordenador cuando me lo pide
    1. image
  4. Una vez reiniciado comprueba en la carpeta C:\Program Files\DNIe los archivos instalados
    1. image
  5. Al insertar el DNI en el lector compruebo que windows me avisa:
    1. image
  6. Como prueba, accedo a mi dirección de correo validando el login utilizando la firma del dni:
    1. Voy a https://cep.correos.es/ y accedo a mi cuenta con la opción del DNI
      1. image
    2. Al acceder, solicita el PIN registrado en el DNI y listo.

He tardado 30 minutos en escribir este tutorial…

jueves, 15 de marzo de 2018

Windows Vista: Un poco de limpieza

 

Pues si, este injustamente tratado y en mi caso necesario Sistema Operativo después de ocho continuo de uso, todavía necesito mantenerlo vivo para preservar algunos de mis proyectos…

Uno de los trucos que he aprendido para reducir su espacio consiste en desinstalar actualizaciones de sistema que han sido “re-actualizadas” por nuevas actualizaciones. Nunca he encontrado un tutorial que explique que este histórico de actualizaciones puede considerarse innecesario (al menos en mi caso como usuario)… y por supuesto windows no deja libre ese espacio de copia de seguridad… En fin, explico un caso concreto para que me queda claro.. Me he pasado fines de semana completos haciendo este proceso en mi ordenador y conseguí liberar entre 3 y 4 gb de disco duro, tratandose en mi caso de un sistema que llevaba años en marcha con actualizaciones

  1. Un caso concreto… revisando actualizaciones instaladas, escojo la siguiente-KB4015389:
    1. image
  2. Abro el enlace del Catálogo de Microsoft: Para este caso concreto este es el enlance (http://www.catalog.update.microsoft.com/Search.aspx?q=kb4015380%20vista)
    1. image
  3. Al hacer clic en la descripción de la actualización, se abra una ventana nueva y escojo la pestaña: Detalles
    1. image En el caso de que me indique que esta actualización se ha reemplazado, también la desinstalaria, pero igualmente, revisaría todas las actualizaciones que reemplaza esta actualización y me dedicaría a desinstalarlas
    2. Comparando listados, aquí encuentro una coincidencia de actualización a desinstalar, KB3203589
    3. image
  4. Confirmo la desinstalación Winking smiley como no he acabado de revisarlas, no reinicio todavía el sistema
    1. imageimage

Después de repetir el proceso, si que es conveniente reiniciar el sistema antes de continuar con tus rutinas….

En fin, ojala Microsoft hubiera hecho algún trabajo adicional para ayudar al usuario a resolver este problema. Por mi parte, no me interesa comprar un disco duro nuevo para utilizar un sistema marcado como “obsoleto”, pero a fin de preservarlo en buenas condiciones me ha resultado útil…

@B^)>