Por que existem três configurações diferentes na seção [Paths] do MSDOS.SYS?
No Windows 9x, o arquivo de configuração MSDOS.SYS contém uma [Paths]
seção cujo conteúdo geralmente se parece com este:
[Paths]
WinDir=C:\WINDOWS
WinBootDir=C:\WINDOWS
HostWinBootDrv=C
Ambos WinDir
e WinBootDir
apontam para o diretório de instalação do Windows, que geralmente é C:\WINDOWS
, e HostWinBootDrv
apontam para a letra da unidade que o contém. Ter configurações distintas sugere que potencialmente podem ser diferentes. Existem situações em que este é o caso? Por que existem três configurações diferentes? Qual é o propósito deles?
Respostas
HostWinBootDrv
é o mais fácil de explicar: tem a ver com compactação de disco, ou seja, DoubleSpace / DriveSpace. O que o DriveSpace faz é criar um arquivo com um nome como DRVSPACE.nnn
( nnn
sendo um número de três dígitos) que contém o conteúdo compactado do disco. Ao sistema de arquivos compactado é atribuída a letra da unidade da partição que contém o arquivo e a última (chamada de unidade host neste contexto) é atribuída a outra letra de unidade ou, às vezes, totalmente oculta. Se a partição a partir da qual o Windows é iniciado estiver compactada, HostWinBootDrv
aponta para a unidade host dessa partição, que por padrão é H
, enquanto as outras configurações apontam para o sistema de arquivos compactado.
Quanto a WinDir
e WinBootDir
, o que eles fazem é relativamente fácil de descobrir. Algumas experiências revelam o seguinte:
WinDir
aponta para o diretório no qual o Windows está instalado. A presença de WinDir
in MSDOS.SYS
é o que instruía IO.SYS
(antes do Windows Me) que havia uma instalação do Windows presente que deveria ser preparada para iniciar (em oposição a apenas inicializar em um prompt de comando, como em um disquete de inicialização de emergência). Se WinDir
estiver definido, o kernel de modo real fará o seguinte:
- Coloque duas entradas na
PATH
variável de ambiente: o diretório apontado porWinDir
e seu subdiretórioCOMMAND
; - Criar um subdiretório
TEMP
sob esse diretório e apontar as variáveis de ambienteTEMP
eTMP
a ela; - Apaga um sinalizador, retornado pelo
0x2f
serviço de interrupção0x1611
no bit 5 do registrador BL, queCOMMAND.COM
verifica para decidir se deve iniciarWIN.COM
após o processamentoAUTOEXEC.BAT
; - Inicie o gerenciador de configuração do dispositivo antes do processamento
CONFIG.SYS
(isso pode ser suprimido pelaSystemReg=0
configuração na[Options]
seção) - Procure por determinados arquivos críticos neste diretório, incluindo
SYSTEM.DAT
(o Registro),COMMAND.COM
(que retornará ao diretório raiz se ausente) e drivers de modo real comoHIMEM.SYS
eIFSHLP.SYS
(que podem ser suprimidos configurandoDOS=NOAUTO
emCONFIG.SYS
); - Armazene o próprio diretório na
winbootdir
variável de ambiente (tudo em minúsculas!).
Os dois últimos desses são os que podem ser sobrescritos pela configuração WinBootDir
: se essa configuração também estiver presente, esses arquivos serão pesquisados em seu WinBootDir
lugar e, claro, é esse diretório que terminará na winbootdir
variável de ambiente.
No entanto, existem algumas rugas aqui, por exemplo em relação a WIN.COM
. Quando o AUTOEXEC.BAT
arquivo está ausente, vazio ou sendo ignorado (como, por exemplo, no Modo de Segurança), COMMAND.COM
não é carregado e o kernel em modo real será executado diretamente WIN.COM
do WinBootDir
. Porém, se AUTOEXEC.BAT
estiver presente, COMMAND.COM
será lançado para processá-lo, após o que por sua vez executará o comando WIN
, lançando WIN.COM
... procurando-o em PATH
, que por padrão aponta para WinDir
.
Bem, ótimo, mas por que WinDir
e WinBootDir
configurações separadas em tudo? Ainda não está totalmente claro para mim, mas pelo pouco que pude reunir, provavelmente era para dar suporte à inicialização do Windows através de uma LAN. Em tal configuração, DOS seria primeiro ser carregado a partir de um sistema de arquivos normal (ou mesmo se de uma imagem de disco baixados pela rede), carregar drivers essenciais como HIMEM.SYS
a partir WinBootDir
localizados no mesmo sistema de arquivos, em seguida, carregar os drivers de rede DOS, mapear uma partilha (contendo WinDir
) à letra da unidade e, em seguida, continue inicializando a partir daí. Se for esse o cenário pretendido, até mesmo a WIN.COM
estranheza começa a fazer sentido agora: pode haver uma cópia 'principal' do Windows iniciada ao inicializar normalmente de WinDir
, e outra cópia mínima de 'emergência' inicializada no Modo de Segurança de WinBootDir
, quando a inicialização da rede falha.
Em qualquer caso, os requisitos deste cenário podem facilmente exigir que essas duas configurações tenham valores diferentes. Aqui está um pequeno fragmento de um documento que descreve exatamente essa configuração:
D-2. MSDOS.SYS Sample File for DM9102 : ======================================= [Paths] WinDir=g:\client1 WinBootDir=d:\winboot <== According to RAMDRIVE.SYS assign HostWinBootDrv=c Virtual Drive (D: or E:)
Há também um documento e uma série de artigos de Micho Durdevich ( parte 1 , 2 , 3 , 4 , 5 e 6 ) que descreve como obter a inicialização da rede com o Windows 9x.
Eles são um tanto escassos sobre os detalhes de como tudo isso funcionava, mas ambas as fontes mencionam um SETMDIR
utilitário, que é distribuído como parte do Windows 95. Isso implica que a inicialização pela rede foi provavelmente um caso de uso pretendido pela Microsoft.
Winbootdir aponta para o diretório onde estão os arquivos de inicialização do DOS. Pode ser diferente do Windir.
Windir aponta para o diretório em que o registro do usuário está. Em uma rede, isso pode ser diferente de onde o Windows está instalado.
Winbootdir é usado se não houver config.sys / autoexec.bat, para carregar os drivers como himem.sys, ifs $ hlp.sys e co. Pode ser em uma imagem de inicialização enviada pela rede, por exemplo.
Windir, como no 3.0, precisa conter win.com, mas win.com é então responsável por iniciar o Windows (executando win32.vxd ou algo assim).
== Editar ==
http://reboot.pro/topic/22047-dual-boot-msdos-710-and-630/
Esta postagem descreve a criação de uma configuração mínima do DOS, usando o DOS do Win98se, e um MS-DOS 6.22 ligeiramente modificado.
Exemplos do que acontece quando winbootdir e windir são alterados. O comando setmdir muda o windir depois que o sistema é inicializado, não o estamos usando aqui.
http://reboot.pro/topic/18130-ms-dos-7-help-file/
Este tópico contém os comentários de trabalho para a criação de um arquivo de ajuda básico para DOS 5 a 7 (ou seja, como um substituto para o que está no CDROM).
https://www.betaarchive.com/forum/viewtopic.php?f=72&t=34798&p=401645#p401645
É aqui que documentamos a execução de várias versões do Windows 9x como opções no config.sys. Até agora, superamos a maioria dos problemas ao iniciar o Win95 a partir do DOS98SE.
https://www.betaarchive.com/forum/viewtopic.php?f=60&t=41489
Este é o progresso da execução do Windows 95 e ME a partir do DOS98SE. Possui um link para os arquivos DOS usados nos experimentos.
Todos esses experimentos são baseados em sessões VPC que fazem o que é descrito. Por exemplo, depois que Offer postou a construção de c: \ MSDOS7, eu executei o experimento com vários NT5x por cima de diferentes instalações de Win98 e ME, em inglês e em alemão. É de onde tive a ideia de usar c: \ msdos7.