Linus Torvalds da por finalizado el soporte al controlador de la unidad de disquete

floppy drive

Cuando Linus Torvalds creó Linux en 1991, el ordenador con el que trabajaba al igual que los de aquella época estaba equipado con una unidad de disquete. Y ahora el soporte para este ha llegado a su fin. Ya que en una reciente publicación del creador del famoso sistema operativo de código abierto anuncia la interrupción del mantenimiento del controlador para unidades de disquet.

Un vistazo alrededor permite, en cierta medida, comprender esta nota informativa. De hecho, es suficiente observar que la mayoría de las computadoras portátiles e incluso las computadoras de escritorio puestas en el mercado hoy en día no tienen una unidad de disquete.

«Un equipo que salga al mercado hoy en día de este tipo es cada vez más difícil de encontrar. El que todavía está disponible en los puestos está basado en USB. De repente, el controlador original ya no se busca «, dice Torvalds.

Con ello ya no habrá quien este a cargo de mantener el soporte para el controlador del disquete para Linux, al menos por el momento, ya que Linus está aprovechando la oportunidad para atraer a terceros interesados.

Sin embargo, el controlador permanece disponible para garantizar el soporte de máquinas virtuales que aún dependen de él.

Para las nuevas generaciones que desconocen de los disquete o disco flexible les puedo decir que este es un soporte de almacenamiento de datos de tipo magnético, formado por una fina lámina circular (disco) de material magnetizable y flexible (de ahí su denominación), encerrada en una cubierta de plastico, cuadrada o rectangular, que se utilizaba en la computadora, por ejemplo: para disco de arranque, para trasladar datos e información de una computadora a otra, o simplemente para almacenar y resguardar archivos.

Estos son como los de la imagen:

Floppy_disk

La necesidad de continuar garantizando este componente que le ha valido al código fuente del controlador el afecto de un mantenedor hasta el día de hoy. El hecho es que la virtualización de la unidad de disquete plantea problemas que no surgen con la versión de hardware.

«La unidad de disquete de hardware es demasiado lenta para desencadenar situaciones de acceso concurrente. Por otro lado, la unidad de disquete virtualizada saca mucho a la superficie porque es mucho más rápida «, dice Jiri Kosina en una publicación publicada hace 9 años.

El código fuente de este controlador está disponible para los desarrolladores que desean del soporte de la unidad de disquete de Linux y proporcionar información si es necesario.

drivers/block/floppy.c
 
raw_cmd->kernel_data = floppy_track_buffer;
raw_cmd->length = 4 * F_SECT_PER_TRACK;
 
if (!F_SECT_PER_TRACK)
return;
 
/* allow for about 30ms for data transport per track */
head_shift = (F_SECT_PER_TRACK + 5) / 6;
 
@@ -3230,8 +3233,12 @@ static int set_geometry(unsigned int cmd, struct floppy_struct *g,
int cnt;
 
/* sanity checking for parameters. */
if (g->sect <= 0 ||
g->head <= 0 ||
if ((int)g->sect <= 0 ||
(int)g->head <= 0 ||
/* check for overflow in max_sector */
(int)(g->sect * g->head) <= 0 ||
/* check for zero in F_SECT_PER_TRACK */
(unsigned char)((g->sect << 2) >> FD_SIZECODE(g)) == 0 ||
g->track <= 0 || g->track > UDP->tracks >> STRETCH(g) ||
/* check if reserved bits are set */
(g->stretch & ~(FD_STRETCH | FD_SWAPSIDES | FD_SECTBASEMASK)) != 0)
@@ -3375,6 +3382,24 @@ static int fd_getgeo(struct block_device *bdev, struct hd_geometry *geo)
return 0;
}
 
static bool valid_floppy_drive_params(const short autodetect[8],
int native_format)
{
size_t floppy_type_size = ARRAY_SIZE(floppy_type);
size_t i = 0;
 
for (i = 0; i < 8; ++i) {
if (autodetect[i] < 0 ||
autodetect[i] >= floppy_type_size)
return false;
}
 
if (native_format < 0 || native_format >= floppy_type_size)
return false;
 
return true;
}
 
static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode, unsigned int cmd,
unsigned long param)
{
@@ -3501,6 +3526,9 @@ static int fd_locked_ioctl(struct block_device *bdev, fmode_t mode, unsigned int
SUPBOUND(size, strlen((const char *)outparam) + 1);
break;
case FDSETDRVPRM:
if (!valid_floppy_drive_params(inparam.dp.autodetect,
inparam.dp.native_format))
return -EINVAL;
*UDP = inparam.dp;
break;
case FDGETDRVPRM:
@@ -3698,6 +3726,8 @@ static int compat_setdrvprm(int drive,
return -EPERM;
if (copy_from_user(&v, arg, sizeof(struct compat_floppy_drive_params)))
return -EFAULT;
if (!valid_floppy_drive_params(v.autodetect, v.native_format))
return -EINVAL;
mutex_lock(&floppy_mutex);
UDP->cmos = v.cmos;
UDP->max_dtr = v.max_dtr;

Los disquetes son una parte esencial de la historia de las computadoras, pero debemos admitir que son parte de la historia. Pero, para subrayarlo, surge un cuestionamiento: ¿no es esto un esguince para las generaciones futuras?

La falta de hardware también significa que la verificación del rango ioctl las correcciones son probablemente más relevantes para cualquiera que use disquetes en un ambiente virtual.

Además, se podría argumentar que, por su apertura, Linux sigue siendo el sistema operativo elegido por las personas que desean experimentar en equipos considerados obsoletos.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.