Jun
08
2011
3

Portando OpenWRT a un Mikrotik RouterBoard RB133C



Hace unos días he conseguido ejecutar OpenWRT en un Mikrotik RouterBoard RB133C siguiendo las instrucciones que podemos leer en http://rb1xx.ozo.com/doku.php

Esto nos puede ser útil si hemos perdido la licencia porque hemos formateado la NAND y no hemos hecho copia de la misma, tal y como ha sido el caso, y pagar mas de 30€ por una licencia para esta placa hoy en dia ya no tiene sentido. Así que nos ponemos manos a la obra.

En mi caso he compilado todo desde cero con una version mas actualizada de OpenWRT de la que existe en la Web nombrada anteriormente, ya que necesitaba el driver ath5k del kernel y no lo encontraba en ningun paquete precompilado de OpenWRT ya que tiene que coincidir con la versión del kernel.

Guia rápida

Para los impacientes aqui tenemos una guía rapida. Conectamos el router por el puerto serie a nuestro PC a 115200, 8N1.

  • Actualiza la versión de firmware del RouterBOOT booter, el gestor de arranque de estos routers, con una versión 2.7 o mejor. En mi caso he llegado a probar con una 2.3 y funcionaba, pero puestos a actualizar actualizamos a la última version. Podemos bajarla desde aquí. Para actualizarla entramos en el setup de gestor de arranque y pulsamos la G para actualizar. En este momento podemos mandar la actualización del firmware en formato xmodem con la utilidad de Terminal que estemos utilizando. Una vez que se ha subido se auto-flashea y ya tenemos la nueva versión. Este proceso no tarda mas de un minuto.
  • Formateamos la NAND desde el RouterBOOT booter.
  • Descargamos la imagen netboot para arranque por red del RouterBoard. Necesitas un servidor DHCP y TFTP funcionales en la red donde especifiquemos en el DHCP quien es el servidor TFTP y cual es el archivo de arranque por red. Al final del documentos tendrás unos pasos muy básicos a seguir.
  • Selecciona en desde el menu del RouterBOOT booter que arranque por red y por DHCP en vez de BootP y reiniciamos. En este momento arrancará la imagen netboot y en pocos segundos tendremos OpenWRT en nuestro Mikrotik. En este punto es un arranque por red, asi que vamos a instalarlo.
  • Una vez arrancado necesitaras acceso a un servidor Web o conexion a Internet en el Mikrotik RB133C. Puedes configurarlo rapidamente con los siguientes comandos:
ifconfig eth0 172.16.0.10 netmask 255.255.255.0
route add default gw 172.16.0.1
echo "nameserver 8.8.8.8" > /etc/resolv.conf
  • mount /dev/mtdblock2 /mnt; cd /mnt; wget kernel
  • cd /; umount /mnt; mount /dev/mtdblock3 /mnt; cd /mnt; wget openwrt-adm5120-router_le-rootfs.tar.gz
  • tar zxvf openwrt-adm5120-router_le-rootfs.tar.gz; rm openwrt-adm5120-router_le-rootfs.tar.gz; cd /; umount /mnt; sync; reboot
  • Volvemos a entrar al setup del RouterBOOT y cambiamos el arranque de red a NAND y reiniciamos.
  • Ya tenemos nuestro RB133C funcionando con OpenWRT. Es una imagen muy básica, por lo que si te gusta y quieres mas tendras que compilarte tu una versión nueva.

 

Compilación desde el trunk de OpenWRT

En mi caso he utilizado Ubuntu 11.04 con el paquete basico de compilación (aptitude install build-essential). Una vez que tenemos todos los requisitos nos ponemos a bajar el fuente y a compilar.

En mi caso he utilizado la revisión 23709 de OpenWRT y un kernel 2.6.33.5 que cambie ya que la revisión que bajé por defecto usaba otro kernel.

cd /home/dev/rb133c
snv -r 23709 co svn://svn.openwrt.org/openwrt/trunk
cd trunk
svn co svn://svn.openwrt.org/openwrt/packages/
make pacakge/symlinks

Salimos del menú que nos aparece y editamos el archivo target/linux/adm5120/Makefile y cambiamos la línea donde dice que utiliza el kernel 2.6.32.24 por 2.6.33.5

Ejecutamos «make menuconfig» desde el trunk configuramos el tipo de placa que tenemos y elegimos los paquetes que queremos tener en nuestro RB133C. Una vez que hemos elegido, salimos salvando los cambios.

  • Target System > Infineon / ADMtek ADM5120
  • Subtarget > Little Endian
  • Target Profile > Mikrotik RouterBoard RB1xx family
  • Target Images > tar.gz

Ahora es hora de configurar el kernel correctamente, para ello ejecutamos «make kernel_menuconfig» y seleccionamos lo siguiente:

  • Machine Selection > System Type > Infineon / ADMtek ADM5120 SoC based machines
  • Machine Selection > ADM5120 Board selection > Mikrotik RouterBoard 1xx (Las que queramos… todas)

Aseguraros que el kernel tambien tiene activas las siguientes opciones, aunque deberian estarlo al seleccionar el tipo de procesador.

CONFIG_YAFFS_FS=y
CONFIG_YAFFS_YAFFS1=y
CONFIG_YAFFS_YAFFS2=y
CONFIG_YAFFS_AUTO_YAFFS2=y
CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_ECC_SMC=y
CONFIG_MTD_NAND_RB100=y
CONFIG_MTD_NAND_IDS=y
CONFIG_MTD=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_SPLIT_ROOTFS=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_MYLOADER_PARTS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_MTD_CFI=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_AMDSTD_FORCE_BOTTOM_BOOT=y
CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_ADM5120=y
CONFIG_MTD_BLOCK2MTD=y

Una vez hecho esto empezamos a compilar con «make V=99» y esperamos un rato (de 1 a 2 horas, depende de tu CPU) a que acabe para poder probar nuestra compilación.

Una vez que ha acabado podemos encontrar el kernel en bin/adm5120/openwrt-adm5120-router_le-rb1xx-kernel y en sistema de archivos en bin/adm5120/openwrt-adm5120-router_le-rootfs.tar.gz que utilizaremos como en la guía rápida que esta mas arriba, pero en este caso en vez de con mi compilación, es un OpenWRT compilado por nosotros a nuestro gusto. Formateamos NAND, arrancamos con el netboot image, y copiamos kernel a mtdblock2 y el rootfs a mtdblock3.

Y ahora llega la hora de la verdad, si arranca o no. Creo que no me he saltado ningun paso, si tenéis alguna duda poned un post y revisad antes la pagina Web mencionada anteriormente que viene todo mucho mas detallado.

 

Log de arranque

RouterBOOT booter 2.7
 
RouterBoard 133C3
 
CPU frequency: 175 MHz
Memory size:  16 MB
 
Press any key within 2 seconds to enter setup..
loading kernel from nand... OK
setting up elf image... OK
jumping to kernel code
Linux version 2.6.33.5 (javier@gedeon) (gcc version 4.3.3 (GCC) ) #2 Sun May 8 12:40:09 CEST 2011
bootconsole [early0] enabled
CPU revision is: 0001800b (MIPS 4Kc)
SoC      : ADM5120 rev 8, running at 175.000 MHz
Bootdev  : NAND flash
Prom     : RouterBOOT
Determined physical RAM map:
memory: 01000000 @ 00000000 (usable)
Initrd not found or empty - disabling initrd
Zone PFN ranges:
Normal   0x00000000 -> 0x00001000
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0x00000000 -> 0x00001000
Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 4064
Kernel command line:  console=ttyS0,115200 rootfstype=squashfs,yaffs2,jffs2
PID hash table entries: 64 (order: -4, 256 bytes)
Dentry cache hash table entries: 2048 (order: 1, 8192 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Primary instruction cache 8kB, VIPT, 2-way, linesize 16 bytes.
Primary data cache 8kB, 2-way, VIPT, no aliases, linesize 16 bytes
Memory: 13588k/16384k available (2034k kernel code, 2796k reserved, 354k data, 152k init, 0k highmem)
NR_IRQS:24
Calibrating delay loop... 173.56 BogoMIPS (lpj=347136)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
MIPS: machine is Mikrotik RouterBOARD 133C
registering PCI controller with io_map_base unset
bio: create slab <bio-0> at 0
pci 0000:00:01.0: BAR 0: assigned [mem 0x11400000-0x1140ffff]
pci 0000:00:01.0: BAR 0: set to [mem 0x11400000-0x1140ffff] (PCI address [0x11400000-0x1140ffff]
PCI: mapping irq for 0000:00:01.0 pin:1, irq:14
Switching to clocksource MIPS
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 512 (order: 0, 4096 bytes)
TCP bind hash table entries: 512 (order: -1, 2048 bytes)
TCP: Hash tables configured (established 512 bind 512)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
squashfs: version 4.0 (2009/01/31) Phillip Lougher
Registering mini_fo version $Id$
JFFS2 version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
yaffs May  7 2011 22:10:22 Installing.
msgmni has been set to 26
io scheduler noop registered
io scheduler deadline registered (default)
Serial: AMBA driver
apb:uart0: ttyS0 at MMIO 0x12600000 (irq = 9) is a AMBA
console [ttyS0] enabled, bootconsole disabled
console [ttyS0] enabled, bootconsole disabled
apb:uart1: ttyS1 at MMIO 0x12800000 (irq = 10) is a AMBA
adm5120-flash.0: probing at 0x1FC00000, size:128KiB, width:8 bits
Found: PMC Pm39LV010
adm5120-flash.0: Found 1 x8 devices at 0x0 in 8-bit bank
CFI mfr 0x0000009d
CFI id  0x0000001c
number of JEDEC chips: 1
adm5120-flash.0: found at 0x1FC00000, size:128KiB, width:8 bits
adm5120-flash.0: adding static partitions
Creating 2 MTD partitions on "adm5120-flash.0":
0x000000000000-0x000000010000 : "booter"
0x000000010000-0x000000020000 : "firmware"
NAND device: Manufacturer ID: 0xad, Chip ID: 0x76 (Hynix NAND 64MiB 3,3V 8-bit)
Scanning device for bad blocks
Creating 2 MTD partitions on "gen_nand":
0x000000000000-0x000000400000 : "kernel"
0x000000400000-0x000004000000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
split_squashfs: no squashfs found in "gen_nand"
ADM5120 built-in ethernet switch driver version 0.1.1
adm5120_wdt: Watchdog Timer version 0.1
TCP westwood registered
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
trxsplit: searching TRX header in 'booter'
trxsplit: searching TRX header in 'firmware'
trxsplit: 'kernel' is not a NOR flash, skipped
trxsplit: 'rootfs' is not a NOR flash, skipped
yaffs: dev is 32505859 name is "mtdblock3"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
yaffs: auto selecting yaffs1
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs2 filesystem) readonly on device 31:3.
Freeing unused kernel memory: 152k freed
Please be patient, while OpenWrt loads ...
gpio-buttons driver version 0.1.2
input: gpio-buttons as /devices/platform/gpio-buttons/input/input0
Button Hotplug driver version 0.4.1
- preinit -
Registered led device: power
Registered led device: user
Registered led device: lan1_speed
Registered led device: lan1_lnkact
Press the [f] key and hit [enter] to enter failsafe mode
- regular preinit -
- init -
 
Please press Enter to activate this console. device eth0 entered promiscuous mode
br-lan: port 1(eth0) entering forwarding state
Compat-wireless backport release: compat-wireless-2010-10-14-7-gab01eca
Backport based on wireless-testing.git master-2010-10-19
cfg80211: Calling CRDA to update world regulatory domain
cfg80211: World regulatory domain updated:
(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
(2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
(2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
(5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
(5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
PCI: Enabling device 0000:00:01.0 (0000 -> 0002)
ath5k 0000:00:01.0: registered as 'phy0'
Registered led device: ath5k-phy0::rx
Registered led device: ath5k-phy0::tx
ath5k phy0: Atheros AR5211 chip found (MAC: 0x42, PHY: 0x30)
ath5k phy0: RF5111 5GHz radio found (0x17)
ath5k phy0: RF2111 2GHz radio found (0x23)
Broadcom 43xx driver loaded [ Features: PL, GPIO LED Mask: 0x000f, Firmware-ID: FW13 ]
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
ip_tables: (C) 2000-2006 Netfilter Core Team
nf_conntrack version 0.5.0 (214 buckets, 856 max)
CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use
nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or
sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
xt_time: kernel timezone is -0000
IMQ driver loaded successfully.
Hooking IMQ before NAT on PREROUTING.
Hooking IMQ after NAT on POSTROUTING.
ath_hal: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
ath_hal: 2009-05-08 (AR5210, AR5211, AR5212, AR5416, RF5111, RF5112, RF2413, RF5
413, RF2133, RF2425, REGOPS_FUNC, XR)
ath_pci: trunk
wlan: trunk
wlan: mac acl policy registered
ath_rate_minstrel: Minstrel automatic rate control algorithm 1.2 (trunk)
ath_rate_minstrel: look around rate set to 10%
ath_rate_minstrel: EWMA rolloff level set to 75%
ath_rate_minstrel: max segment size in the mrr set to 6000 us
adm5120_wdt: enabling watchdog timer
 
BusyBox v1.17.3 (2011-05-07 21:55:18 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
 
_______                     ________        __
|       |.-----.-----.-----.|  |  |  |.----.|  |_
|   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
|_______||   __|_____|__|__||________||__|  |____|
|__| W I R E L E S S   F R E E D O M
KAMIKAZE (bleeding edge, r23709) ------------------
* 10 oz Vodka       Shake well with ice and strain
* 10 oz Triple sec  mixture into 10 shot glasses.
* 10 oz lime juice  Salute!
---------------------------------------------------
root@rb133c:/#

 

Configuración rapida del DHCP para arrancar la imagen netboot

Si estas interesado en hacer esto, quiere decir que estas a una altura de compresión alto en estos temas, asi que no me voy a detener a explicar paso a paso como instalar un servidor DHCP y TFTP.

En mi caso he utilizado el propio DHCP y TFTP de un Mikrotik RB750G.

En Windows tienes una aplicación llamada Tftpd32 by Ph. Jounin que ya tiene servidor TFTP y DHCP incluido todo en uno. Configurandolo correctamente debería valerte.

En Linux, supondre que utilizas un servidor DHCP y TFTP estándar. Googleando hay mucha información de como configurar un servidor TFTP, es mas, puede que con instalarlo ya este funcionando, todo depende de la distro que poseas y demas.

En DHCP, los parámetros básicos serian los siguientes:

default-lease-time 21600;
max-lease-time 2100;
host rb133 {
  hardware ethernet 1A:2B:3C:4D:5E:6F;
  filename "/openwrt-adm5120-2.6-vmlinux.elf";  // Archivo de imagen netboot
  fixed-address 172.16.0.10;
  }
subnet 172.16.0.0 netmask 255.255.255.0 {
  option subnet-mask 255.255.255.0;
  next-server 172.16.0.2;  // Servidor TFTP donde ubiques el archivo de imagen netboot
  option broadcast-address 172.16.0.255;
  option routers 172.16.0.1;
  }

 

Share
Written by Javier Rodriguez in: Mikrotik,Programacion,Redes | Etiquetas: , , , ,
Dic
27
2010
3

Pasar de IDE a AHCI sin formatear (Windows XP)



Respecto a lo de pasar Windows XP de modo IDE a modo AHCI sin tener que reinstalarlo (en este caso con controladora SATA de chipset INTEL):

1. Con SATA en modo IDE en BIOS y el PC arrancado en Windows XP, descargar el INTEL MATRIX STORAGE DISKETTE lo más actualizado posible desde la web de Intel.

2. Extraer del fichero descargado todos los archivos a una carpeta y después copiar el archivo «IASTOR.SYS» de la misma a «C:\WINDOWS\SYSTEM32\DRIVERS».

Con esto ponemos el driver necesario dónde Windows lo necesita. El problema es que Windows de momento, no sabe que está ahí, ni sabe cómo y cuándo debe cargarlo. Esto lo solucionaremos en el siguiente paso.

3. Copiar este código a un NOTEPAD y salvarlo con el nombre que queramos pero extensión «.REG», no sirve «.REG.TXT», si no luego se volverá a abrir con el bloc de notas en vez de importarse al registro:


Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_2681&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_27C1&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_27C5&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_2821&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_2829&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_2922&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_2929&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_3A02&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\pci#VEN_8086&DEV_3A22&CC_0106]
"ClassGUID"="{4D36E96A-E325-11CE-BFC1-08002BE10318}"
"Service"="iastor"


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\iastor]
"ErrorControl"=dword:00000001
"Group"="SCSI Miniport"
"Start"=dword:00000000
"Tag"=dword:0000001b
"Type"=dword:00000001
"ImagePath"="\\SystemRoot\\system32\\DRIVERS\\iastor.sys"
"DisplayName"="Intel(R) SATA AHCI Controller"

En ese código, agreamos al registro los PNP ID de la controladora AHCI en una sección de dispositivos críticos, que son de los que Windows debe cargar drivers antes de otras cosas.

Yo he pegado este REG de un fichero que me creé en su día a partir del fichero INF del driver «IAAHCI.INF» de INTEL, que recoge todos esos PNP ID (un PNP ID es este número por ejemplo: «pci#VEN_8086&DEV_3A02&CC_0106», que es un número único que define el hardware para la correcta instalación de los drivers necesarios para el mismo. Así se asegura que no se pueden meter drivers equivocados). Pero ahora en placas nuevas y por lo tanto con nuevos chipsets, es posible que haya nuevas controladoras SATA con PNP ID diferentes a esos (por ser más nuevas) y que esta solución no funcione (aunque con actualizar los PNP ID desde el INF del driver, se solucionaría rápido este pequeño problemilla).

Aparte, en la sección final del código posteado, se ve que creamos un SERVICIO nuevo. Se llama «IASTOR». Windows lee «CRITICALDEVICEDATABASE» para ver si el dispositivo SATA del que arranca está en esa lista. Si lo encuentra, dentro lee que tiene que cargar el servicio «IASTOR», el servicio «IASTOR» a su vez le dice que debe cargar «IASTOR.SYS» aparte de otros parámetros, como el tipo de controlador, el grupo, el orden de carga, etc.

4. Una vez salvado el fichero con extensión «.REG» y que contiene el código posteado, debemos hacer doble click sobre este fichero para importar su contenido al registro de Windows. Lo hacemos y respondemos que «SÍ» a la pregunta de importar, etc., etc…

5. Ahora que Windows ya tiene en su base de datos de dispositivos críticos el SATA en modo AHCI, reiniciamos el PC y en la BIOS establecemos el modo SATA en AHCI.

6. Windows debería arrancar normalmente. Si la cosa no ha ido bien, dará un pantallazo azul con un STOP 0x7B (hay muchos ceros, pero se omiten después del «0x»).

7. Al terminar de arrancar (entonces la cosa ha ido bien), detectará el SATA y pedirá drivers porque no está bien instalado, ya que lo hemos hecho nosotros directamente editando el registro pero hacen falta más cosas que son las que hace el INF del driver. (Puede que no pida el driver al arrancar, no recuerdo bien, pero aunque no lo pida, hay que instalarlo desde el admin de dispositivos).

Reinstalamos el driver de modo normal (lo que hicimos antes era sólo para que Windows arrancara sin pantallazo azul), es decir, cuando salga el asistente de dispositivo nuevo encontrado blablabla que corresponde al SATA AHCI, hay que instalar manualmente el driver y decirle la ubicación dónde habíamos descomprimido antes los ficheros del mismo (IASTOR.SYS, IAAHCI.CAT, IAAHCI.INF y alguno más) y seleccionar el «IAAHCI.INF». Lo abrimos y siguiente siguiente hasta que lo termine de instalar. Si pide reinicia se reinicia y listo.

Así ya tenemos XP con SATA en modo AHCI sin formatear ni reinstalar.

OTRAS NOTAS:

* El fichero INF es un fichero de texto que contiene instrucciones sobre cómo Windows debe instalar un controlador. El fabricante se encarga de diseñar el INF de acuerdo a las especificaciones de Microsoft de cómo se debe hacer (y normalmente revisado por Microsoft si ha obtenido la firma WHQL). Dentro de ese fichero se hace referencia al PNP ID del dispositivo a instalar (para que no se usen drivers equivocados en dispositivos que no corresponden), a los archivos del driver en sí, dónde se deben copiar, modificaicones en el registro que se deben realizar, servicios a crear, etc.).

* El fichero SYS es el del driver en sí, programado por el fabricante del dispositivo (y normalmente revisado por Microsoft si ha obtenido la firma WHQL). Es el fichero que carga Windows para que Windows sepa como controlar el dispositivo para el cuál el driver fue desarrollado.

* El fichero CAT es el fichero de firma digital del driver, expedido por WHQL. Contiene certificados digitales con un HASH de cada fichero del driver. Normalmente se firman el INF y el SYS, de este modo se asegura que los drivers no han sido modificados por terceros desde que pasaron la certificación de Microsoft WHQL.

Fuente: Varias paginas web citan los mismos pasos, asi que la fuente es innecesaria.

Share
Written by Javier Rodriguez in: Microsoft & Windows | Etiquetas: ,
Nov
30
2010
0

Sobre discos duros y S.M.A.R.T.



Tenemos un comando en Linux que se llama «smartctl» el cual nos da informacion vital sobre el disco duro consultado. Datos tales como temperatura, horas en funcionamiento, promedio de fallo, etc…

equipo ~# smartctl -a -d ata /dev/sda
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 100 253 006 Pre-fail Always - 0
3 Spin_Up_Time 0x0003 097 097 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 67
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 084 060 030 Pre-fail Always - 247181777
9 Power_On_Hours 0x0032 076 076 000 Old_age Always - 21179
... ... ...

Tenemos 4 columnas: VALUE, WORST, THRESH y RAW_VALUE

VALUE es el valor actual que nos da el indicador que debe de ser superior a THRESH. En caso contrario vamos mal, ya que quiere decir que hay algo que está fallando (Old_age fallo típico de disco duro, Pre_fail fallo crítico en 24 horas).

WORST es el valor más bajo que nos ha dado este indicador, se cumple lo mismo que con el anterior, si es más bajo que THRESH, malo.

Y ahora viene el rollo del normalizado.

RAW_VALUE es el valor sin normalizar del indicador, la forma más fácil de explicarlo es con el valor de Power_On_Hours, horas que lleva el disco encendido.

Por ejemplo, el disco viene de fábrica con una vida útil de 100.000 horas, puede durar más o menos, pero en estudios que hemos hecho hemos observado unos porcentajes.

Hasta 30.000 horas falla el 1%
Hasta 50.000 horas falla el 5%
Hasta 70.000 horas falla el 15%
Hasta 95.000 horas falla el 30%
Hasta 100.000 horas falla el 55%
Hasta 120.000 horas falla el 80%
Hasta 130.000 horas falla el 100%

El RAW_VALUE puede contener cualquier cosa (horas, segundos, lunas, periodos de 18.3 segundos…) aquí cada fabricante guarda lo que el estima oportuno, pero este RAW_VALUE me lo tiene que traducir a un valor normalizado. Siguiendo el ejemplo anterior el número de horas lo puede traducir a los valores 100,99,98,97,96,95,94 con un THRESH situado en el 96. ¿por qúe de 100 a 94? porque el fabricante lo decide así, podría haber sido de 60 a 54 o de 100 a 0 con intervalos más grandes, logicamente el THRESH se mueve en la misma escala.

¿Y el RAW_VALUE?
Como he dicho el valor del RAW lo decide cada fabricante, que marque 60 en temperatura no indica obligatoriamente que el disco esté a 60 grados, pueden haber comenzado la escala a -10 grados, emplear grados farenheit o cualquier otra medida. Lo importante es que el valor normalizado (43 en tu caso, sean los grados que sean) es inferior al THRESH establecido para ese disco (45)

Hay algunos fabricantes que si que ofrecen la interpretación exacta del RAW_VALUE pero pocas veces necesitamos conocer tanto detalle .

Share
Written by Javier Rodriguez in: Linux | Etiquetas:

Theme: TheBuckmaker.com Blog Themes | Hostpapa customer, Berlin