"Después del juego es antes del juego"
Sepp Herberger

jueves, 3 de septiembre de 2015

Reaprovechando Thinclients HP5710 (Parte 2)

Bueno, volvemos del verano y seguimos en el €, así que todo está en orden.

Estábamos intentando meter un Linux en el thinclient HP5710. Uno de los mas adecuados y completos para estos PC tan limitados es DamnSmallLinux (DSL a partir de ahora), para probarlo lo que tenemos que hacer es bajar la ISO, grabarla en un pendrive con unetbootin y arrancar desde dicho pendrive seleccionándolo como dispositivo de arranque en la BIOS del thinclient. Una vez arrancado vemos que el funciona correctamente, así que la instalamos en el disco flash del aparatejo.

Una vez instalado, arrancamos de nuevo ya sin el pendrive (vemos con sorpresa que utiliza Lilo, el predecesor de Grub, que recuerdos) y el sistema se carga correctamente y entra en el entorno gráfico de DSL. Hacemos algunas pruebas y parece que el hardware se soporta bien y se puede navegar por Internet y ejecutar los programas simples y ligeritos que trae DSL, pero recordemos que no es esta la idea que tenemos en mente. Nuestro objetivo es usarlo como thinclient, conectando a un ordenador mas potente como terminal tonto. En este punto hay que elegir entre las distintas alternativas para usar un ligente ligero:

1) Sistema LTSP

En Extremadura tenemos sobrada experiencia con esto (hasta ahora lo usamos en todas las aulas de secundaria), pero no me parece que estos thinclient sean lo bastante potentes: poca memoria y poco procesador. A fin de cuentas el LTSP necesita un terminal tonto hasta cierto punto ya que debajo se debe ejecutar un servidor X que dibuje las ventanas y otras cosas del entorno. Por ende es un tema que ya tengo muy trillado y no quería volver a montar lo mismo otra vez.

2) VNC

Ejecutar clientes VNC para conectar al servidor. No estaría mal, habría que configurar el servidor para que los clientes ligeros iniciasen una nueva sesión, en lugar de conectarse a la sesión abierta, que es el comportamiento por defecto de VND. Hay configuraciones para hacerlo como éstas. Tampoco me atraía mucho ya que VNC es un protocolo bastante lento en velocidad de refresco de pantalla y también lo tengo algo trillado.

3) RDP

El estupendo protocolo de terminal server de Microsoft, del que ya he hablado en otras ocasiones, rápido y ligero incluso en conexiones con ADSL y wifi. El cliente para esto es rdesktop, que viene incluido en DSL. Hace un tiempo descubrí que existe un software que permite convertir un Linux en un servidor RDP pero no lo había probado. El software se llama xrdp y como tenía ganas de probarlo lo instalé en un servidor de aula con

# apt-get install xrdp

 (son equipos de hace 5 años con 4 núcleos y 8Gb de RAM que usamos como servidores LTSP). Realicé la conexión desde el thinclient con:

$ rdesktop <ip>

y la verdad es fue una agradable sorpresa. Se pide usuario y contraseña, se inicia sesión dentro del servidor de aula y se ejecutan las aplicaciones del mismo (LibreOffice 4, Google Chrome y Firefox modernos) a toda velocidad y sin ningún tipo de retardo. Lo único que iba lento era la reproducción de vídeos (con navegador o VLC) por motivos obvios, de todas maneras la visualización de vídeo no es el objetivo.

Me puse a trabajar en crear usuarios locales en el servidor para conectar cada thinclient, así como poner accesos directos en el escritorio para invocar rdesktop con los parámetros adecuados (usuario de entrada ya definido por defecto y resolución de pantalla) y hacerlo todo lo mas sencillo posible.

Había una cosa que coleaba: la configuración de teclado Exceptuando las teclas del alfabeto inglés, el resto no correspondía con mi teclado. Lo fui dejando porque seguramente sería algo de configuración....ya, cuando me puse con eso vi que no iban ni Ñ, ni acentos, ni teclas de flechas y avance-retroceso de página, ni teclado numérico.... vamos, nada de nada. En Internet hay enlaces que te dicen como arreglarlo. Pues ni de coña, solucionan algunas cosas pero otras no.

Creo que es un problema de xrdp (si con rdesktop me conecto a un Windows el mapeo de teclado es totalmente correcto), que lleva mal cualquier teclado que no sea el inglés con una configuración concreta. Evidentemente si los puestos iban destinados a ofimática no podía ser... y no fue. Tuve que abandonar el prometedor xrdp, aunque me lo guardo por si alguna vez quiero acceder rápido a un escritorio completo de forma remota a una máquina sin tener que configurar ni reiniciar nada.

4) Freenx.

Buena apuesta, rápido y seguro. En su contra tenemos que es un pelín difícil de configurar y que está bastante abandonado.

Todavía hay páginas donde explican donde instalar las versiones antiguas, estaba dudando si usarlo cuando llegué a la solución correcta....


5) x2go

Tirando del hilo de Freenx llegué a x2go, un proyecto desconocido para mí. Es una alternativa (o continuación, no me queda claro) de Freenx que esta bastante viva. Hice unas pruebas con PC normales y todo iba muy bien (incluso el mapeo teclado, jaja): rápido y muy fácil de configurar (la parte servidora es instalar y listo y el cliente es dar la IP, el escritorio a ejecutar -KDE, Gnome, ...-  y poco mas). Adicionalmente tiene configuraciones para redirigir el sonido y compartir carpetas entre cliente a servidor.

El problema es que el cliente x2go no existe para DSL, ya que está basado en un Debian Etch y x2go-client aparece por primera vez en los repositorios backports de Squeeze..... no me quedaba otra que instalar Debian Squeeze en el thinclient HP.

Y eso se verá en la parte 3.

jueves, 2 de julio de 2015

Reaprovechando Thinclients HP5710 (Parte 1)

Bueno, pues se me presentan en el despacho con uno de estos aparatos donde reza HP T5710 y me dicen: "tengo un puñado de estos, ¿se pueden usar para montar un aula de ofimática?".


Espera, espera ¿qué carajos es esto?, en mi vida había visto algo parecido. Indago un poco y resulta que es un "Thinclient HP": un miniordenador que se concibió como terminal tonto que corria un Windows CE o Windows XP Embedded y conectarse a un servidor de terminales (Terminal Server o Citrix, por ejemplo) para ejecutar un sistema operativo completo. Mas o menos un sistema LTSP pero sobre software de Microsoft y similares.

El que tenía en mi poder ni siquiera arrancaba ningún sistema operativo. Podía entrar en la bios pero poco mas, asi que probé a pincharle un pendrive con un SystemRescueCD y ahora si arrancó un Linux funcional.

Vamos a ejecutar varios comandos a ver que hay aquí dentro:

root@sysresccd /root % cat /proc/cpuinfo 
processor : 0
vendor_id : GenuineTMx86
cpu family : 5
model  : 4
model name : Transmeta(tm) Crusoe(tm) Processor TM5700
stepping : 3
cpu MHz  : 798.122
cache size : 256 KB
fdiv_bug : no
hlt_bug  : no
f00f_bug : no
coma_bug : no
fpu  : yes
fpu_exception : yes
cpuid level : 1
wp  : yes
flags  : fpu vme de pse tsc msr cx8 sep cmov mmx longrun lrti constant_tsc up
bogomips : 1596.24
clflush size : 32
cache_alignment : 32
address sizes : 32 bits physical, 32 bits virtual
power management:
Mmm, que bueno, procesador Transmeta a 800Mhz, diseñado en parte por el mismísimo Linus Torvalds.

Disk /dev/sda: 512 MB, 512483328 bytes, 1000944 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1      997541      498770+  83  Linux

root@sysresccd /root % hdparm -i /dev/sda1

/dev/sda1:

 Model=512MB ATA Flash Disk, FwRev=ADBA217H, SerialNo=C001805615
 Config={ HardSect NotMFM Fixed DTR>10Mbs }
 RawCHS=993/16/63, TrkSize=0, SectSize=512, ECCbytes=4
 BuffType=DualPort, BuffSize=1kB, MaxMultSect=1, MultSect=off
 CurCHS=993/16/63, CurSects=1000944, LBA=yes, LBAsects=1000944
 IORDY=yes, tPIO={min:120,w/IORDY:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4 
 AdvancedPM=no WriteCache=disabled

 * signifies the current active mode
Disco duro de 512Mb sobre una memoria Flash,... medio Gb de disco duro en una precuela de los modernos SSD.

root@sysresccd /root % free
             total       used       free     shared    buffers     cached
Mem:        232676     136824      95852          0      13612      76144
-/+ buffers/cache:      47068     185608
Swap:            0          0          0
Memoria RAM de 256Mb, un poco justito para correr un thinclient con LTSP.

root@sysresccd /root % lspci -nn
00:00.0 Host bridge [0600]: Transmeta Corporation LongRun Northbridge [1279:0395] (rev 04)
00:00.1 RAM memory [0500]: Transmeta Corporation SDRAM controller [1279:0396]
00:00.2 RAM memory [0500]: Transmeta Corporation BIOS scratchpad [1279:0397]
00:00.3 RAM memory [0500]: Transmeta Corporation Device [1279:0399]
00:09.0 USB controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 61)
00:09.1 USB controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 61)
00:09.2 USB controller [0c03]: VIA Technologies, Inc. USB 2.0 [1106:3104] (rev 63)
00:0d.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] RV100 [Radeon 7000 / Radeon VE] [1002:5159]
00:11.0 ISA bridge [0601]: VIA Technologies, Inc. VT8231 [PCI-to-ISA Bridge] [1106:8231] (rev 10)
00:11.1 IDE interface [0101]: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE [1106:0571] (rev 06)
00:11.4 Bridge [0680]: VIA Technologies, Inc. VT8235 ACPI [1106:8235] (rev 10)
00:11.5 Multimedia audio controller [0401]: VIA Technologies, Inc. VT82C686 AC97 Audio Controller [1106:3058] (rev 40)
00:12.0 Ethernet controller [0200]: VIA Technologies, Inc. VT6102 [Rhine-II] [1106:3065] (rev 51)
root@sysresccd /root % 
Se detecta tarjeta de sonido, de video y de red. El pequeñín es un MiniPC completo, una Raspberry Pi del paleolítico. Por último, hago un dmidecode y un dmesg para ver los mensajes de arranque:

root@sysresccd /root % dmidecode 
# dmidecode 2.11
SMBIOS 2.3 present.
32 structures occupying 1002 bytes.
Table at 0x000F0800.

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
 Vendor: Phoenix Technologies, LTD
 Version: 786R1 v1.07  
 Release Date: 12/10/2004
 Address: 0xE0000
 Runtime Size: 128 kB
 ROM Size: 512 kB
 Characteristics:
  PCI is supported
  PNP is supported
  BIOS is upgradeable
  BIOS shadowing is allowed
  ESCD support is available
  Boot from CD is supported
  Selectable boot is supported
  EDD is supported
  5.25"/360 kB floppy services are supported (int 13h)
  5.25"/1.2 MB floppy services are supported (int 13h)
  3.5"/720 kB floppy services are supported (int 13h)
  3.5"/2.88 MB floppy services are supported (int 13h)
  Print screen service is supported (int 5h)
  8042 keyboard services are supported (int 9h)
  Serial services are supported (int 14h)
  Printer services are supported (int 17h)
  CGA/mono video services are supported (int 10h)
  ACPI is supported
  USB legacy is supported
  BIOS boot specification is supported
  Function key-initiated network boot is supported

Handle 0x0001, DMI type 1, 25 bytes
System Information
 Manufacturer: Hewlett-Packard
 Product Name: hp t5000 series
 Version:  
 Serial Number: CNV51506Q1
 UUID: E4D16A12-B1EB-049E-D711-601DA0274CD6
 Wake-up Type: Power Switch

Handle 0x0002, DMI type 2, 8 bytes
Base Board Information
 Manufacturer: Hewlett-Packard
 Product Name: 998h
 Version:  
 Serial Number: CNV51506Q1

Handle 0x0003, DMI type 3, 17 bytes
Chassis Information
 Manufacturer: Hewlett-Packard
 Type: Desktop
 Lock: Not Present
 Version:  
 Serial Number: CNV51506Q1
 Asset Tag: 000000000000000000
 Boot-up State: Unknown
 Power Supply State: Unknown
 Thermal State: Unknown
 Security Status: Unknown
 OEM Information: 0x00000000

Handle 0x0004, DMI type 4, 35 bytes
Processor Information
 Socket Designation:       
 Type: Central Processor
 Family: Crusoe TM5000
 Manufacturer: Transmeta
 ID: 43 05 00 00 3F 89 84 00
 Version: TM5700
 Voltage: 1.3 V
 External Clock: 66 MHz
 Max Speed: 800 MHz
 Current Speed: 800 MHz
 Status: Populated, Enabled
 Upgrade: None
 L1 Cache Handle: 0x0000
 L2 Cache Handle: 0x0000
 L3 Cache Handle: Not Provided
 Serial Number:  
 Asset Tag:  
 Part Number:  

Handle 0x0005, DMI type 5, 18 bytes
Memory Controller Information
 Error Detecting Method: 8-bit Parity
 Error Correcting Capabilities:
  None
 Supported Interleave: One-way Interleave
 Current Interleave: One-way Interleave
 Maximum Memory Module Size: 1024 MB
 Maximum Total Memory Size: 1024 MB
 Supported Speeds:
  70 ns
  60 ns
 Supported Memory Types:
  Standard
  SDRAM
 Memory Module Voltage: 5.0 V
 Associated Memory Slots: 1
  0x0006
 Enabled Error Correcting Capabilities: None

Handle 0x0006, DMI type 7, 19 bytes
Cache Information
 Socket Designation: Internal L1 Cache
 Configuration: Enabled, Not Socketed, Level 1
 Operational Mode: Write Back
 Location: Internal
 Installed Size: 128 kB
 Maximum Size: 128 kB
 Supported SRAM Types:
  Burst
 Installed SRAM Type: Burst
 Speed: Unknown
 Error Correction Type: Unknown
 System Type: Unknown
 Associativity: 8-way Set-associative

Handle 0x0007, DMI type 7, 19 bytes
Cache Information
 Socket Designation: Cache L2
 Configuration: Enabled, Not Socketed, Level 2
 Operational Mode: Write Back
 Location: Internal
 Installed Size: 256 kB
 Maximum Size: 256 kB
 Supported SRAM Types:
  Burst
 Installed SRAM Type: Burst
 Speed: Unknown
 Error Correction Type: Unknown
 System Type: Unknown
 Associativity: 8-way Set-associative

Handle 0x0008, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator: PRIMARY IDE
 Internal Connector Type: On Board IDE
 External Reference Designator: Not Specified
 External Connector Type: None
 Port Type: Other

Handle 0x0009, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator: COM1
 Internal Connector Type: 9 Pin Dual Inline (pin 10 cut)
 External Reference Designator: COMA
 External Connector Type: DB-9 male
 Port Type: Serial Port 16450 Compatible

Handle 0x000A, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator: LPT1
 Internal Connector Type: DB-25 female
 External Reference Designator: Parallel
 External Connector Type: DB-25 female
 Port Type: Parallel Port ECP/EPP

Handle 0x000B, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:  
 Internal Connector Type: None
 External Reference Designator: Keyboard/Mouse
 External Connector Type: PS/2
 Port Type: Keyboard Port

Handle 0x000C, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:   
 Internal Connector Type: None
 External Reference Designator: USB0
 External Connector Type: Access Bus (USB)
 Port Type: USB

Handle 0x000D, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:   
 Internal Connector Type: None
 External Reference Designator: USB1
 External Connector Type: Access Bus (USB)
 Port Type: USB

Handle 0x000E, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:   
 Internal Connector Type: None
 External Reference Designator: USB2
 External Connector Type: Access Bus (USB)
 Port Type: USB

Handle 0x000F, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:   
 Internal Connector Type: None
 External Reference Designator: USB3
 External Connector Type: Access Bus (USB)
 Port Type: USB

Handle 0x0010, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator: Not Specified
 Internal Connector Type: None
 External Reference Designator: VGA
 External Connector Type: DB-15 female
 Port Type: Video Port

Handle 0x0011, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:  
 Internal Connector Type: None
 External Reference Designator: Line Out
 External Connector Type: Mini Jack (headphones)
 Port Type: Audio Port

Handle 0x0012, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator:  
 Internal Connector Type: None
 External Reference Designator: Microphone
 External Connector Type: Mini Jack (headphones)
 Port Type: Audio Port

Handle 0x0013, DMI type 8, 9 bytes
Port Connector Information
 Internal Reference Designator: Not Specified
 Internal Connector Type: None
 External Reference Designator: LAN
 External Connector Type: RJ-45
 Port Type: Network Port

Handle 0x0014, DMI type 9, 13 bytes
System Slot Information
 Designation: PCI0
 Type: 32-bit PCI
 Current Usage: Available
 Length: Short
 ID: 1
 Characteristics:
  5.0 V is provided
  PME signal is supported

Handle 0x0015, DMI type 13, 22 bytes
BIOS Language Information
 Language Description Format: Long
 Installable Languages: 3
  n|US|iso8859-1
  n|US|iso8859-1
  r|CA|iso8859-1
 Currently Installed Language: n|US|iso8859-1

Handle 0x0016, DMI type 16, 15 bytes
Physical Memory Array
 Location: System Board Or Motherboard
 Use: System Memory
 Error Correction Type: None
 Maximum Capacity: 1 GB
 Error Information Handle: 0x0000
 Number Of Devices: 1

Handle 0x0017, DMI type 17, 27 bytes
Memory Device
 Array Handle: 0x0016
 Error Information Handle: Not Provided
 Total Width: 64 bits
 Data Width: 64 bits
 Size: 256 MB
 Form Factor: SODIMM
 Set: None
 Locator: A0
 Bank Locator:  
 Type: DDR
 Type Detail: None
 Speed: Unknown
 Manufacturer: None
 Serial Number: None
 Asset Tag: None
 Part Number: None

Handle 0x0018, DMI type 19, 15 bytes
Memory Array Mapped Address
 Starting Address: 0x00000000000
 Ending Address: 0x000100003FF
 Range Size: 262145 kB
 Physical Array Handle: 0x0016
 Partition Width: 1

Handle 0x0019, DMI type 20, 19 bytes
Memory Device Mapped Address
 Starting Address: 0x00000000000
 Ending Address: 0x000100003FF
 Range Size: 262145 kB
 Physical Device Handle: 0x0017
 Memory Array Mapped Address Handle: 0x0018
 Partition Row Position: 1

Handle 0x001A, DMI type 16, 15 bytes
Physical Memory Array
 Location: System Board Or Motherboard
 Use: Flash Memory
 Error Correction Type: None
 Maximum Capacity: 2 MB
 Error Information Handle: Not Provided
 Number Of Devices: 1

Handle 0x001B, DMI type 17, 27 bytes
Memory Device
 Array Handle: 0x001A
 Error Information Handle: Not Provided
 Total Width: 8 bits
 Data Width: 8 bits
 Size: 2048 kB
 Form Factor: Chip
 Set: None
 Locator: U16
 Bank Locator:  
 Type: Flash
 Type Detail: Non-Volatile
 Speed: 33 MHz
 Manufacturer: None
 Serial Number: None
 Asset Tag: None
 Part Number: None

Handle 0x001C, DMI type 19, 15 bytes
Memory Array Mapped Address
 Starting Address: 0x000FFF80000
 Ending Address: 0x001000003FF
 Range Size: 513 kB
 Physical Array Handle: 0x001A
 Partition Width: 1

Handle 0x001D, DMI type 20, 19 bytes
Memory Device Mapped Address
 Starting Address: 0x000FFF80000
 Ending Address: 0x001000003FF
 Range Size: 513 kB
 Physical Device Handle: 0x001B
 Memory Array Mapped Address Handle: 0x001C
 Partition Row Position: 1

Handle 0x001F, DMI type 127, 4 bytes
End Of Table

Handle 0x001E, DMI type 11, 5 bytes
 

Wrong DMI structures length: 1002 bytes announced, structures occupy 1003 bytes.

root@sysresccd /root % dmesg
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.4.47-std370-i586 (root@catalyst) (gcc version 4.4.7 (Gentoo 4.4.7 p1.2, pie-0.4.5) ) #2 SMP Mon Jun 3 08:19:24 UTC 2013
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009b000 (usable)
[    0.000000]  BIOS-e820: 000000000009b000 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000000eff0000 (usable)
[    0.000000]  BIOS-e820: 000000000eff0000 - 000000000eff3000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000000eff3000 - 000000000f000000 (ACPI data)
[    0.000000]  BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
[    0.000000] Notice: NX (Execute Disable) protection missing in CPU!
[    0.000000] SMBIOS 2.3 present.
[    0.000000] DMI: Hewlett-Packard hp t5000 series/998h, BIOS 786R1 v1.07   12/10/2004
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[    0.000000] last_pfn = 0xeff0 max_arch_pfn = 0x100000
[    0.000000] initial memory mapped : 0 - 01800000
[    0.000000] Base memory trampoline at [c009a000] 9a000 size 4096
[    0.000000] init_memory_mapping: 0000000000000000-000000000eff0000
[    0.000000]  0000000000 - 0000400000 page 4k
[    0.000000]  0000400000 - 000ec00000 page 2M
[    0.000000]  000ec00000 - 000eff0000 page 4k
[    0.000000] kernel direct mapping tables up to 0xefeffff @ [mem 0x017f7000-0x017fffff]
[    0.000000] RAMDISK: 0e4c5000 - 0efee000
[    0.000000] ACPI: RSDP 000f6620 00014 (v00 I-BASE)
[    0.000000] ACPI: RSDT 0eff3000 00028 (v01 I-BASE AWRDACPI 42302E31 AWRD 00000000)
[    0.000000] ACPI: FACP 0eff3040 00074 (v01 I-BASE AWRDACPI 42302E31 AWRD 00000000)
[    0.000000] ACPI: DSDT 0eff30c0 01C16 (v01 I-BASE AWRDACPI 00001000 MSFT 0100000C)
[    0.000000] ACPI: FACS 0eff0000 00040
[    0.000000] 0MB HIGHMEM available.
[    0.000000] 239MB LOWMEM available.
[    0.000000]   mapped low ram: 0 - 0eff0000
[    0.000000]   low ram: 0 - 0eff0000
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000010 -> 0x00001000
[    0.000000]   Normal   0x00001000 -> 0x0000eff0
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start PFN for each node
[    0.000000] Early memory PFN ranges
[    0.000000]     0: 0x00000010 -> 0x0000009b
[    0.000000]     0: 0x00000100 -> 0x0000eff0
[    0.000000] On node 0 totalpages: 61307
[    0.000000] free_area_init_node: node 0, pgdat c0cd62c0, node_mem_map ce2e5200
[    0.000000]   DMA zone: 32 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3947 pages, LIFO batch:0
[    0.000000]   Normal zone: 448 pages used for memmap
[    0.000000]   Normal zone: 56880 pages, LIFO batch:15
[    0.000000] Using APIC driver default
[    0.000000] ACPI: PM-Timer IO Port: 0x4008
[    0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs
[    0.000000] No local APIC present or hardware disabled
[    0.000000] APIC: disable apic facility
[    0.000000] APIC: switched to apic NOOP
[    0.000000] nr_irqs_gsi: 16
[    0.000000] Allocating PCI resources starting at f000000 (gap: f000000:f0ff0000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1
[    0.000000] PERCPU: Embedded 13 pages/cpu @ce2d5000 s31296 r0 d21952 u53248
[    0.000000] pcpu-alloc: s31296 r0 d21952 u53248 alloc=13*4096
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 60827
[    0.000000] Kernel command line: initrd=initram.igz BOOT_IMAGE=rescue32 scandelay=5
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Initializing CPU#0
[    0.000000] allocated 491264 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Initializing HighMem for node 0 (00000000:00000000)
[    0.000000] Memory: 213100k/245696k available (6069k kernel code, 32128k reserved, 3067k data, 8120k init, 0k highmem)
[    0.000000] virtual kernel memory layout:
[    0.000000]     fixmap  : 0xffa95000 - 0xfffff000   (5544 kB)
[    0.000000]     pkmap   : 0xff400000 - 0xff800000   (4096 kB)
[    0.000000]     vmalloc : 0xcf7f0000 - 0xff3fe000   ( 764 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xceff0000   ( 239 MB)
[    0.000000]       .init : 0xc0ced000 - 0xc14db000   (8120 kB)
[    0.000000]       .data : 0xc09ed4d1 - 0xc0cec1c0   (3067 kB)
[    0.000000]       .text : 0xc0400000 - 0xc09ed4d1   (6069 kB)
[    0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[    0.000000] SLUB: Genslabs=15, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:2304 nr_irqs:256 16
[    0.000000] CPU 0 irqstacks, hard=cdc08000 soft=cdc0a000
[    0.000000] Console: colour VGA+ 80x25
[    0.000000] console [tty0] enabled
[    0.000000] Fast TSC calibration failed
[    0.000000] TSC: PIT calibration matches PMTIMER. 3 loops
[    0.000000] Detected 798.122 MHz processor.
[    0.007047] Calibrating delay loop (skipped), value calculated using timer frequency.. 1596.24 BogoMIPS (lpj=798122)
[    0.011427] pid_max: default: 32768 minimum: 301
[    0.025206] Security Framework initialized
[    0.025493] SELinux:  Disabled at boot.
[    0.037296] Mount-cache hash table entries: 512
[    0.060123] Initializing cgroup subsys cpuacct
[    0.060335] Initializing cgroup subsys memory
[    0.061224] Initializing cgroup subsys devices
[    0.061419] Initializing cgroup subsys freezer
[    0.061596] Initializing cgroup subsys net_cls
[    0.061773] Initializing cgroup subsys blkio
[    0.062043] Initializing cgroup subsys perf_event
[    0.065416] CPU: Processor revision 1.5.0.2, 800 MHz
[    0.065607] CPU: Code Morphing Software revision 4.5.2-12-11
[    0.065785] CPU: 20040614 15:00 official release 4.5.2#1
[    0.066030] CPU serial number disabled.
[    0.068576] SMP alternatives: switching to UP code
[    0.152773] Freeing SMP alternatives: 28k freed
[    0.156344] ACPI: Core revision 20120320
[    0.229825] ACPI: setting ELCR to 0200 (from 8e20)
[    0.235710] weird, boot CPU (#0) not listed by the BIOS.
[    0.236036] SMP motherboard not detected.
[    0.236834] Local APIC not detected. Using dummy APIC emulation.
[    0.237099] SMP disabled
[    0.237316] Performance Events: 
[    0.261341] NMI watchdog: disabled (cpu0): hardware events not enabled
[    0.265170] Brought up 1 CPUs
[    0.265538] Total of 1 processors activated (1596.24 BogoMIPS).
[    0.285644] devtmpfs: initialized
[    0.316156] atomic64 test passed for i386+ platform with CX8 and without SSE
[    0.322339] NET: Registered protocol family 16
[    0.337302] ACPI: bus type pci registered
[    0.342493] PCI: PCI BIOS revision 2.10 entry at 0xfa290, last bus=0
[    0.342709] PCI: Using configuration type 1 for base access
[    0.383513] bio: create slab  at 0
[    0.409681] ACPI: Added _OSI(Module Device)
[    0.410771] ACPI: Added _OSI(Processor Device)
[    0.410997] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.411367] ACPI: Added _OSI(Processor Aggregator Device)
[    0.418127] ACPI: EC: Look up EC in DSDT
[    0.504526] ACPI: Interpreter enabled
[    0.504919] ACPI: (supports S0 S5)
[    0.505507] ACPI: Using PIC for interrupt routing
[    0.601362] ACPI: No dock devices found.
[    0.601759] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug
[    0.607292] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.615850] pci_root PNP0A03:00: host bridge window [io  0x0000-0x0cf7] (ignored)
[    0.616002] pci_root PNP0A03:00: host bridge window [io  0x0d00-0x3fff] (ignored)
[    0.616075] pci_root PNP0A03:00: host bridge window [io  0x4100-0x4fff] (ignored)
[    0.616235] pci_root PNP0A03:00: host bridge window [io  0x5010-0xffff] (ignored)
[    0.616468] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored)
[    0.616733] pci_root PNP0A03:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored)
[    0.616915] pci_root PNP0A03:00: host bridge window [mem 0x0f000000-0xffefffff] (ignored)
[    0.616960] PCI: root bus 00: using default resources
[    0.618142] PCI host bridge to bus 0000:00
[    0.618914] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.618989] pci_bus 0000:00: root bus resource [mem 0x00000000-0xffffffff]
[    0.619285] pci 0000:00:00.0: [1279:0395] type 00 class 0x060000
[    0.620101] pci 0000:00:00.0: reg 10: [mem 0xe8000000-0xe80fffff]
[    0.622250] pci 0000:00:00.1: [1279:0396] type 00 class 0x050000
[    0.625025] pci 0000:00:00.2: [1279:0397] type 00 class 0x050000
[    0.626501] pci 0000:00:00.3: [1279:0399] type 00 class 0x050000
[    0.628830] pci 0000:00:09.0: [1106:3038] type 00 class 0x0c0300
[    0.629597] pci 0000:00:09.0: reg 20: [io  0xe000-0xe01f]
[    0.630405] pci 0000:00:09.0: supports D1 D2
[    0.630430] pci 0000:00:09.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.630895] pci 0000:00:09.1: [1106:3038] type 00 class 0x0c0300
[    0.631040] pci 0000:00:09.1: reg 20: [io  0xe100-0xe11f]
[    0.631792] pci 0000:00:09.1: supports D1 D2
[    0.631814] pci 0000:00:09.1: PME# supported from D0 D1 D2 D3hot D3cold
[    0.631993] pci 0000:00:09.2: [1106:3104] type 00 class 0x0c0320
[    0.632159] pci 0000:00:09.2: reg 10: [mem 0xe8131000-0xe81310ff]
[    0.632476] pci 0000:00:09.2: supports D1 D2
[    0.632496] pci 0000:00:09.2: PME# supported from D0 D1 D2 D3hot D3cold
[    0.633015] pci 0000:00:0d.0: [1002:5159] type 00 class 0x030000
[    0.633912] pci 0000:00:0d.0: reg 10: [mem 0xe0000000-0xe7ffffff pref]
[    0.633978] pci 0000:00:0d.0: reg 14: [io  0xe200-0xe2ff]
[    0.634016] pci 0000:00:0d.0: reg 18: [mem 0xe8120000-0xe812ffff]
[    0.634298] pci 0000:00:0d.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[    0.635094] pci 0000:00:0d.0: supports D1 D2
[    0.635657] pci 0000:00:11.0: [1106:8231] type 00 class 0x060100
[    0.635970] pci 0000:00:11.1: [1106:0571] type 00 class 0x01018a
[    0.636063] pci 0000:00:11.1: reg 20: [io  0xe300-0xe30f]
[    0.636765] pci 0000:00:11.4: [1106:8235] type 00 class 0x068000
[    0.637163] pci 0000:00:11.5: [1106:3058] type 00 class 0x040100
[    0.637225] pci 0000:00:11.5: reg 10: [io  0xe600-0xe6ff]
[    0.637517] pci 0000:00:11.5: reg 14: [io  0xe700-0xe703]
[    0.637555] pci 0000:00:11.5: reg 18: [io  0xe800-0xe803]
[    0.637731] pci 0000:00:12.0: [1106:3065] type 00 class 0x020000
[    0.637894] pci 0000:00:12.0: reg 10: [io  0xe900-0xe9ff]
[    0.637961] pci 0000:00:12.0: reg 14: [mem 0xe8130000-0xe81300ff]
[    0.638361] pci 0000:00:12.0: supports D1 D2
[    0.638381] pci 0000:00:12.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.638586] pci_bus 0000:00: on NUMA node 0
[    0.638638] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.644688]  pci0000:00: Unable to request _OSC control (_OSC support mask: 0x1e)
[    0.695771] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 11 12 14 *15)
[    0.699148] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 *5 6 7 10 11 12 14 15)
[    0.702064] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 *10 11 12 14 15)
[    0.706979] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 10 *11 12 14 15)
[    0.711567] vgaarb: device added: PCI:0000:00:0d.0,decodes=io+mem,owns=io+mem,locks=none
[    0.712411] vgaarb: loaded
[    0.712594] vgaarb: bridge control possible 0000:00:0d.0
[    0.715520] SCSI subsystem initialized
[    0.718251] libata version 3.00 loaded.
[    0.719361] usbcore: registered new interface driver usbfs
[    0.720419] usbcore: registered new interface driver hub
[    0.722250] usbcore: registered new device driver usb
[    0.726968] PCI: Using ACPI for IRQ routing
[    0.727372] PCI: pci_cache_line_size set to 32 bytes
[    0.731985] reserve RAM buffer: 000000000009b000 - 000000000009ffff 
[    0.732146] reserve RAM buffer: 000000000eff0000 - 000000000fffffff 
[    0.737349] NetLabel: Initializing
[    0.737550] NetLabel:  domain hash size = 128
[    0.737718] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.740933] NetLabel:  unlabeled traffic allowed by default
[    0.742311] Switching to clocksource pit
[    0.824587] pnp: PnP ACPI init
[    0.824897] ACPI: bus type pnp registered
[    0.829064] pnp 00:00: [mem 0x000d6000-0x000d7fff]
[    0.829105] pnp 00:00: [mem 0x000f0000-0x000f7fff]
[    0.829129] pnp 00:00: [mem 0x000f8000-0x000fbfff]
[    0.829228] pnp 00:00: [mem 0x000fc000-0x000fffff]
[    0.829254] pnp 00:00: [mem 0x0eff0000-0x0effffff]
[    0.829278] pnp 00:00: [mem 0xffff0000-0xffffffff]
[    0.829487] pnp 00:00: [mem 0x00000000-0x0009ffff]
[    0.829522] pnp 00:00: [mem 0x00100000-0x0efeffff]
[    0.829546] pnp 00:00: [mem 0xfee00000-0xfee00fff]
[    0.832388] system 00:00: [mem 0x000d6000-0x000d7fff] has been reserved
[    0.832613] system 00:00: [mem 0x000f0000-0x000f7fff] could not be reserved
[    0.832971] system 00:00: [mem 0x000f8000-0x000fbfff] could not be reserved
[    0.833244] system 00:00: [mem 0x000fc000-0x000fffff] could not be reserved
[    0.833446] system 00:00: [mem 0x0eff0000-0x0effffff] could not be reserved
[    0.833803] system 00:00: [mem 0xffff0000-0xffffffff] has been reserved
[    0.834009] system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved
[    0.834257] system 00:00: [mem 0x00100000-0x0efeffff] could not be reserved
[    0.834457] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved
[    0.834682] system 00:00: Plug and Play ACPI device, IDs PNP0c01 (active)
[    0.836475] pnp 00:01: [bus 00-ff]
[    0.836510] pnp 00:01: [io  0x0cf8-0x0cff]
[    0.836712] pnp 00:01: [io  0x0000-0x0cf7 window]
[    0.836752] pnp 00:01: [io  0x0d00-0x3fff window]
[    0.837081] pnp 00:01: [io  0x4000-0x407f]
[    0.837468] pnp 00:01: [io  0x4080-0x40ff]
[    0.837505] pnp 00:01: [io  0x4100-0x4fff window]
[    0.837525] pnp 00:01: [io  0x5000-0x500f]
[    0.837552] pnp 00:01: [io  0x5010-0xffff window]
[    0.837577] pnp 00:01: [mem 0x000a0000-0x000bffff window]
[    0.837602] pnp 00:01: [mem 0x000c0000-0x000dffff window]
[    0.837626] pnp 00:01: [mem 0x0f000000-0xffefffff window]
[    0.839560] pnp 00:01: Plug and Play ACPI device, IDs PNP0a03 (active)
[    0.840597] pnp 00:02: [io  0x0010-0x001f]
[    0.840632] pnp 00:02: [io  0x0022-0x003f]
[    0.840652] pnp 00:02: [io  0x0044-0x005f]
[    0.840670] pnp 00:02: [io  0x0062-0x0063]
[    0.840688] pnp 00:02: [io  0x0065-0x006f]
[    0.840706] pnp 00:02: [io  0x0074-0x007f]
[    0.841626] pnp 00:02: [io  0x0091-0x0093]
[    0.841830] pnp 00:02: [io  0x00a2-0x00bf]
[    0.841848] pnp 00:02: [io  0x00e0-0x00ef]
[    0.841861] pnp 00:02: [io  0x04d0-0x04d1]
[    0.842649] system 00:02: [io  0x04d0-0x04d1] has been reserved
[    0.842887] system 00:02: Plug and Play ACPI device, IDs PNP0c02 (active)
[    0.845501] pnp 00:03: [dma 4]
[    0.845527] pnp 00:03: [io  0x0000-0x000f]
[    0.845717] pnp 00:03: [io  0x0080-0x0090]
[    0.845734] pnp 00:03: [io  0x0094-0x009f]
[    0.845746] pnp 00:03: [io  0x00c0-0x00df]
[    0.846224] pnp 00:03: Plug and Play ACPI device, IDs PNP0200 (active)
[    0.846588] pnp 00:04: [io  0x0070-0x0073]
[    0.846637] pnp 00:04: [irq 8]
[    0.846947] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
[    0.847046] pnp 00:05: [io  0x0061]
[    0.847291] pnp 00:05: Plug and Play ACPI device, IDs PNP0800 (active)
[    0.847814] pnp 00:06: [io  0x00f0-0x00ff]
[    0.848107] pnp 00:06: [irq 13]
[    0.848514] pnp 00:06: Plug and Play ACPI device, IDs PNP0c04 (active)
[    0.850131] pnp 00:07: [io  0x03f8-0x03ff]
[    0.850260] pnp 00:07: [irq 4]
[    0.852603] pnp 00:07: Plug and Play ACPI device, IDs PNP0501 (active)
[    0.855390] pnp 00:08: [io  0x0378-0x037f]
[    0.855412] pnp 00:08: [io  0x0778-0x077b]
[    0.855454] pnp 00:08: [irq 7]
[    0.855479] pnp 00:08: [dma 3]
[    0.857512] pnp 00:08: Plug and Play ACPI device, IDs PNP0401 (active)
[    0.857809] pnp 00:09: [io  0x0060]
[    0.857824] pnp 00:09: [io  0x0064]
[    0.857859] pnp 00:09: [irq 1]
[    0.858415] pnp 00:09: Plug and Play ACPI device, IDs PNP0303 PNP030b (active)
[    0.858890] pnp: PnP ACPI: found 10 devices
[    0.859094] ACPI: ACPI bus type pnp unregistered
[    0.952255] Switching to clocksource acpi_pm
[    0.954110] pci 0000:00:0d.0: BAR 6: assigned [mem 0x10000000-0x1001ffff pref]
[    0.954674] pci_bus 0000:00: resource 4 [io  0x0000-0xffff]
[    0.954696] pci_bus 0000:00: resource 5 [mem 0x00000000-0xffffffff]
[    0.955820] NET: Registered protocol family 2
[    0.962394] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.973541] hrtimer: interrupt took 5798031 ns
[    0.982544] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.983377] TCP bind hash table entries: 8192 (order: 4, 65536 bytes)
[    0.983895] TCP: Hash tables configured (established 8192 bind 8192)
[    0.984302] TCP: reno registered
[    0.984526] UDP hash table entries: 128 (order: 0, 4096 bytes)
[    0.985288] UDP-Lite hash table entries: 128 (order: 0, 4096 bytes)
[    0.987849] NET: Registered protocol family 1
[    0.992803] RPC: Registered named UNIX socket transport module.
[    0.993008] RPC: Registered udp transport module.
[    0.993248] RPC: Registered tcp transport module.
[    0.993425] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.998006] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 15
[    0.998309] PCI: setting IRQ 15 as level-triggered
[    1.001210] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 5
[    1.001416] PCI: setting IRQ 5 as level-triggered
[    1.003793] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
[    1.004000] PCI: setting IRQ 10 as level-triggered
[    1.004622] pci 0000:00:0d.0: Boot video device
[    1.004718] PCI: CLS 32 bytes, default 32
[    1.213832] Unpacking initramfs...
[    6.231345] Freeing initrd memory: 11428k freed
[    6.272394] audit: initializing netlink socket (disabled)
[    6.272776] type=2000 audit(1434361353.271:1): initialized
[    6.420372] HugeTLB registered 4 MB page size, pre-allocated 0 pages
[    6.434787] VFS: Disk quotas dquot_6.5.2
[    6.435595] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    6.441473] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    6.442634] NFS: Registering the id_resolver key type
[    6.444728] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    6.445197] NTFS driver 2.1.30 [Flags: R/O].
[    6.451799] fuse init (API version 7.18)
[    6.453604] JFS: nTxBlock = 1754, nTxLock = 14034
[    6.459632] SGI XFS with ACLs, security attributes, realtime, large block/inode numbers, no debug enabled
[    6.465434] Btrfs loaded
[    6.466869] aufs 3.4-20130506
[    6.467569] msgmni has been set to 438
[    6.507500] alg: No test for stdrng (krng)
[    6.508287] NET: Registered protocol family 38
[    6.508656] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[    6.510618] io scheduler noop registered
[    6.510817] io scheduler deadline registered
[    6.511173] io scheduler cfq registered (default)
[    6.522452] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[    6.522869] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[    6.523121] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    6.530341] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    6.530984] ACPI: Power Button [PWRB]
[    6.532316] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    6.532688] ACPI: Power Button [PWRF]
[    6.534129] input: Sleep Button as /devices/LNXSYSTM:00/LNXSLPBN:00/input/input2
[    6.534502] ACPI: Sleep Button [SLPF]
[    6.537423] Marking TSC unstable due to TSC halts in idle
[    6.537701] ACPI: acpi_idle registered with cpuidle
[    6.549489] GHES: HEST is not enabled!
[    6.549808] isapnp: Scanning for PnP cards...
[    6.911523] isapnp: No Plug & Play device found
[    6.912507] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    6.936632] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    6.968347] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[    6.971828] Non-volatile memory driver v1.3
[    6.972129] Linux agpgart interface v0.103
[    6.985292] loop: module loaded
[    6.989996] Fixed MDIO Bus: probed
[    6.992193] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    6.992816] ehci_hcd 0000:00:09.2: EHCI Host Controller
[    6.993673] ehci_hcd 0000:00:09.2: new USB bus registered, assigned bus number 1
[    6.994894] ehci_hcd 0000:00:09.2: irq 10, io mem 0xe8131000
[    7.001556] ehci_hcd 0000:00:09.2: USB 2.0 started, EHCI 1.00
[    7.003004] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    7.003272] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    7.003588] usb usb1: Product: EHCI Host Controller
[    7.003762] usb usb1: Manufacturer: Linux 3.4.47-std370-i586 ehci_hcd
[    7.003937] usb usb1: SerialNumber: 0000:00:09.2
[    7.006296] hub 1-0:1.0: USB hub found
[    7.006803] hub 1-0:1.0: 4 ports detected
[    7.015141] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    7.015415] uhci_hcd: USB Universal Host Controller Interface driver
[    7.015896] uhci_hcd 0000:00:09.0: UHCI Host Controller
[    7.017205] uhci_hcd 0000:00:09.0: new USB bus registered, assigned bus number 2
[    7.017705] uhci_hcd 0000:00:09.0: irq 15, io base 0x0000e000
[    7.019570] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[    7.019771] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    7.020149] usb usb2: Product: UHCI Host Controller
[    7.020324] usb usb2: Manufacturer: Linux 3.4.47-std370-i586 uhci_hcd
[    7.020498] usb usb2: SerialNumber: 0000:00:09.0
[    7.023177] hub 2-0:1.0: USB hub found
[    7.023893] hub 2-0:1.0: 2 ports detected
[    7.026590] uhci_hcd 0000:00:09.1: UHCI Host Controller
[    7.028153] uhci_hcd 0000:00:09.1: new USB bus registered, assigned bus number 3
[    7.028644] uhci_hcd 0000:00:09.1: irq 5, io base 0x0000e100
[    7.031448] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[    7.031653] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    7.031966] usb usb3: Product: UHCI Host Controller
[    7.032202] usb usb3: Manufacturer: Linux 3.4.47-std370-i586 uhci_hcd
[    7.032381] usb usb3: SerialNumber: 0000:00:09.1
[    7.034723] hub 3-0:1.0: USB hub found
[    7.034988] hub 3-0:1.0: 2 ports detected
[    7.038336] usbcore: registered new interface driver usbserial
[    7.038858] usbcore: registered new interface driver usbserial_generic
[    7.039213] USB Serial support registered for generic
[    7.039579] usbserial: USB Serial Driver core
[    7.040812] i8042: PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
[    7.041001] i8042: PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
[    7.041906] serio: i8042 KBD port at 0x60,0x64 irq 1
[    7.043578] mousedev: PS/2 mouse device common for all mice
[    7.046945] rtc_cmos 00:04: RTC can wake from S4
[    7.050482] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[    7.051564] rtc0: alarms up to one year, y3k, 242 bytes nvram
[    7.052851] device-mapper: uevent: version 1.0.3
[    7.054555] device-mapper: ioctl: 4.22.0-ioctl (2011-10-19) initialised: dm-devel@redhat.com
[    7.057104] cpuidle: using governor ladder
[    7.058295] cpuidle: using governor menu
[    7.063291] EFI Variables Facility v0.08 2004-May-17
[    7.066828] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3
[    7.068480] usbcore: registered new interface driver usbhid
[    7.068668] usbhid: USB HID core driver
[    7.077510] ip_tables: (C) 2000-2006 Netfilter Core Team
[    7.078488] TCP: cubic registered
[    7.078674] Initializing XFRM netlink socket
[    7.079755] NET: Registered protocol family 10
[    7.086873] Mobile IPv6
[    7.087559] NET: Registered protocol family 17
[    7.088211] Registering the dns_resolver key type
[    7.090546] Using IPI No-Shortcut mode
[    7.092161] registered taskstats version 1
[    7.100200] rtc_cmos 00:04: setting system clock to 2015-06-15 09:42:35 UTC (1434361355)
[    7.103348] Initializing network drop monitor service
[    7.107658] Freeing unused kernel memory: 8120k freed
[    7.135257] Write protecting the kernel text: 6072k
[    7.135904] Write protecting the kernel read-only data: 2564k
[    7.360629] usb 1-2: new high-speed USB device number 2 using ehci_hcd
[    7.494182] usb 1-2: New USB device found, idVendor=0781, idProduct=5406
[    7.494441] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    7.494675] usb 1-2: Product: U3 Cruzer Micro
[    7.494887] usb 1-2: Manufacturer: SanDisk
[    7.495156] usb 1-2: SerialNumber: 500183165D81D985
[    7.910435] usb 3-1: new low-speed USB device number 2 using uhci_hcd
[    8.074847] usb 3-1: New USB device found, idVendor=046d, idProduct=c050
[    8.074876] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    8.074893] usb 3-1: Product: USB-PS/2 Optical Mouse
[    8.074905] usb 3-1: Manufacturer: Logitech
[    8.103714] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:09.1/usb3/3-1/3-1:1.0/input/input4
[    8.104598] generic-usb 0003:046D:C050.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:09.1-1/input0
[   11.256601] pata_via 0000:00:11.1: version 0.3.4
[   11.441653] scsi0 : pata_via
[   11.458297] via_rhine: v1.10-LK1.5.0 2010-10-09 Written by Donald Becker
[   11.461547] scsi1 : pata_via
[   11.462184] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xe300 irq 14
[   11.462215] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xe308 irq 15
[   11.629951] ata1.00: CFA:  512MB ATA Flash Disk, ADBA217H, max PIO4
[   11.629984] ata1.00: 1000944 sectors, multi 0: LBA 
[   11.637852] ata1.00: configured for PIO4
[   11.641926] scsi 0:0:0:0: Direct-Access     ATA       512MB ATA Flash ADBA PQ: 0 ANSI: 5
[   11.645718] sd 0:0:0:0: [sda] 1000944 512-byte logical blocks: (512 MB/488 MiB)
[   11.655308] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   11.659768] ata2: port disabled--ignoring
[   11.663235] sd 0:0:0:0: [sda] Write Protect is off
[   11.663269] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[   11.668504] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[   11.673748] via-rhine 0000:00:12.0: eth0: VIA Rhine II at 0xe8130000, 00:11:85:e3:40:5a, IRQ 15
[   11.675256] via-rhine 0000:00:12.0: eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1
[   11.738761] Initializing USB Mass Storage driver...
[   11.763572]  sda: sda1
[   11.786218] sd 0:0:0:0: [sda] Attached SCSI disk
[   11.849194] scsi2 : usb-storage 1-2:1.0
[   11.893808] usbcore: registered new interface driver usb-storage
[   11.893834] USB Mass Storage support registered.
[   12.184144] [drm] Initialized drm 1.1.0 20060810
[   12.597278] [drm] radeon defaulting to kernel modesetting.
[   12.597305] [drm] radeon kernel modesetting enabled.
[   12.609456] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 11
[   12.609495] PCI: setting IRQ 11 as level-triggered
[   12.616404] [drm] initializing kernel modesetting (RV100 0x1002:0x5159 0x1002:0x5159).
[   12.618216] [drm] register mmio base: 0xE8120000
[   12.618234] [drm] register mmio size: 65536
[   12.625148] radeon 0000:00:0d.0: VRAM: 128M 0x00000000E0000000 - 0x00000000E7FFFFFF (16M used)
[   12.625184] radeon 0000:00:0d.0: GTT: 512M 0x00000000C0000000 - 0x00000000DFFFFFFF
[   12.625326] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[   12.625342] [drm] Driver supports precise vblank timestamp query.
[   12.625489] [drm] radeon: irq initialized.
[   12.625512] [drm] Detected VRAM RAM=128M, BAR=128M
[   12.625526] [drm] RAM width 32bits DDR
[   12.631753] [TTM] Zone  kernel: Available graphics memory: 116338 kiB
[   12.631775] [TTM] Initializing pool allocator
[   12.632630] [drm] radeon: 16M of VRAM memory ready
[   12.632665] [drm] radeon: 512M of GTT memory ready.
[   12.632806] [drm] GART: num cpu pages 131072, num gpu pages 131072
[   12.669625] [drm] radeon: ib pool ready.
[   12.698613] [drm] PCIE GART of 512M enabled (table at 0x000000000EB00000).
[   12.739377] radeon 0000:00:0d.0: WB disabled
[   12.739445] [drm] fence driver on ring 0 use gpu addr 0xc0000000 and cpu addr 0xce896000
[   12.741999] [drm] Loading R100 Microcode
[   12.859551] scsi 2:0:0:0: Direct-Access     SanDisk  Cruzer           8.01 PQ: 0 ANSI: 0 CCS
[   12.922417] sd 2:0:0:0: [sdb] 7843839 512-byte logical blocks: (4.01 GB/3.73 GiB)
[   12.927177] sd 2:0:0:0: [sdb] Write Protect is off
[   12.927215] sd 2:0:0:0: [sdb] Mode Sense: 45 00 00 08
[   12.932568] sd 2:0:0:0: Attached scsi generic sg1 type 0
[   12.946569] sd 2:0:0:0: [sdb] No Caching mode page present
[   12.946601] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[   12.970469] [drm] radeon: ring at 0x00000000C0001000
[   12.971649] sd 2:0:0:0: [sdb] No Caching mode page present
[   12.971677] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[   12.980430] [drm] ring test succeeded in 0 usecs
[   12.982463]  sdb: sdb1
[   12.986883] [drm] ib test succeeded in 0 usecs
[   13.000897] sd 2:0:0:0: [sdb] No Caching mode page present
[   13.000928] sd 2:0:0:0: [sdb] Assuming drive cache: write through
[   13.000956] sd 2:0:0:0: [sdb] Attached SCSI removable disk
[   13.028426] [drm] Radeon Display Connectors
[   13.028447] [drm] Connector 0:
[   13.028456] [drm]   VGA
[   13.028471] [drm]   DDC: 0x60 0x60 0x60 0x60 0x60 0x60 0x60 0x60
[   13.028482] [drm]   Encoders:
[   13.028493] [drm]     CRT1: INTERNAL_DAC1
[   13.260750] [drm] fb mappable at 0xE0040000
[   13.260776] [drm] vram apper at 0xE0000000
[   13.260851] [drm] size 786432
[   13.260863] [drm] fb depth is 8
[   13.260873] [drm]    pitch is 1024
[   13.267374] fbcon: radeondrmfb (fb0) is primary device
[   13.473384] Console: switching to colour frame buffer device 128x48
[   13.489125] fb0: radeondrmfb frame buffer device
[   13.489144] drm: registered panic notifier
[   13.489892] [drm] Initialized radeon 2.16.0 20080528 for 0000:00:0d.0 on minor 0
[   42.083706] md: linear personality registered for level -1
[   42.095545] md: multipath personality registered for level -4
[   42.107461] md: raid0 personality registered for level 0
[   42.122311] md: raid1 personality registered for level 1
[   42.135359] async_tx: api initialized (async)
[   42.144896] xor: measuring software checksum speed
[   42.149077]    8regs     :   912.000 MB/sec
[   42.154052]    8regs_prefetch:   916.000 MB/sec
[   42.159052]    32regs    :   572.000 MB/sec
[   42.165060]    32regs_prefetch:   568.000 MB/sec
[   42.170061]    pII_mmx   :  1608.000 MB/sec
[   42.175132]    p5_mmx    :  1544.000 MB/sec
[   42.175157] xor: using function: pII_mmx (1608.000 MB/sec)
[   42.210093] raid6: int32x1    222 MB/s
[   42.227173] raid6: int32x2    246 MB/s
[   42.244099] raid6: int32x4    214 MB/s
[   42.261410] raid6: int32x8    109 MB/s
[   42.278129] raid6: mmxx1      242 MB/s
[   42.295111] raid6: mmxx2      445 MB/s
[   42.295142] raid6: using algorithm mmxx2 (445 MB/s)
[   42.317850] md: raid6 personality registered for level 6
[   42.317876] md: raid5 personality registered for level 5
[   42.317889] md: raid4 personality registered for level 4
[   42.362590] md: raid10 personality registered for level 10
[   43.536780] UDF-fs: warning (device sda): udf_fill_super: No partition found (1)
[   44.050213] UDF-fs: warning (device sdb): udf_fill_super: No partition found (1)
[   45.271983] aufs test_add:294:mount[384]: uid/gid/perm /squashfs 0/0/0755, 0/0/01777
[   45.313915] aufs test_add:294:mount[392]: uid/gid/perm /boot 0/0/0755, 0/0/01777
[   46.933383] spurious 8259A interrupt: IRQ7.
[   56.934885] systemd-udevd[849]: starting version 200
[   59.125234] parport_pc: VIA 686A/8231 detected
[   59.125284] parport_pc: probing current configuration
[   59.125342] parport_pc: Current parallel port base: 0x378
[   59.125567] parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE]
[   59.228365] parport_pc: VIA parallel port: io=0x378, irq=7
[   59.307252] NET: Registered protocol family 23
[   59.761439] systemd-udevd[868]: renamed network interface eth0 to enp0s18
[   61.098592] ppdev: user-space parallel port driver
[   68.478779] warning: process `hwsetup' used the deprecated sysctl system call with 1.23.
[   96.901370] md: Autodetecting RAID arrays.
[   96.901471] md: Scanned 0 and added 0 devices.
[   96.901482] md: autorun ...
[   96.901492] md: ... autorun DONE.
[  325.837913]  sda: sda1
[  329.502439]  sda: unknown partition table
[  331.253784]  sda: unknown partition table
[  331.459349]  sda: sda1
[  334.947530]  sda: sda1
[  468.772484]  sda: sda1
root@sysresccd /root % 
Bueno, está claro que esto no es la repanocha pero algo podemos intentar hacer. Quién me lo trajo me conoce y sabe mi obsesión por reutilizar hardware obsoleto en cosas interesantes e insospechadas. Detesto la obsolescencia programada y todo lo que vaya en su menoscabo es una pequeña victoria para mí. Ya que no puedo ganar la guerra que al menos le dé de vez en cuando una pedrada al enemigo.

Lo primero: instalar un Linux ligero en ese "peazo" disco duro de 512Mb.

To be continued.....


Ejecutar aplicaciones gráficas en un SystemRescueCD remoto por ssh.

En estos momentos estoy actualizando un porrón de máquinas a Debian Wheezy con SystemRescueCD y Clonezilla. Como hace mucho calor y no me apetece estar todo el rato para arriba y para abajo vigilando el proceso de restauración de imágenes del Clonezilla, lo estoy haciendo todo desde mi puesto de trabajo usando este método para clonar remotamente por ssh. De esta manera puedo abrir 3,4,..,n conexiones ssh a otros tantos PC y clonarlos mientras hago otras cosas en mi puesto de trabajo. Productividad ante todo.

En un aula concreta tuve un problema: tenía que retocar las particiones antes de clonar. Quería usar gparted, que viene incluído en SystemRescueCD, pero al ser una utilidad gráfica no podía arrancarla ni aún iniciando sesion remota con "ssh -X ...." ya que me daba un error. ¿Cúal es la causa?: pues que hay que configurar el servicio sshd del SystemRescueCD para que admita aplicaciones de las X. Los pasos son:

1) Conectar por ssh al SystemRescueCD remoto:
# ssh root@ip-pc-remoto
2) Editar /etc/ssh/sshd_config y añadir:
X11forwarding yes
X11DisplayOffset 10
3) Reiniciar el servicio sshd y salir de la conexión:
# /etc/init.d/sshd restart
# exit
4) Volver a conectar con lel parámetro -X y ejecutar la aplicación gráfica.
# ssh -X root@ip-pc-remoto
....ya en el equipo remoto:
# gparted

Y ya está, con eso puedo redimensionar las particiones, luego clonar con clonezilla, regenerar el grub y reiniciar el equipo sin moverme de mi sitio.

Cuantos trabajos por no trabajar.

lunes, 22 de junio de 2015

Importar claves GPG de un repositorio desde dentro de la Red Educativa


Estaba con un repositorio nuevo para instalar unas cosillas y al hacer apt-get update me salía el típico error NO_PUBKEY de que no tengo la clave del repositorio, que en este caso era E1F958385BFE2B6E

Primero he probado a añadir la clave a mano de la forma recomendada siempre, con:

# apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E

Pero había olvidado que dentro de la red educativa esto no funciona ya que usa el puerto 11371 y dicho puerto está bloqueado por el firewall. El truco para que funcione es:

# apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80  E1F958385BFE2B6E

Que hace la petición a través del puerto 80 (que evidentemente está abierto) al servidor de claves de Ubuntu, que si escucha por dicho puerto. De esta manera añadimos la clave a los ficheros /etc/apt/trustdb.gpg y /etc/apt/trusted.gpg y ya podremos actualizar desde ese repositorio sin problemas.

lunes, 15 de junio de 2015

Funny SIM y las APN Perdidas.

No, el título de esta entrada es el nombre de un grupo de tontipop de los 90. Bueno, no se que hago que siempre acabo en líos como gato en un ovillo de lana. Mi ultima aventurilla: como todavía no he entrado en el mundo de los móviles octacore (usados preferentemente para whatsapp) sigo con un LG Optimus Hub E510 que me funciona bien para lo que lo quiero (que consuma su p**a madre). Hace varios días petó el Android Gingerbread que lo movía, así que me puse a reinstalar el sistema con ayuda de los foros de htcmania y esta lista de ROMs.

Una vez puesto el CWM Recovery me dispuse a flashear una de esas ROM basadas en Cyanogenmod, arranqué y todo parecía ir bien: cámara, sonido, wifi, ... carajo: no hay conexión de datos. Me voy a la configuración de APNs y, vaya por Cthulhu, esta vacia. Bueno, intento añadir la APN de mi operador (Vodafone) a mano... sin resultado: relleno todos los campos y cuando le doy a guardar la APN no se guarda. Probando todas las ROMs de esa página pasaba eso, excepto en ésta basada en la ROM Stock (vamos, la ROM oficial de LG) con algún tuneo.

Para mas desconcierto me encuentro con que si pongo una SIM de Pepephone las APN aparecen bien con cualquier ROM y se dejan añadir y modificar.

Intentando averiguar la causa de esto, pues las ROMs probadas eran mucho mas ligeras y limpias que la Stock ROM, me meto en un lío en el que aprendo un montón de cosas nuevas que voy a dejar aquí como referencia.

Muchos android traen una lista con la configuración completa de posibles APNs ubicadas en el fichero /system/etc/apns-conf.xml. La finalidad de esta lista es configurar automáticamente el APN en función del país y operador. Para acceder a dicho fichero lo mas sencillo es activar la depuración USB del móvil, instalar las adb-tools y conectar el android a nuestro PC con su cable usb.

# apt-get install android-tools-adb
# adb devices

...mostrara el móvil....

# adb pull /system/etc/apns-conf.xml

Con esto tenemos el fichero apns-conf.xml en el directorio actual. Podemos husmear en el para ver que aparecen las definiciones de APN de un montón de operadores mundiales, de tal forma que el usuario del teléfono no tenga que teclear los datos de la APN. Entre ellas están las de Vodafone en España, que son:


  <apn carrier="Vodafone ES"
       mcc="214"
       mnc="01"
       apn="airtelwap.es"
       user="wap@wap"
       password="wap125"
       server=""
       mmsc="null"
       type="default"
  />

por lo que en teoría el móvil debería reconocerla y configurarse automáticamente, pero no lo hacia.

Por otro lado, las APN definidas a mano por el usuario se guardan en

/data/data/com.android.providers.telephony/databases/telephony.db
/data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 

Las podemos obtener con:

# adb pull /data/data/com.android.providers.telephony/databases/telephony.db

El fichero telephony.db es una base de datos sqlite3, que examinaremos con esa herramienta:

# apt-get install sqlite3
# sqlite3 telephoy.db
sqlite> select * from carriers;
.....listado de APN de operadores................
.....listado de APN de operadores................
.....listado de APN de operadores................

Veo que dentro está la lista de APN que he intentado meter a mano y que parecían perderse al dar a Save. Resulta que si se guardan, pero luego no se muestran. En cuanto al otro fichero:

# adb pull /data/data/com.android.providers.telephony/shared_prefs/preferred-apn.xml 
# cat preferred-apn.xml 
<? Xml version="1.0" encoding="utf-8" standalone="yes" ?>
<Map>
    <Long name="apn_id" value="218"/>
</Map>

El APN de telephony.db usado por defecto por nuestro Android para realizar la conexión de datos sería el apn_id que definimos en preferred-apn.xml.

¿Por qué no se muestran los APN definidos a mano?, aún mas misterioro: ¿cómo averigua android el APN correcto para nuestra tarjeta?. Investigando en Internet descubro que el método que tiene el móvil para saber que APN es el correcto es con los campos MCC (código de pais) y MNC (código de operadora): 214/01 para el caso de Vodafone España. ¿De dónde se obtiene estos números?: de la tarjeta SIM del móvil.

Buscando en foros vi que recomendaban una aplicación para leer dicha información: Network Info II que en la pestaña Device nos da el MCC+MNC de la SIM. Bueno, pues aqui la primera pista: con las ROMs cocinadas aparece el mensaje "SIM locked" y no muestra ese dato, mientras que con la Stock ROM si que se muestra un 214/01. Es decir, que la ROM cocinada es incapaz de leer el campo MCC+MNC de la SIM y como consecuencia:

1) No puede identificar automaticamente un APN en /system/etc/apns-conf.xml
2) Cualquier APN que metamos a mano se guarda en /data/data/com.android.providers.telephony/databases/telephony.db, pero al no coincidir su MCC+MNC con el de la tarjeta SIM (que no pueden ser leídos) son filtradas y como consecuencia no aparecen en la lista de APN y no pueden ser seleccionados.
3) Por tanto, al no encontrar APN válido según la SIM que tenemos, nuestro móvil no tiene conexión de datos.

Buscando ahora mejor informado el problema con los datos que tengo veo que la causa de todo es un problema con la SIM, llamado jocosamente en el foro xda-developers "problema de la Funny SIM" (yo no le veo el funny por anywhere). La historia está en que en determinadas SIM de 128Kb las ROMs cocinadas de Cyanogen no pueden acceder al MCC+MNC, mientras que con la SIM es de 64Kb "si se puede". Información detallada aquí.

En determinados sitios se hablan de soluciones, como aquí, donde se consigue arreglar usando una aplicación del Google Play llamada GetRIL. Esta aplicación se ejecuta con la Stock ROM y hace una copia de los datos del RIL (Radio Interface Layer), copia que luego se restaura con la ROM cocinada. Esto hace que mágicamente el APN pueda activarse. Por desgracia, la aplicación GetRIL funciona en varios modelos de LG y Samsung, pero no en mi Optimus Hub E510.

¿Y cual es la solución que queda?, pues como dicen aquí: hacer que tu operador te cambie la SIM de 128Kb por una de 64Kb. Pregunté en Vodafone y me dijeron que de eso ya tenían ellos, que son muy "in" y sus SIMs tienen mucha memoria para el 4G y para que el Estado y las Corporaciones puedan espiarte mediante el NFC.

Bueno, como está claro que el mundo se mueve y yo me quedo rezagado (*) así que he decidido entrar en 2013 y comprarme un Xiaomi Hongmi 1S de segunda mano por cuatro duros. Fin de la cita.

(*)Espero no llegar al nivel de aquel alcalde de la PPSOE que ante la presencia de los de Graba tu Pleno en su Ayuntamiento con sus equipos de grabación exclamaba: "apaguen los magnetófonos y los tomavistas o llamo a la Guardia Civil".

Este país me hacer llorar de risa y reir de llanto. Por cierto, Je suis Zapata.

Creación masiva de usuarios locales en Windows mediante WPKG.


Crear usuarios locales simultáneamente en muchas maquinas con Linux está tirado con puppet y su recurso "user". En Windows hacer eso no es tan sencillo, ya que o tenemos un Windows Server o usamos WPKG para evitar ir PC por PC creando el usuario.

Vamos a ver como hacerlo usando WPKG. Crearemos un usuario llamado oposicion perteneciente al grupo de administradores sobre todas las máquinas que pertenezcan a un perfil.

Lo primero es el package usuarios.xml, que guardaremos en el directorio de packages:


<?xml version="1.0" encoding="UTF-8"?>
<packages>

<package id="usuario_oposicion"
   name="Creacion usuario oposicion"
   revision="1"
   reboot="false"
   priority="1"
   execute="once">

   <install cmd="%comspec% /C net user /add oposicion passwordoposicion" />
   <remove  cmd="%comspec% /C net user /del oposicion" />

</package>

<package id="usuario_oposicion_admin"
   name="Inclusiónn usuario oposicion en administradores maquiina"
   revision="1"
   reboot="false"
   priority="1"
   execute="once">

   <depends package-id="usuario_oposicion" />
   <install cmd="%comspec% /C net localgroup Administradores oposicion /add" />

</package>


</packages>

Como se puede ver, hacemos uso de los comandos "net user" y "net localgroup" de Windows, una herencia de MS-DOS que permite manejar usuarios y grupos desde el cmd.exe. El depends es importante ya que establece precedencia en la ejecución de los paquetes.

Nótese que no hace falta regla remove en el paquete usuario_oposicion_admin ya que borrar el usuario de la máquina supone borrarlo en cascada de los localgroup a los que pertenece.

Ahora asociamos los paquetes al perfil nuevo, añadiendo en profiles.xml el nuevo perfil usuario_oposicion:


<profile id="usuario_oposicion">
   <variable name="SOFTWARE" value="\\wpkgserver\wpkg\files"/>
   <package package-id="usuario_oposicion" />
   <package package-id="usuario_oposicion_admin" />
</profile>

Por último, definimos en hosts.xml que máquinas están asociadas al perfil creado en el paso anterior:


<host name="a23-.+" profile-id="default">
   <profile id="prevencion" />
   <profile id="usuario_oposicion"/>
</host>

En este caso se aplica a todos los hosts cuyo nombre de máquina empiece por "a23-". Y con esto ya está, con que enciendan las máquinas y esperen unos minutos el usuario en cuestión estará creado mientras que nosotros hacemos cosas mas interesantes que crear usuarios uno a uno. Recordemos que el Eclesiastés dice eres mejor sysadmin cuanto mas tiempo dedicas a hacer cosas para no trabajar.

viernes, 5 de junio de 2015

Descomprimir, modificar y comprimir un paquete sencillo en Debian

Mi compañero Esteban Navas publicó hace poco un post para instalar plank en Debian Wheezy. Hacia tiempo que quería instalar un dock de ese tipo que fuera ligero y poco intrusivo para tener accesibles los enlaces mas comunes de los usuarios, ya que lo normal es que con el tiempo acaben borrados o escondidos entre  otros iconos del escritorio.

Junto con el paquete plank, Esteban ha construido un paquete plank-config con una configuración básica del dock, para colocar en el /etc/skel y copiar al home de todos los usuarios. Ambos paquetes pueden descargarse desde aquí.

Me interesaba coger el paquete plank-config y adaptarlo con los accesos directos que yo necesito, para luego volver a empaquetarlo. Hay varias herramientas para desempaquetar y reempaquetar un paquete .deb, la mas sencilla es dpkg-deb (otra mas potente y complicada es dpkg-buildpackage, que veremos en otro post mas adelante). Una vez descargado el paquete en cuestión plank-config_0.2_all.deb vamos a descomprimirlo en el directorio plank-config:
# apt-get install dpkg-deb
# dpkg-deb -R  plank-config_0.2_all.deb plank-config
# cd plank-config/

# ls -l
drwxr-xr-x 2 root root 4096 dic 16 17:18 DEBIAN
drwxr-xr-x 5 root root 4096 dic 16 17:18 etc
drwxr-xr-x 3 root root 4096 dic 16 17:18 usr

# tree
|-- DEBIAN
|   `-- control
|-- etc
|   |-- skel
|   |-- skel-alumno
|   `-- skel-profesor
`-- usr
    `-- share
        `-- doc
            `-- plank-config
                `-- changelog.gz

Para ver los ficheros ocultos (omito la salida ya que es enorme):
# tree -a 
....
....
....
En DEBIAN/control podemos cambiar el nombre del paquete en la instalación y la version. En los otros directorios podemos cambiar los ficheros que nos apetezca hasta adaptar el contenido de plank-config a nuestro gusto.
# cat DEBIAN/control 
Package: plank-config
Version: 0.2
Installed-Size: 1436
Section: gnome
Maintainer: Esteban M. Navas Martín <algodelinux@gmail.com>
Priority: optional
Architecture: all
Description: Configuración de Plank para IES
 Configuración de Plank con los accesos directos más comunes para el IES
La gente de orden lo que hacemos es editar el fichero control antes de nada para añadir comentarios de los cambios e incrementar la "Version". La sintaxis completa está en https://www.debian.org/doc/manuals/maint-guide/dreq.es.html#control

Una vez hechos los cambios, por ejemplo añadir un nuevo dockitem a etc/skel/.config/plank/dock1/launchers y en /.config/plank/dock1/settings, recomprimimos el paquete:
# dpkg-deb -b plank-config/ plank-config_0.3_all.deb
Este comando coge la información de DEBIAN/control y con eso y todo el contenido del directorio plank-config/* crea un paquete llamado plank-config_0.3_all.deb incluyendo los ficheros que hemos añadido/modificado/quitado.

A diferencia de otras herramientas dpkg-deb no necesita mas ficheros de metadatos que DEBIAN/control, por lo que si queremos crear un paquete desde cero simplemente tenemos que crear el fichero DEBIAN/control mínimo y añadir el resto de directorios y ficheros a instalar en ellos, comprimiendo finalmente todo con dpkg-deb -b.

Hasta pronto.....

viernes, 29 de mayo de 2015

2 cambios recientes en posts anteriores.

En los últimos días he añadido cosas a artículos anteriores, después de encontrar bugs y mejorar alguna cosa. Lo modificado es:

  • Tarea puppet para instalación de paquetes: arreglado un bug que provoca un error de puppet cuando coincide la ejecución de la tarea con alguna operación desde otro proceso sobre el sistema de paquetes. Ahora se comprueba si no hay nadie mas manipulando el sistema de paquetes antes de instalarlo.
  • Montar una camara web IP mediante OpenWRT y una cámara USB barata: después de varias semanas capturando fotos con gran éxito resultó que al guardar todas las imágenes en un solo directorio superaba algún límite de Linux y era imposible hacer muchas cosas sobre dicho directorio. Modifico el script de captura para que coloque los snapshots en directorios separados por días.
 Y para que se sepa ahí queda.

Utilidades gráficas para convertir vídeos en Linux.

Hay un grupo de herramientas por las que muchas veces me preguntan los usuarios para poder convertir vídeos entre distintos formatos. Evidentemente, no es de recibo aconsejar herramientas de línea de comando, así que me he hecho una lista de varias utilidades que se pueden usar desde entorno gráfico (realmente suelen ser wrappers de utilidades de línea de comando) y son sencillas.

Esta es la lista en cuestión:

  • winff: ya comentada por mi compañero Esteban en esta entrada de su blog. La utilizo normalmente para convertir entre distintos formatos, por ejemplo de mpeg-2 a divx o para convertir un vídeo descargado de Internet en formato .flv o .wmv a formato .mp4.
  • ogmrip: una maravilla para convertir un DVD a formato mas manejable. Lo que mas me gusta es que puede convertir el DVD completo a un archivo en formato matroska, conteniendo dentro de un solo fichero .mkv varias pistas de audio y subtítulos. Muy útiles para clases de idiomas o bilingües. Los ficheros .mkv son perfectamente manejables por vlc.
Captura de OGMRip con la seleccion de pistas y capítulos

  • handbrake: es como el ogmrip, pero mas complicado y completo. Aconsejable para usuarios avanzados. Tiene versiones para Linux, OSX y Windows.
Pantalla de Handbrake. A la derecha los formatos destino.
  • makemkv: no he podido probarlo, pero lo tengo apuntado en la cola de cosas por hacer. Parece también bastante sencillo y es multiplataforma, funcionando en Linux, Windows y OSX.

Bueno, pues aqui está la lista para que no se olvide.

Post de prueba desde stackedit.io

Post de prueba

Esto es una prueba de escritura con markdown desde el editor online stackedit.io, ya que ScribeFire ha dejado de funcionar.

# wget http://stackedit.io
# ls -l
# exit
  • Esto es un punto
  • Segundo punto
Ahora otra prueba:
Cita: esto seria una cita con formato distinto, debería verse embebida en algun tipo de marco.
Lorem ipsum es el texto que se usa habitualmente en diseño gráfico en demostraciones de tipografías o de borradores de diseño para probar el diseño visual antes de insertar el texto final.
Aunque no posee actualmente fuentes para justificar sus hipótesis, el profesor de filología clásica Richard McClintock asegura que su uso se remonta a los impresores de comienzos del siglo XVI.1 Su uso en algunos editores de texto muy conocidos en la actualidad ha dado al texto lorem ipsum nueva popularidad.