Formato a bajo nivel en GNU/Linux

viernes, febrero 22, 2008

Esta es una pregunta que estuve haciéndome por un buen tiempo. "¿Cómo puedo formatear a bajo nivel en GNU/Linux?". Bueno, la respuesta es muy sencilla... NO SE PUEDE

Voy a explicar por qué no se puede. Los primeros discos duros usaban un mecanismo impreciso para el movimiento de los cabezales basado en tecnología de motores de paso. Este mecanismo movía el motor un número determinado de pasos y la pista correcta "debería" aparecer bajo el cabezal. No obstante, si el disco era usado en posición vertical, la gravedad podía mover el cabezal haciendo que se desalineara ligeramente e impidiendo la localización de la pista deseada. La expansión térmica también podía hacer que la pista se moviera relativamente de la posición donde el cabezal esperaba encontrarla, resultando en un error de lectura.

Los daños en la superficie de los discos y en los materiales de almacenamiento magnéticos (con una baja resistencia a la desmagnetización) fueron problemas muy comunes que impedían la lectura de la data y ocasionaban muchos dolores de cabeza.

El formato a bajo nivel era usado entonces para establecer el patron MFM del disco, redefinir la geometría física (ubicando las pistas en las nuevas posiciones donde el motor de paso movía el cabezal) y mapeando los sectores defectuosos. Este último proceso se lograba estableciendo nuevos límites para el disco, permitiéndole al dispositivo funcionar nuevamente "como nuevo" pero con una considerable pérdida de espacio.

Esas son las razones por las cuales el término Formato a Bajo Nivel (o LLF - Low Level Formatting en inglés) se hizo tan popular en los 80 y continua siendo usado en la actualidad de una forma incorrecta.

Los nuevos discos duros están diseñados de una forma más precisa; usan estructuras internas complejas y mapean los sectores defectuosos de manera transparente y automática. Esta complejidad hace que los discos solo sean formateados a bajo nivel en la fábrica por el resto de su vida útil. No existe manera de hacer un formato a bajo nivel en un disco duro IDE/ATA/SATA/SCSI moderno (al menos no sin destruirlo...) y tampoco existe razón para intentarlo.

Existe una manera para redefinir la geometría lógica del disco y es haciendo particiones. Pero debe tenerse en cuenta que geometría lógica es una cosa completamente diferente de geometría física

Actualmente es común oír sobre formato a bajo nivel cuando la gente tiene problemas serios con el disco duro, bien sea por un virus en el sector de booteo, o porque el dispositivo a empezado a descubrir un montón de sectores dañados o incluso porque desean intentar recuperar ese viejo disco duro con "aparentes" daños en la superficie.

Después de investigar y leer mucho me dí cuenta que es imposible hacer un formato a bajo nivel en un disco nuevo. Lo que se necesita hacer es una Reinicialización a la Configuración de Fábrica o Formato a Nivel Medio. La reinicialización incluye identificar (y mapear si es posible) cualquier sector que no pueda ser escrito y leído correctamente, así como también el llenado de todas las localidades direccionables del disco con cero bytes (conocido también como Zero-Filling o Zero-Byte Filling). Cuando reinicializas un disco duro, basicamente usas una utilidad que sobreescribe todo el disco con ceros. Cada localidad del disco es limpiada.

Para reinicializar un disco cada fabricante debería proporcionar una aplicación especial desarrollada para tal fin. Sin embargo estas aplicaciones la mayoría de las veces solo funcionan sobre Windows o MS-DOS.

Afortunadamente eso no es limitante para nosotros, pues podemos hacer la reinicialización en GNU/Linux boteando desde un diskette de inicio (pruebe el Tom's Root/Boot en http://www.toms.net/rb) y ejecutando:

Para un floppy:
dd if=/dev/zero of=/dev/fda
Para un disco IDE:
dd if=/dev/zero of=/dev/hda
Para un disco SCSI o USB:
dd if=/dev/zero of=/dev/sda

Al terminar el proceso el dispositivo no tendrá particiones, necesitamos definir nuestra geometría lógica y formatear las nuevas particiones. Eso podemos lograrlo con:

mke2fs -j /dev/hda3

Con estos dos comandos tendremos nuestro disco como salido de la fábrica ;)

OilWorker: an addictive pipe game

Well, to continue with my line of games i've developed another game in Python/PyGame. This time is about an oil company that contracts you cause they need to build long pipes to transport oil from petroleum wells to refineries. They also demand that you use a minimum number of pipes for the pipeline, otherwise you'll lose the contract. If oil is spilled you will lose the contract too. You'll earn money for every successful contract and a bonus for every working pipe. It has 20 levels but doesn't have a "end screen" yet.

I've in mind translate it to spanish, add random events and add more cool sounds. I warn you... this game IS VERY ADDICTIVE, use it at your own risk :D

There is a bug with the oil flow and the acceleration feature (it sometimes doesn't draw a oil segment when you accelerate it) but nothing to worry.

Like my other games, this is completely free software that you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 or any later version.

You can get the lastest source code release here:
http://sourceforge.net/projects/oilworker/


Pykanoid: My Arkanoid clone

viernes, febrero 08, 2008

Well this is a project that i had in mind a long time ago, and finally is done. Pykanoid is my version of Arkanoid (it doesn't have big differences from original). It's my 2nd PyGame project and I developed under my GNU/Linux box using Python/PyGame, The Gimp and SciTe (my favorite text editor). However you can run it over Windows and Mac OS (since Python and PyGame are platform-independent).

I added typical power-ups (expand pad, multiply the number of balls, equip with a laser cannon, break directly to the next level, xtreme ball, etc) and you must beat 29 levels! I didn't do a bo... Oh wait! I think it's better that you test it and figure out
by yourself.

Actually i think it has some kind of bug that it's affecting game performance (
i haven't find it yet) but it works pretty good so far... Try it and tell me what do you think.

I hope you really enjoy it!



http://sourceforge.net/projects/pykanoid/