jacques@solucorp.qc.ca
cgarcia@dit.upm.es
umsdos
con
diversas configuraciones, y después se explica cómo funciona
y se da alguna información. Se deja para el lector la decisión
de si es una buena elección para él (véase la sección
POR-QUÉ-UMSDOS al final).
El proyecto umsdos
comenzó en 1992 y se puso a disposición
de la red en enero del 1994 en forma de parche. Se incluyó en
la distribución estándar del núcleo (kernel) de linux
en Julio, comenzando con el núcleo 1.1.36.
umsdos
fue pronto adoptado por la distribución Slackware,
incluso antes de que fuera oficialmente incluido en el núcleo.
umsdos
empezó a ser mejorado a partir del núcleo 1.1.60.
Su rendimiento ha mejorado radicalmente, especialmente en lo que
se refiere a escritura. A partir del 1.1.70 (más o menos), vuelve
a ser estable.
Un error de consideración fue corregido en Linux 1.2.2. El error en cuestión estaba dando la lata a los usuarios desde el principio (se cambiaba el nombre a algunos ficheros dando la impresión de que habían desaparecido). Nótese que la Slackware 2.2 aún incluye la versión 1.2.1 del núcleo, luego contiene ese error.
Está disponible como parche para los núcleos 1.0.x. Va incluido
en los núcleos 1.2. Se puede compilar dentro del núcleo o
cargarlo como módulo. Sin embargo, hay que tener en cuenta que
hoy por hoy, si se quiere usar umsdos
en forma de módulo cargable
se debe también usar el sistema de ficheros Ms-DOS como
módulo cargable. Esto es debido a una limitación en el sistema
de módulos (algunos símbolos se exportan sólo cuando los
controladores se instalan como módulos).
Por el momento creo que sólo Slackware lo incluye. Seguramente me equivoco, así que por favor corregidme.
El lugar original de umsdos
es
sunsite.unc.edu
. Se debe
buscar en el directorio
/pub/Linux/system/Filesystems/umsdos
.
Hay un montón de documentación sobre el funcionamiento interno de
umsdos
. Se encuentra disponible tanto en formato HTML
como en formato texto en la misma ubicación que las utilidades.
Por lo que yo sé, la versión HTML
no está disponible en
ningún servidor de Web. Se debe transferir, destarrar, y leer
localmente.
Jacques Gelinas
jacques@solucorp.qc.ca
umsdos
como partición raíz
Mediante el uso de umsdos
, Linux se puede instalar
en una partición de DOS normal y corriente. Linux se
instala entonces como segundo (o tercer) sistema operativo
en la partición. Para evitar conflictos con los nombres
de los ficheros (Si ya hubiera, por ejemplo, un directorio
bin, o tmp, en el disco C:), umsdos
utiliza un inteligente
truco: La pseudorraíz.
Todos los ficheros de Linux se instalan en un subdirectorio
del DOS llamado linux
. Generalmente C:\LINUX
. La estructura
normal de directorios de Linux/Unix va ahí. Así se tiene
C:\LINUX\BIN
C:\LINUX\ETC
C:\LINUX\LIB
C:\LINUX\ROOT
C:\LINUX\SBIN
C:\LINUX\TMP
C:\LINUX\USR
C:\LINUX\VAR
Cuando arranca, el umsdos
trata de encontrar el directorio
linux
y el /linux/etc
. Si existen, activa el modo
pseudorraíz.
Básicamente, el modo pseudorraíz cambia el directorio raíz de la
partición a C:\LINUX
con lo que queda el
árbol de directorios convencional de Unix
/bin
/etc
/lib
/root
/sbin
/tmp
/usr
/var
A esta lista añade uno nuevo llamado DOS
, que es un directorio
virtual.
mount
).umsdos
normal. Esto significa que
una partición que se usa habitualmente como partición
raíz se puede montar normalmente sin que se produzca ningún
efecto de pseudorraíz.
Por ejemplo, si se arranca linux con un disquete de
mantenimiento y se monta la que es habitualmente la partición
raíz en /mnt
, todos los directorios de linux
se encontrarán en
/mnt/linux/bin, /mnt/linux/etc
, etc...
umsdos
mount
Se pueden usar las mismas opciones que para el sistema de ficheros
Ms-DOS. La opción conv=
es cuestionable en un sistema umsdos
.
Yo sugiero evitarla. Las opciones que más probablemente se querrá
usar son
uid=
gid=
umask=
Únicamente se debe recordar que umsdos
trata los directorios
no promovidos de la misma forma que el sistema de ficheros
Ms-DOS. Las opciones de arriba se aplicarán globalmente
a todos los directorios no promovidos. uid establece
el propietario por omisión, gid establece el grupo por
omisión, y umask establece los permisos por omisión.
umssetup
sirve para establecer en tiempo de ejecución
el propietario de la partición raíz. Para otras particiones
umsdos
, se pueden usar las opciones de mount o umssetup.
La manera recomendada para particiones no raíz es poner la
opción apropiada en /etc/fstab
. Aquí va un ejemplo. Se
debería poner lo siguiente en /etc/rc.d/rc.S
/sbin/umssetup -u jack -g group -m 0755 /
El uso de un fichero de intercambio (swap) es por lo general
más lento que una partición de intercambio. Sin embargo, es mucho
más flexible. Un fichero de intercambio en una partición umsdos
se configura de la misma manera que para cualquier otro sistema
de ficheros de Linux. Por ejemplo, para poner 8 megaoctetos
de fichero de intercambio en el directorio raíz:
dd if=/dev/zero bs=1024k count=8 of=/swap
mkswap /swap 8192
sync
swapon /swap
Una vez hecho esto, se puede poner lo siguiente en /etc/fstab
/swapswapswapdefault
Y el fichero de intercambio se activará en cada arranque del sistema
(hay por lo general un "swapon -a
" en /etc/rc.d/rc.S
).
umsdos
El paquete lodlin15.tgz
está disponible en
ftp://sunsite.unc.edu/pub/Linux/system/Bootutils
Esta utilidad es
especialmente apropiada para arrancar un sistema umsdos
.
Generalmente todo lo que hay que hacer es
Arrancar el DOS
C:>loadlinx zimage root=D:
Donde zimage
es una imagen normal (comprimida) del núcleo que
simplemente se ha copiado a algún sitio del disco del DOS. D:
es el disco del DOS donde se ha instalado Linux.
Arrancar un sistema umsdos
con un disquete no es distinto
a arrancar un sistema Ext2. Se necesita un fichero (zImage
)
con una imagen comprimida del núcleo convenientemente inicializado
para localizar la partición raíz umsdos
.
Esto se consigue generalmente con la orden rdev
. La secuencia
siguiente inicializa una zImage
y la pone en un disquete.
rdev zImage /dev/hda1
rdev -R zImage 0
dd if=zImage bs=8192 of=/dev/fd0
Si esto parece lioso, se puede simplemente crear un disco de arranque de Ms-DOS e incluir lo siguiente en él:
loadlin.exe
loadlinx.exe
zimage
y ponerle un autoexec.bat
como este
loadlinx zimage rw root=C:
LILO
LILO
, el programa de arranque oficial de Linux también se
puede usar para arrancar un sistema umsdos
. Sin embargo,
no tengo ninguna experiencia con él. Desde la versión 1.1.60
debería funcionar. Por favor mandadme correo si sabéis algo.
umsdos
Se puede hacer con cualquier herramienta de DOS. Los ficheros
creados por umsdos
no tienen nada de especial. Y umsdos
no espera nada especial (estructura del directorio, orden de las
entradas en el directorio, etc...) del sistema de ficheros DOS
que lo soporta.
Por lo que yo sé, no hay ninguna herramienta de Linux que haga esto.
umsdos
se apoya en el fichero --linux-.---
que a su vez
se apoya en el directorio del DOS. A algunos usuarios puede
apetecerles experimentar un poco. La utilidad udosctl
, que es
parte del paquete umsdos_progs
(que también contiene umssync
y umssetup
) permite hacer operaciones básicas con los
directorios (listado, borrado) independientemente del fichero
--linux-.---
y del directorio del DOS.
umsdos
hace corresponder los ficheros de Linux directamente
con ficheros de Ms-DOS. La traducción es uno a uno (biyectiva).
No se toca el contenido de los ficheros. umsdos
sólo actúa sobre
los nombres. Con los ficheros especiales (enlaces y dispositivos, por
ejemplo) utiliza una gestión especial.
Por cada directorio hay un fichero llamado --linux-.---
.
umsdos
puede reemplazar al sistema de ficheros Ms-DOS.
Se puede ver umsdos
como un superconjunto de propósito
general del sistema de ficheros Ms-DOS de linux. Esta
flexibilidad es, de hecho, la causa de gran parte de la confusión
sobre umsdos
. Aquí está el porqué. Si se intenta montar un
disquete DOS recién formateado con esto
mount -t umsdos /dev/fd0 /mnt
Y se hace esto,
ls / >/mnt/FICHEROCONNOMBREMUYLARGO
ls -l /mnt
Se obtiene lo siguiente
-rwxr-xr-x 1 root root 302 Apr 14 23:25 ficheroc
Así, que, por el momento, parece como si el sistema de ficheros
umsdos
no hiciera mucho más (la verdad es que nada más)
que el sistema de ficheros Ms-DOS normal de Linux.
???
No es muy impresionante por el momento. Ahora viene la gracia.
A menos que se promueva, un directorio DOS será manejado
igual por umsdos
que como lo sería por el sistema de
ficheros DOS. umsdos
utiliza un fichero especial
en cada subdirectorio para hacer la traducción entre las
capacidades extendidas de umsdos
y las limitaciones del
sistema de ficheros DOS. Este fichero es invisible para los
usuarios de umsdos
, pero es visible cuando se arranca en
DOS. Para evitar llenar la partición DOS inútilmente
con esos ficheros (--linux-.---
), el fichero es ahora
opcional. Si no existe, umsdos
se comporta como Ms-DOS.
Cuando se promueve un directorio, cualquier operación posterior será hecha con la semántica completa de la que normalmente disfrutan los usuarios de Unix y Linux. Y cualquier subdirectorio creado desde entonces (en un directorio ya promovido) será promovido silenciosamente.
Esta característica permite organizar la partición DOS en
material del DOS y material del Linux. Es importante
entender que el fichero --linux-.---
ocupa algo de espacio
(generalmente 2k por directorio). El DOS habitualmente utiliza
bloques grandes (de hasta 16k para una partición de 500M), así
que evitar que haya ficheros --linux-.---
en todas partes
puede resultar beneficioso.
/sbin/umssync
Se puede promover un directorio en cualquier momento usando
/sbin/umssync
. Se puede usar en cualquier momento.
Al promover un directorio ocurre lo siguiente
--linux-.---
.--linux-.---
y lo que en ese
momento sea el contenido del directorio./sbin/ummsync
conserva un fichero --linux-.---
ya existente. No lo crea de la nada todas las veces. Simplemente
le añade las entradas que le falten (Ficheros creados durante una
sesión DOS) y le quita las entradas que se refieran a ficheros
que ya no existen en el directorio DOS. De ahí le viene
el nombre. umssync
pone --linux-.--- en sincronismo
con el directorio DOS que hay debajo.
/sbin/umssync
durante el arranqueEs una buena idea poner, si no existiera, una llamada a
/sbin/umssyc
al final del fichero /etc/rc.d/rc.S
. La
línea siguiente es adecuada para la mayor parte de los sistemas:
/sbin/umssync -r99 -c -i+ /
La opción -c
evita que umssync
promueva directorios.
Solamente actualizará los ficheros --linux-.---
donde
ya existan.
Esa línea tiene utilidad si se accede al directorio Linux durante
las sesiones DOS. No existe en Linux una manera eficiente
de decir que un directorio ha sido modificado por el DOS así
que umsdos
no puede hacer un umssync según se necesite.
Simplemente hay que eliminar el fichero --linux-.---
usando
el DOS. Aunque quien lo haga acabará arrepintiéndose.
A menos que se use umssync
en un directorio donde el DOS
haya añadido o borrado ficheros, se advertirán algunas dificultades:
umsdos
advertirá su ausencia en el primer acceso.
Se mostrará (y generalmente se escribirá en
/var/adm/syslog
) un mensaje al respecto.
La instalación de un sistema basado en umsdos
no difiere
gran cosa de la instalación de un sistema Linux
ordinario (basado en Ext2).
Hay dos diferencias fundamentales.
/mnt/linux
Los pasos normales de una instalación son
fdisk
y formatearla./mnt
de nuestro disco raíz de
instalación./mnt
.El paso 1 no es necesario con umsdos
(¿acaso no era el objetivo
de umsdos
no tener que reformatear?).
Es posible instalar un sistema umsdos
simplemente copiando
todos los paquetes en /mnt
. Funcionaría, pero crearía
una ristra de subdirectorios en el directorio raíz del DOS
(C:
) y no sería agradable. Esa es la razón por la que todas
las instalaciones con umsdos
usan la pseudorraíz. Y es la
gran diferencia entre una instalación normal con Ext2 y una
con umsdos
: Los ficheros se copian en /mnt/linux
.
/mnt/linux
/mnt/linux
no es un directorio ordinario. Tiene que ser
promovido para que maneje correctamente los nombres largos
de Linux y los ficheros especiales (enlaces, dispositivos).
Los pasos requeridos para poner a punto /mnt/linux
son:
mkdir /mnt/linux
umssync /mnt/linux
¡Y ya está!
/mnt/linux/
está correctamente configurado.A pesar de que la puesta a punto de /mnt/linux
es muy
sencilla, hay circulando por ahí muchos paquetes de instalación
que lo hacen mal. ¿Cómo es posible?
El problema de instalación más importante suele provenir
del uso de versiones incompatibles del programa umssync
.
umsdos
fue actualizado en Linux 1.1.88
(No lo recuerdo con exactitud) y quedó un fallo
en umssync
. Para evitar confusión entre la
comunidad de Linux, se decidió incrementar el
nivel de compatibilidad requerido para todas las
herramientas de umsdos
. Las antiguas versiones
de las utilidades fueron simplemente rechazadas.
Parece que muchas distribuciones no han actualizado
el umssync
de sus disquetes de instalación.
Todavía hay muchas distribuciones en ese estado por ahí. El
resultado de hecho es que el directorio /mnt/linux
no
se promueve y se truncan todos los nombres largos de fichero y
se rechazan todos los ficheros especiales.
Es posible comprobar si algo ha ido mal en los primeros momentos de la instalación. Gracias al mecanismo de pseudoconsolas de Linux se puede hacer sin salir del programa de instalación. Hay que seguir los siguientes pasos:
Alt-F2
(la tecla Alt
al mismo tiempo
que la tecla F2
).root
).cd /mnt/linux
Si eso falla, es que se está haciendo demasiado pronto.
Al terminar la selección de paquetes es un buen momento
para hacerlo.>TOTO
ls -l
Debería aparecer un fichero vacío llamado TOTO
en letras
mayúsculas. Si aparece en minúsculas algo ha ido mal.
Intentaremos ejecutar umssync
de nuevo.
umssync
puede usarse una y otra vez sin ningún problema.
umssync .
TOTO
. Si aparece TOTO
correctamente todo está bien. La instalación tiene algo
extraño, pero lo hemos solucionado.
Alt-F1
para volver a la pantalla de instalación.Si la comprobación falla, la mejor solución es hacerse con
un disco de instalación más moderno. Normalmente se puede
arreglar el disco raíz de instalación poniéndole una
versión más moderna de umssync
. No es difícil, pero
se requiere un sistema Linux en funcionamiento. Simplemente
hay que montar el disco raíz y reemplazar el umssync
problemático por uno nuevo.
Oops releasing pseudo root ...
La mayor parte de las instalaciones umsdos
que fallan
lo hacen mostrando ese curioso mensaje. Por muy extraño que
parezca el mensaje, no se trata de un bug (error) en
umsdos
. Estas son las causas conocidas:
/mnt
, se crea el directorio
/mnt/linux
, y se le aplica umssync
.
De ahí es de donde viene la mayor parte de los problemas.
La mayoría de los usuarios olvidan el paso de
"configuración de la partición receptora" ("setup target
partition") y pasan sin más al resto de la instalación.
Como /mnt
está ya montado, este error pasa
desapercibido.
Eso significa que /mnt/linux
no ha sido creado
adecuadamente (No ha sido promovido). Ningún fichero
especial, ni enlace, ni fichero con nombre largo se
podrá crear correctamente.
umssync
no válido
No se ha creado /mnt/linux
correctamente. Esto está
generalmente causado por un programa umssync
inadecuado en el disco de instalación raíz.
umsdos
Había un error en umsdos
previo a Linux 1.2.2.
El modo pseudo-root no se activaba adecuadamente si no
existía el fichero /etc/init
. Ahora init
se ubica en /sbin
. Se puede solucionar esto
haciéndose con un nuevo núcleo. Eso es lo recomendado
puesto que había otro error que se solucionó en la
versión 1.2.2.
Si no es posible la actualización, habrá que hacer lo siguiente
mount -t umsdos /dev/hdXX /mnt
Donde /dev/hdXX
es la partición DOS.cd /mnt/linux/etc
ln -s ../sbin/init init
cd /
Ctrl-Alt-Del
umsdos
normalmente.Por desgracia, los dos primeros problemas de instalación producen una instalación completamente inservible. Se debe desinstalar (Véase la sección siguiente) y volver a instalar.
umsdos
Una cosa que sorprende agradablemente de umsdos
y su
mecanismo de pseudorraíz es que se puede DESinstalar sin
problemas. Simplemente hay que arrancar en DOS y borrar
recursivamente el directorio linux
. Eso es todo. umsdos
no requiere ningún controlador especial en el config.sys, ni
crea nada extraño fuera del directorio linux
.
umsdos
a otro disco DOSSe puede hacer desde Linux o desde DOS. Sólamente hay
que copiar recursivamente el directorio linux
de un disco al
otro. Después hay que ajustar el sistema de arranque (generalmente
el programa loadlin) y el fichero /etc/fstab
.
umsdos
puede vivir en cualquier disco DOS. No hay necesidad
de instalarlo en el disco C:
, ni en el primer disco duro.
No importa en absoluto.
De hecho, se puede decidir tener varias instalaciones umsdos
en distintos discos simplemente para experimentar.
umsdos
¿Y si instalamos un montón de sistemas Linux en un santiamén?
Los sistemas umsdos
viven en un mundo DOS. Se puede
sacar provecho de esto si se quiere instalar Linux fácilmente.
Se puede instalar y configurar un sistema con umsdos
en
un ordenador, y, cuando se está satisfecho con la configuración
y los distintos paquetes seleccionados, arrancar en DOS y
copiar el directorio linux
completo al servidor de ficheros
de DOS (en caso de que exista, claro. Tal vez un
PC-NFS). Entonces se va a otro ordenador con DOS y simplemente
se copian los ficheros del disco de red al disco duro local.
Eso es todo. Sólamente habrá que ajustar el fichero .bat de
arranque (Loadlinx) y ya.
Con unos ajustes mínimos (nombre de la máquina, dirección IP), cualquiera puede instalar un sistema Linux en un minuto.
Los lectores interesados apuntarán que instalar un sistema Linux copiando un sistema en funcionamiento también sirve para cualquier otro tipo de sistema Linux, incluyendo los basados en Ext2.
Una de las bellezas de Linux es que no hay fichero ocultos que tengan que ser instalados por un mágico programa de instalación.
Incluso para los usuarios de Ext2 (sistema de ficheros
nativo de Linux) tiene utilidad umsdos
. La siguiente
es una situación frecuente:
umsdos
puede salvar la situación. Se puede poner un directorio
Linux en la partición de DOS y usarlo sin restricciones
para Linux. Por ejemplo, pongamos que queremos crear un
nuevo directorio llamado "extra"
en el disco C:
. Y
queremos que se comporte como un directorio normal de Linux.
Habría que hacer lo siguiente (suponiendo que C:
es /dev/hda1
):
mkdir /c
/sbin/mount -t umsdos /dev/hda1 /c
mkdir /c/extra
umssync /c/extra
Hay que ser superusuario (root
) para hacerlo.
Si se configura el /etc/fstab
adecuadamente, siempre
se tendrá acceso al directorio /c/extra
.
No basta con explicar cómo funciona o se instala un sistema
con umsdos
. La mayoría de la gente busca algunos consejos
sobre si usar umsdos
o no.
umsdos
El objetivo de umsdos
era facilitar la instalación de Linux.
Otro objetivo era facilitar su DESinstalación. La idea detrás
de esto era favorecer la difusión de Linux.
La instalación de un nuevo sistema operativo es siempre problemática.
OS/2 por ejemplo enguarrina tranquilamente el directorio
raíz del disco C:
con una ristra de nuevos directorios.
Si eres tan inteligente como yo, además te borra los ficheros
config.sys
y autoexec.bat
:-(
El invento de la pseudorraíz de umsdos
evita esta invasión
no deseada. Linux se puede DESinstalar sin ningún
efecto lateral.
Si se tiene un disco duro pequeño, umsdos
permite compartir
el espacio del disco entre DOS y Linux. Un disco de
menos de 300M es en mi opinión un disco pequeño. Baso esta
opinión en el tamaño de los diversos paquetes disponibles hoy
día. Un popular procesador de textos se puede cepillar unos
70 megaoctetos si se seleccionan todas las opciones.
Si se tiene un disco duro más grande, se debe tomar en consideración
la opción de tener una partición dedicada para Linux donde
use el sistema de ficheros Ext2. Ext2 utiliza un tamaño
de bloque más pequeño que DOS (exactamente 1K) por lo que
instalar muchos ficheros pequeños utiliza menos espacio que en
una partición umsdos
.
Lo siguiente es aplicable a umsdos
si se le compara con Ext2.
umsdos
.umsdos
que en Ext2. Esto es debido a
la simplicidad del sistema de ficheros con FAT usado
por el DOS.
Téngase en cuenta que esta simplicidad tiene un coste:
FAT
ubicada al principio
del disco duro. Esto hace probablemente más frágil
al sistema de ficheros DOS.umsdos
se
usará generalmente como estación de trabajo de
un sólo usuario. En ese caso tiene demasiada
importancia. Si se usa como sistema multiusuario,
los ficheros se esparcirán por todo el disco,
reduciendo la eficiencia de los accesos a
los mismos.umsdos
usa bastante más espacio de disco que Ext2.