LTOOLS – acceder a los archivos de Linux desde Windows 9x/ME y Windows NT/2000/XP

Original web-page: http://www.it.fht-esslingen.de/~zimmerma/software/ltools/ltools.html

Los LTOOLS proporcionan en Windows una funcionalidad similar a las MTools hacen bajo Linux: Se permiten obtener acceso a los archivos del sistema de archivos “hostil”.


Usando LTOOLS desde la línea de comandos

En el corazón de la LTOOLS es un conjunto de programas de línea de comandos, que puede ser llamado desde DOS o desde una ventana de DOS en Windows 9x/ME o Windows NT/2000/XP. Ellos proporcionan la misma funcionalidad que los comandos LINUX conocidos ‘ls’, ‘cp’, ‘rm’, ‘chmod’, ‘chown’ y ‘ln’. Por lo tanto, bajo DOS/Windows que pueda

  • archivos y directorios lista de Linux (comando: LDIR),
  • Copiar archivos de Linux a Windows y viceversa (comandos: lread, lwrite),
  • eliminar o cambiar el nombre de archivos de Linux (comandos: ldel, lren),
  • crear enlaces simbólicos (comando: LLN),
  • crear nuevos directorios de Linux (comando: lmkdir),
  • modificar un archivo de Linux derechos de acceso y propietario (comando: lchange),
  • cambiar el directorio por defecto de Linux (comando: LCD),
  • configurar la unidad predeterminada de Linux (comando: ldrive) y
  • mostrar sus particiones de disco duro (comando: LDIR -parte).

Al igual que con muchas herramientas UNIX, estas funciones están incluidas en un único archivo ejecutable, que se llama con un conjunto de parámetros de línea de comandos. Para hacer la vida más fácil, se proporcionan un conjunto de archivos por lotes (scripts shell), por lo que no es necesario recordar y escribir en todos estos parámetros.

Además, hay una versión de Unix/Linux de la LTOOLS, para que pueda utilizarlos bajo Solaris o incluso bajo Linux, cuando se quiere acceder a un archivo en otra partición del disco duro sin tener que montar esta partición.

LTOOLgui – una interfaz gráfica de usuario Java para el LTOOLS

programas de línea de comandos están pasadas de moda! ¿Dónde está la interfaz gráfica de usuario LTOOLS? Bueno, no hay problema: Uso LTOOLgui. LTOOLgui, escrito en Java usando la biblioteca Swing JDK 2, proporciona un Explorador de Windows como interfaz de usuario (Fig. 1). En dos sub-ventanas LTOOLgui muestra su DOS/Windows y sus árboles de directorios de Linux. Navegando se puede hacer por los habituales de apuntar y hacer clic en Acciones. Copia de archivos de Windows a Linux o viceversa se puede hacer mediante copiar y pegar o arrastrar y soltar. Al hacer clic en el botón derecho del ratón se abrirá un cuadro de diálogo para ver y modificar atributos de archivo, como los derechos de acceso, GID o UID. Haciendo doble clic en un archivo que se pondrá en marcha, si es un ejecutable de Windows, o abrirlo con la aplicación que está asociado. Esto funciona incluso con los archivos de Linux, si tienen una aplicación de Windows registrada.

Por cierto: También puede utilizar LTOOLgui como gestor de archivos en Linux. A medida que los programas de línea de comandos LTOOLS también vienen en una versión para Linux, por lo que es posible acceder a los archivos en los discos, sin tener que montar ellos.

El autor eligió Java para LTOOLgui, ya que Java es especialmente adecuado para el acceso de disco duro de bajo nivel … solamente bromeando! No, por supuesto, esto no es posible en Java en absoluto. Si desea acceder directamente al hardware, usted tiene que utilizar el código C ++ y JNI (Java Native Interface). Sin embargo, como el JNI sólo funciona para el código de 32 bits, bajo Windows 9x/ME esto significaría utilizar ‘de 32 bits a 16 bits thunk’ (véase más adelante). Como el autor no le gustaba la idea de combinar Java de Sun con el código de MASM de Microsoft, tomó otro enfoque. Simplemente utiliza programa de línea de comandos LTOOLS, que consiguen que se llama desde Java a través de la interfaz de entrada estándar/stdout- conocido. Así que por el lado de Java, el acceso al hardware medio simple de archivos basado en flujo de E/S.

Fig. 1: interfaz gráfica de usuario LTOOLgui basado en Java

El acceso de archivos a través de Internet?

Sin duda, cualquier estado del programa de arte debe estar al tanto de Internet! Bueno, si ejecuta LREADjav en un ordenador remoto y se conecta a ella a través del botón de conexión LTOOLgui, es posible acceder a los archivos de Linux en este servidor remoto como si fueran locales. LREADjav es un simple demonio del servidor, lo que se traduce solicitud, emitida por LTOOLgui a través de TCP/ IP, en LTOOLS llamadas programa de línea de comandos y envía el resultado de los programas de línea de comandos de vuelta a través de TCP/IP para LTOOLgui (Fig. 2). Por supuesto, no sólo se puede Ver los listados de directorios, pero puede hacer todo de forma remota, lo que puede hacer a nivel local, incluyendo el archivo de carga y descarga. La máquina remota puede ejecutar Unix/Linux o Windows. Hoy en día, esto es más como un juguete que una aplicación seria, porque LREADjav puede plantear problemas de seguridad. En la configuración predeterminada, sólo se puede utilizar desde ‘localhost’, pero puede ser configurado para permitir conexiones desde 3 clientes remotos diferentes. Pero ellos se identifican a través de su dirección IP única, no hay protección por contraseña o similares. Sin embargo, si un usuario tiene una aplicación seria de eso, se puede implementar fácilmente un esquema de usuario/contraseña … Todo es Open Source!

Fig. 2: LTOOLgui para el acceso remoto

No Java? Utilice un navegador web!

Tal vez usted no tiene instalado Java 2. Bueno, no hay problema, siempre y cuando usted tiene un navegador web. Inicio ‘LREADsrv’ y su navegador web y como se escribe la URL ‘http: // localhost’ (Fig. 3). Ahora su lista de directorios de Linux debe aparecer gráficamente en su navegador web. LREADsrv es un pequeño servidor web local, que a través de una simple interfaz CGI-como hace que los LTOOLS accesible a través de HTTP-solicitudes y convierte su producción dinámicamente en páginas HTML (Fig. 4). Por supuesto, esto no sólo proporcionan acceso local, sino que también permite el acceso remoto a través de Internet. Sin embargo, para los usuarios remotos LREADsrv tiene el mismo bajo nivel de seguridad que LREADjav.

Debido LREADsrv se basa en los formularios HTML, por ejemplo, que no son compatibles con arrastrar y soltar o copiar y pegar directamente, trabajando con su navegador web es un poco menos conveniente que el trabajo con la interfaz gráfica de usuario basada en Java. No obstante, ofrece las mismas características.

Fig. 3: Exploración de archivos de Linux con el Internet Explorer de Microsoft
Fig. 4: LREADsrv – HTTP basado acceso a los archivos de Linux

LTOOLS Internos – Accessings disco duro en Windows

Como DOS/Windows en sí no es compatible con interfaces para sistemas de archivos, el LTOOLS debe acceder a los bytes de datos “en bruto” directamente en el disco. Para entender el funcionamiento interno de la LTOOLS, es necesario tener un conocimiento básico de las siguientes áreas:

  • ¿Cómo se organizan los discos duros en particiones y sectores, y la forma en que se puede acceder, es decir, cómo bytes “en bruto” pueden ser leídos o escritos desde el disco. Esta información se puede encontrar por ejemplo en /2,3/.
  • ¿Cómo se organiza extendido 2 del sistema de archivos de Linux. Una buena visión general sobre todos los inodos, grupos, bloques, mapas de bits y directorios cosas se puede encontrar por ejemplo en /4/.

Esto conduce automáticamente a una arquitectura en capas del núcleo LTOOLS (Fig. 5), que consiste en varios archivos de C:

  • La capa más baja 1 (en el archivo de Readdisk.c) accede físicamente el disco duro. Esta capa se ocupa de (casi todas) las diferencias entre DOS, Windows 9x/ME, Windows NT/2000/XP y Linux/Unix, sobre el acceso directo del disco duro y trata de ocultarlos de las capas superiores. Más sobre esto pronto.
  • Capa 2 se refiere al inodo típica, de bloque y de grupo estructuras UNIX, en la que se organiza el Extended 2 sistema de archivos.
  • Capa 3 gestiona la estructura de directorios del sistema de archivos.
  • La capa más alta 4 (en Main.c) proporciona la interfaz de usuario y escanea los parámetros de línea de comandos.

Mediante la exploración de la tabla de particiones de tu disco duro, los LTOOLS tratan de encontrar su primera partición Linux en su primero el disco duro automáticamente. Si desea acceder a otra partición o disco, tiene que especificar que por mandato parámetro de la línea ‘-s’, por ejemplo ‘-s/dev/hda2’. Alternativamente, puede establecer otra unidad predeterminada y la partición a través de comandos ‘ldrive’. Para averiguarlo, los cuales particiones que ha llame ‘LDIR -parte’.

Fig. 5: LTOOLS arquitectura en capas

La vida era fácil en los buenos tiempos de DOS. Sólo había una manera de bajo nivel de lectura o escritura en el disco duro: interrupción de la BIOS 13h /3/. estructuras de datos del BIOS discos duros limitan a 1024 cilindros, 63 cabezas y 255 sectores de 512 bytes, es decir, 8 GB. La mayoría de los compiladores de C proporcionaron una biosdisk función llamada (), por lo que esta función podría ser utilizado directamente sin necesidad de código en lenguaje ensamblador. Para hacer frente a los discos duros más grandes, hace algunos años se introdujeron las funciones 13H ‘extendida’. Para superar las limitaciones del BIOS, estas funciones utilizan un esquema de direccionamiento lineal, direcciones de bloque lógico (LBA), en lugar de la vieja cabeza de sector de cilindro (CHS) de direccionamiento.

Esto todavía funciona en la ventana de DOS en Windows 9x/ME (Tabla 1), al menos para el acceso de lectura y siempre y cuando el programa se compila con un compilador de 16 bits. (Los LTOOLS utilizan Borland C, la versión de Windows NT/2000/XP también compila con Microsoft Visual C, la versión de Unix/Linux usa GNU C). Si desea acceder bajo nivel de escritura, es necesario ” cerraduras de volumen /3/. Este mecanismo informa al sistema operativo, que su programa está realizando directo de disco escribe sin pasar por los controladores del sistema operativo, por lo que Windows puede impedir que otros programas accedan al disco hasta que haya terminado. De nuevo, esto se puede hacer sin necesidad de programación ensamblado utilizando la función del compilador C ioctl ().

En una 16bit funciones del BIOS de programas de Windows sólo pueden ser llamados a través de DPMI. Como la mayoría de los compiladores de C no proporcionan funciones de contenedor, esto requeriría (en línea) ensamblador. Sin embargo, Win16 no permite que los programas de línea de comandos en absoluto, por lo que no se preocupe …

En/ventana DOS de Windows NT/2000 de XP, utilizando BIOS int 13h dará lugar a un error de protección general (error de protección general). Por razones de seguridad, Windows NT/2000/XP no permite el acceso directo del disco duro sin pasar por el sistema operativo. Sin embargo, Microsoft ofrece una solución, que es casi tan simple como lo que iba a escribir en Unix/Linux:

    int disk_fd = open ( "/ dev / hda1", O_RDWR);

Esto abriría de su disco duro partición/dev/hda1, para leer que llamarían read (), para escribir que llamarían escritura (). Sencillo y directo, no es así? En Windows NT/2000/XP, si se utiliza la API de Win32/5/, la función CreateFile () no sólo permite crear y abrir archivos, sino también las particiones del disco:

    HANDLE hPhysicalDrive = CreateFile("\\\\.\\PhysicalDrive0",
                                       GENERIC_READ | GENERIC_WRITE,
                                       FILE_SHARE_READ | FILE_SHARE_WRITE,
                                       0, OPEN_EXISTING, 0, 0 );

La lectura y escritura sectores del disco, ahora puede hacerse a través de ReadFile () y WriteFile ().

Por un momento se podría pensar, que se puede utilizar la misma función Win32 bajo Windows 9x / ME. Sin embargo, si usted lee en la documentación para CreateFile (), se encuentran:

Windows 95: Esta técnica no funciona para la apertura de una unidad lógica. En Windows 95, especificando una cadena en esta forma hace que CreateFile para devolver un error.

Bajo la documentación de Win32 Windows 9x/ME Microsoft recomienda llamar BIOS Int 13h a través de VWIN32, uno de vxd del sistema (controladores del núcleo). Si intenta hacerlo, sin embargo, usted no tendrá éxito. Problema informe Q137176 de Knowledge Base de Microsoft afirma, que – a pesar de lo que dice la documentación oficial de Win32 – esto solo funciona para los disquetes, discos duros no para. A medida que el informe de problemas dice, por los discos duros de la única manera es llamar BIOS Int 16h en el código de 16 bits. Para llamar a código de 16 bits desde un programa de 32 bits, es necesario “de 32 bits de thunk de 16 bits” de Microsoft … Esto no es más que otra API (con otras características no documentadas o errores documentados?), Thunking también requiere compilador de procesador de Microsoft, que a partir de una definición script genera el ensamblador código. Desde que una de 16 bits y un archivo de objeto de 32 bits deben ser generados utilizando MASM ensamblador de Microsoft. Estos serán vinculados con algunas líneas dozend de código C, lo que usted tiene que escribir, lo que resulta en un 16 bits y 32 bits de una DLL (Librería de Enlace Dinámico). Por cierto, no sólo es necesario 32bit Visual C++ para esto, pero también debe tener una versión antigua de 16 bits del compilador de C de Microsoft … ¿Entendido? El uso de un conjunto de propietarios, herramientas No se usa mucho, no sería una buena solución para una herramienta de software de código abierto como el LTOOLS!

Resumiendo: Debe haber versiones separadas para DOS/Windows 9x/ME, Windows NT/2000/XP y Linux/ Unix. Para ocultar esta parte del usuario en la medida de lo posible, LTOOLS trata de averiguar, en qué sistema operativo se está ejecutando y automáticamente llama al ejecutable apropiado.

Tabla 1: Acceso disco duro de bajo nivel

Bajo DOS En Windows 9x/ME En Windows NT/2000/XP En Linux/Unix
  • BIOS Int 13h
    (necesidad de extensiones de BIOS para discos anteriores 8 GB)
  • Programas de DOS:
    como DOS, sino que debe utilizar el bloqueo de volumen/desbloqueo para acceso de escritura
  • Programas Win16:
    debe llamar BIOS Int 13h a través de DPMI
  • Los programas de Win32:
    32 bits a 16 bits thunk a una DLL de Win16
  • Programas de DOS:
    no permitidos
  • Programas Win16:
    no permitidos
  • Los programas de Win32:
    CreateFile (), ReadFile (), WriteFile ()
  • abrir (), leer (), Escribir ()

¿Preocupaciones de seguridad?

Sí, tener los LTOOLS Hasta cierto puede plantear problemas de seguridad. Cada usuario, que puede ejecutarlos, puede acceder y modificar los archivos del sistema de archivos Linux, por ejemplo, de modificación del archivo derechos de acceso o propietarios de archivos, archivos de cambio de contraseña, etc .. Sin embargo, esto es posible con un simple editor de discos, también. Tal vez, es sólo un poco más cómodo, cuando se utiliza el LTOOLS. Sin embargo, el acceso ilimitado sólo es posible, si se ejecuta bajo DOS o Windows 9x/ME. En Windows NT/2000/XP, el usuario LTOOLS necesita tener derechos de administrador para acceder al disco duro directamente. En Unix/Linux en la mayoría de las instalaciones estándar también sólo el administrador del sistema tiene derechos de acceso para los dispositivos de disco ‘en bruto’ /dev/hda, /dev/hda1, etc ..

¿Hay alguna alternativa?

Los LTOOLS no son la única solución para acceder a los archivos de Linux desde DOS/Windows. Probablemente de Claus Tondering Ext2tool /6/, un conjunto de herramientas de línea de comandos, desarrollado en 1996, fue la primera solución para este problema. Sin embargo, Ext2tool está restringido a acceso de sólo lectura y no se ejecuta en Windows NT. Sobre la base de la Ext2tool, Peter Joot en 1997 escribió una versión de Windows NT, todavía limitada a sólo lectura /7/. Ambos programas fueron escritos en C, códigos fuente están disponibles.

John Newbigin nos proporciona Explore2fs /8/, que viene con una muy buena interfaz gráfica de usuario y se ejecuta bajo Windows 9x y Windows NT. Con su lectura y escritura que ofrece las mismas características que LTOOLgui. Por cierto: John ha hecho un gran trabajo, ya que logró implementar de 32 bits a 16 bits de Microsoft thunking (véase más arriba), incluso en Delphi de Borland! Como todos los programas de Delphi Explore2fs integra sin fisuras ” en Windows, pero la migración a los sistemas operativos que no sean Windows puede ser difícil.

Historia y Futuro

La primera versión de la LTOOLS fue creada bajo el nombre original ‘lread’ por Jason Hunter y David Lutz en la Universidad de Willamette, Salem/Oregon (EE.UU.). Esta primera versión corrió bajo DOS, podría mostrar los listados de directorios de Linux y copiar archivos de Linux para DOS y se limitó a pequeños discos duros IDE y Linux en particiones primarias.

El autor se hizo cargo de mantenimiento y el desarrollo en el año 1996. Desde entonces, los LTOOLS han aprendido a lidiar con los discos duros más grandes, unidades SCSI, el acceso se ejecutan bajo Windows 9x/ME y Windows NT/2000/XP, el acceso a escritura adicional y se portado de nuevo a UNIX, para que funcionen bajo Solaris y Linux en sí mismo. Tienen un navegador web basado en base y una interfaz gráfica de usuario Java, etc., etc .. Una gran cantidad de usuarios de Linux, la mayoría de ellos, llamado en el código fuente, ayudaron en la prueba y depuración. Gracias.

Mientras tanto, LTOOLS ha alcanzado la versión V4.7/1/, tal vez incluso más, cuando se publicó este artículo. Además de las características adicionales, una gran cantidad de errores han sido corregidos – y se han introducido más probable es que los nuevos. Un problema común se ha mantenido en los últimos años: Nadie pudo prever la rápida velocidad en la tecnología de disco duro, donde los tamaños de disco han explotado, que golpeó de forma permanente los límites del sistema operativo. ¿Recuerdas los problemas de DOS con discos de 512 MB, los problemas de Windows 3.x con particiones de 2 GB, límite de BIOS en el de 8 GB y los diversos problemas, que Windows NT tienen al 2 GB, 4 GB y 8 GB? Es sólo hace un momento! Y, por cierto, incluso Linux tiene su problema: En los núcleos anteriores 2.3, ningún archivo puede exceder de 2 GB, como Linux como sistemas Unix más de 32 bits utiliza una de 32 bits firmado compensado puntero de lectura () o escribir () (esto se resolverá en el kernel 2.4 cambiando compensatorios de los valores de 64 bits, pero se mantiene la compatibilidad hacia arriba puede conducir Linux en los mismos problemas que hemos discutido para Windows arriba). La estandarización de software para el acceso al disco siempre era mucho más lento que los desarrolladores de disco, por lo que inventó soluciones propietarias para superar los límites del sistema operativo. Y siempre el LTOOLS -y muchos otros programadores – tenido que tratar con él … Así que no se enoje, si los LTOOLS no funcionan para usted en su nueva unidad de 64 GB. Es de código abierto, por lo que simplemente tratar de ayudar a depurar y desarrollarlas! Y siempre el LTOOLS -y muchos otros programadores – tenido que tratar con él … Así que no se enoje, si los LTOOLS no funcionan para usted en su nueva unidad de 64 GB. Es de código abierto, por lo que simplemente tratar de ayudar a depurar y desarrollarlas! Y siempre el LTOOLS -y muchos otros programadores – tenido que tratar con él … Así que no se enoje, si los LTOOLS no funcionan para usted en su nueva unidad de 64 GB. Es de código abierto, por lo que simplemente tratar de ayudar a depurar y desarrollarlas!

Y no se olvide, si utiliza los LTOOLS: Hágalo bajo su propio riesgo! Acceso de sólo lectura a Linux no es crítica. Sin embargo, si utiliza el acceso de escritura para borrar archivos o modificar atributos de archivo en el disco de Linux, los LTOOLS – y usted como usuario – puede hacer un montón de tonterías. Se recomienda mantener siempre una copia de seguridad!

Referencias

  1. http://www.it.fht-esslingen.de/~zimmerma/software/ltools.html: Página de inicio de las LTOOLS
  2. Michael Tischer: PC-Intern 4. Datos-Becker-Verlag
  3. http://www.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/files.html lista de interrupciones de Ralf Brown para el 86-PC
  4. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/Ext2fs-overview-0.1.ps.gz: visión general de Gadi Oxman sobre el sistema de archivos extendido 2.
  5. Microsoft Windows Win32 API – Documentación, viene con la mayoría de los compiladores de C de Windows o en los CD de MSDN
  6. http://metalab.unc.edu/pub/Linux/system/filesystems/ext2/ext2tool_1_1.zip: de Claus Tondering Ext2tool
  7. http://metalab.unc.edu/pub/micro/pc-stuff/Linux/utils/dos/ext2nt.lsm: de Peeter Joot Ext2nt
  8. http://uranus.it.swin.edu.au/~jn/linux/explore2fs.htm: Explore2fs de John Newbigin

Sobre el Autor

“En la vida real” Werner Zimmermann Qué enseña la ingeniería de control, sistemas digitales y la arquitectura informática en la FH Esslingen – Universidad de Ciencias Aplicadas, Esslingen, Alemania. Él tiene un fondo hardware y software en sistemas embebidos de automoción e industriales. Su ‘carrera’ como desarrollador de software del sistema Linux comenzó en 1994, cuando compró una unidad de CD-ROM, que no fue soportado por Linux … por lo que desarrolló ‘aztcd.c’, un controlador para Linux CD-ROM, que todavía se incluye en todos los estándar de Linux granos, incluso si la unidad es ahora mucho obsoleta.

About the Author