Lo hice y lo entendí

El blog de Vicente Navarro
10 oct

Ubuntu y Debian eliminan ms-sys de sus repositorios

Ya me di cuenta hace unos meses de que el ms-sys, esa utilidad que tantas veces hemos usado en el pasado para escribir sectores de arranque de Microsoft en memorias USB, no venía en Ubuntu 8.04 Hardy Heron. ms-sys sí que fue parte, en cambio, de la 6.06 Dapper Drake, 7.04 Feisty Fawn y Ubuntu 7.10 Gutsy Gibbon.

De igual forma, aunque yo he podido usarlo con Debian 4.0 Etch y anteriores, la Debian 5.0 Lenny ya no incluirá el ms-sys.

¿Por qué ambas distribuciones han decidido eliminar este paquete tan útil de sus repositorios?

Pues por problemas de licencia, ya que a pesar de ser GPL, el ms-sys lleva código que es directamente un volcado de los sectores de arranque de Microsoft (Why ms-sys was removed on hardy?, ms-sys — RoSponsor; contains non-free code, ms-sys contains MBRs which are copyrighted by Microsoft, ms-sys boot loader license).

Si queremos usarlo -a pesar de las dudas que hay sobre su licencia-, tendremos que descargarlo y compilarlo. Sólo es necesario descomprimirlo, un make y un make install para tenerlo funcionando en apenas unos segundos.

Y la verdad es que creo que coincidiréis conmigo en que esto no parece que lo haya programado así, directamente en hexadecimal, el autor del ms-sys, ¿verdad?

/usr/src/ms-sys-2.1.3/inc $ cat mbr_2000.h 
/* First 446 bytes of MBR from Windows 2000, XP and 2003 */
/* This is English version. Bytes 0x12c onwards vary with language. */
/* Last two bytes 1b6 and 1b7 point to language-specific messages.  */
/* Support of other languages is an exercise for the reader!        */
unsigned char mbr_2000_0x0[] = {
  0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x00, 0x7c, 0xfb, 0x50, 0x07, 0x50, 0x1f,
  0xfc, 0xbe, 0x1b, 0x7c, 0xbf, 0x1b, 0x06, 0x50, 0x57, 0xb9, 0xe5, 0x01,
  0xf3, 0xa4, 0xcb, 0xbd, 0xbe, 0x07, 0xb1, 0x04, 0x38, 0x6e, 0x00, 0x7c,
  0x09, 0x75, 0x13, 0x83, 0xc5, 0x10, 0xe2, 0xf4, 0xcd, 0x18, 0x8b, 0xf5,
  0x83, 0xc6, 0x10, 0x49, 0x74, 0x19, 0x38, 0x2c, 0x74, 0xf6, 0xa0, 0xb5,
  0x07, 0xb4, 0x07, 0x8b, 0xf0, 0xac, 0x3c, 0x00, 0x74, 0xfc, 0xbb, 0x07,
  0x00, 0xb4, 0x0e, 0xcd, 0x10, 0xeb, 0xf2, 0x88, 0x4e, 0x10, 0xe8, 0x46,
  0x00, 0x73, 0x2a, 0xfe, 0x46, 0x10, 0x80, 0x7e, 0x04, 0x0b, 0x74, 0x0b,
  0x80, 0x7e, 0x04, 0x0c, 0x74, 0x05, 0xa0, 0xb6, 0x07, 0x75, 0xd2, 0x80,
  0x46, 0x02, 0x06, 0x83, 0x46, 0x08, 0x06, 0x83, 0x56, 0x0a, 0x00, 0xe8,
  0x21, 0x00, 0x73, 0x05, 0xa0, 0xb6, 0x07, 0xeb, 0xbc, 0x81, 0x3e, 0xfe,
  0x7d, 0x55, 0xaa, 0x74, 0x0b, 0x80, 0x7e, 0x10, 0x00, 0x74, 0xc8, 0xa0,
  0xb7, 0x07, 0xeb, 0xa9, 0x8b, 0xfc, 0x1e, 0x57, 0x8b, 0xf5, 0xcb, 0xbf,
  0x05, 0x00, 0x8a, 0x56, 0x00, 0xb4, 0x08, 0xcd, 0x13, 0x72, 0x23, 0x8a,
  0xc1, 0x24, 0x3f, 0x98, 0x8a, 0xde, 0x8a, 0xfc, 0x43, 0xf7, 0xe3, 0x8b,
  0xd1, 0x86, 0xd6, 0xb1, 0x06, 0xd2, 0xee, 0x42, 0xf7, 0xe2, 0x39, 0x56,
  0x0a, 0x77, 0x23, 0x72, 0x05, 0x39, 0x46, 0x08, 0x73, 0x1c, 0xb8, 0x01,
  0x02, 0xbb, 0x00, 0x7c, 0x8b, 0x4e, 0x02, 0x8b, 0x56, 0x00, 0xcd, 0x13,
  0x73, 0x51, 0x4f, 0x74, 0x4e, 0x32, 0xe4, 0x8a, 0x56, 0x00, 0xcd, 0x13,
  0xeb, 0xe4, 0x8a, 0x56, 0x00, 0x60, 0xbb, 0xaa, 0x55, 0xb4, 0x41, 0xcd,
  0x13, 0x72, 0x36, 0x81, 0xfb, 0x55, 0xaa, 0x75, 0x30, 0xf6, 0xc1, 0x01,
  0x74, 0x2b, 0x61, 0x60, 0x6a, 0x00, 0x6a, 0x00, 0xff, 0x76, 0x0a, 0xff,
  0x76, 0x08, 0x6a, 0x00, 0x68, 0x00, 0x7c, 0x6a, 0x01, 0x6a, 0x10, 0xb4,
  0x42, 0x8b, 0xf4, 0xcd, 0x13, 0x61, 0x61, 0x73, 0x0e, 0x4f, 0x74, 0x0b,
  0x32, 0xe4, 0x8a, 0x56, 0x00, 0xcd, 0x13, 0xeb, 0xd6, 0x61, 0xf9, 0xc3,
  0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x74,
  0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x00,
  0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e,
  0x67, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20,
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00, 0x4d, 0x69, 0x73, 0x73, 0x69,
  0x6e, 0x67, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67,
  0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x44, 0x63
};
/* Next four bytes used for Windows Disk Signature / Drive serial number */
/*
unsigned char mbr_2000_0x1b8[] = {
                                                  0x00, 0x00, 0x00, 0x00,
  0x00, 0x00
};
*/

Siendo estrictos, es verdad que el ms-sys lleva código de Microsoft, aunque sólo sean varios trozos de menos de 512 bytes, por lo que es razonable la decisión que han tomado los desarrolladores de Debian y Ubuntu. Pero, ¡qué lastima dejar de tener a mano una herramienta tan útil! Ya podría Microsoft liberar estos míseros bytes de código por el bien de la interoperabilidad…

:wq

Entradas relacionadas

5 Comentarios a “Ubuntu y Debian eliminan ms-sys de sus repositorios”

  • ReiRok dice:

    Pero claro maestro, totalmente de acuerdo.
    Igualmente es lógico que .h sea una copia de los 446 bytes del MBR si lo que queremos es eso mismo, volver a escribirlo.
    Si hasta el diskpart.exe del XP lleva una copia dentro del mismo, verifiquen, offset 1FC58h al 1FE0Fh en XP sp2 y 1B818h al 1B9D6h XP.
    La verdad no voy a entender nunca este tipo de situaciones.

    Saludos Reirok.

  • Sagman dice:

    Pues tienes toda la razón super, podrían liberar esa porción de código, pero para Microsoft eso no es importante :(

  • Uqm dice:

    A Microsoft le quedan dos teled…. dos sistemas operativos ‘for the masses’. Esa será una de las cosas que liquiden las BIOS libres.

  • Jorge dice:

    Ubuntu (y Debian) incluyen el paquete “mbr” con el comando “install-mbr”. No sé si ms-sys hace algo diferente, pero yo siempre he usado esto para arreglar problemas de arranque y me ha ido bien.

    Saludos.

  • @Jorge Gracias por tu comentario. No conocía el paquete mbr ni el install-mbr pero me parece muy útil.

    Por lo que veo, el ms-sys hace más cosas que el mbr, porque este último sólo escribe MBRs, mientras que el ms-sys es capaz, además, de escribir sectores de arranque de particiones, que es lo que nos interesa en muchos casos cuando trabajamos con memorias USB.

Tema LHYLE09, creado por Vicente Navarro