Windows 95 на двух флоппиках

    В этом году мы отпраздновали четверть века с Windows 95. Её минимальная установка занимала 30 МБ; народные умельцы ужимали её до 5 МБ после удаления всех «лишних» файлов и сжатия UPX-ом оставшихся. А как насчёт двух флоппиков по 1.44 МБ, вместе с загрузчиком?



    Общий подход я уже описывал в комментариях: создаётся RAMDRIVE, и на него разворачивается двухтомный SFX-архив. Но есть много тонкостей:

    1. Как видно на видео выше, распакованная папка Windows у меня занимает 6.2 МБ. Я взял за основу список файлов Micro95, и дополнительно удалил файлы, оказавшиеся необязательными — например, шрифты и драйвер dosnet.vxd. Кроме того, vmm32.vxd я распаковал, и удалил бывшие внутри него необязательные драйвера.

      Можно было уменьшить Windows ещё сильнее, пересобрав vmm32.vxd после удаления необязательных драйверов (освобождается почти мегабайт, но сжимается такой vmm32.vxd хуже, чем распакованные VXD), заменив оболочку на классический «Диспетчер программ» (освобождается целый мегабайт за счёт explorer.exe и shell32.dll), и/или отказавшись от поддержки командной строки (освобождается 155 КБ за счёт pifmgr.dll, vgafull.3gr, winoa386.mod); но я решил, что без этих компонентов Windows 95 становится полностью бесполезной.

      Со всем этим, на втором флоппике у меня оставались ещё 247 свободных КБ, так что я смог добавить к минимальному набору файлов ещё «Блокнот» и три аплета «Панели управления»; даже и с ними один килобайт на флоппике остался незанятым :-)

      Fun fact: среди оставшихся файлов поровну (по 19) 16-битных NE и 32-битных PE, подтверждая байку о том, что Windows 95 была 32-битной ровно наполовину.
    2. Проект Micro95 публиковал минимальное содержимое system.ini, win.ini, и реестра. К ним я тоже подошёл творчески: в system.ini на самом деле достаточно двух строк

      [386Enh]
      mouse=*vmouse

      Существование win.ini необязательно; а с предложенным ими вариантом реестра перестают работать ярлыки, Корзина и Панель управления, так что реестр я урезал менее агрессивно.
    3. Для сжатия Windows лучше всего подошёл WinAce: уровень сжатия у него почти такой же, как у WinRAR, но SFX-модуль для DOS меньше на 32 КБ, и его можно уменьшить ещё на килобайт, пережав UPX-ом c ключом --ultra-brute. Ещё 31 КБ удалось выиграть, сжав UPX-ом драйвера himem.sys, ramdrive.sys, ifshlp.sys
    4. Для того, чтобы работали ярлыки (в т.ч. «Перезагрузка в режиме MS-DOS»), при распаковке Windows должны воссоздаваться длинные имена файлов (LFN). SFX-модули делают это при помощи LFN API, который доступен в MS-DOS 7+ только после загрузки графической среды Windows. Я нашёл опенсорсный драйвер DOSLFN, заброшенный в 2012; к сожалению, под версией DOS, родной для Windows 95, он не работал из-за бага: наличие в DOS поддержки FAT32 определялось некорректно, так что в Windows 95 он думал, что поддержка есть, пытался ей пользоваться, и терпел неудачу. (В DOS 6.x и более старых, а также в Windows 95 OSR2 и более новых, драйвер работал корректно.) Для того, чтобы исправить этот баг, достаточно было закомментировать в исходнике две строчки:

      ;== 6. Determine the presence of the FAT32 API ==
      	 mov	ax,7302h	;extended get DPB
      	 mov	dl,0		;current drive
      	 mov	cx,3fh		;length of buffer
      	 mov	di,ofs truename_buf;buffer
      	 stc			;for pre-DOS7
      	 int	21h
      	 jnc	@@ext
      ; On Win95 4.00.950, it always fails with AX=1
      ;	 cmp	ax,7300h	;did it fail because there's no such call?
      ;	 jne	@@ext		;no, it didn't like the drive
      

      Раз мне всё равно пришлось перекомпилировать DOSLFN, я заодно расставил по всему коду условную компиляцию, чтобы получить возможность уменьшить файл в полтора раза, отключив ненужные мне возможности — переключение языков сообщений, поддержку Unicode, и поддержку CD-ROM. Пропатченный исходник я положил на tyomitch.github.io/doslfn.asm; все мои изменения можно увидеть на github.com/tyomitch/tyomitch.github.io/commit/ad8a2

    Поскольку Windows 95 в 2018 была передана в общественное достояние, то я не нарушаю ничьи авторские права, публикуя образы двух моих флоппиков:

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 44

      –5

      В 16 битном режиме она и на одну дискету помнится влазит

        +2
        Круто (правда)! Но меня преследует мысль: это патанатомия или все же археология? )
          +9
          Это вивисекция :)
          –29
          Глупости и передёргивания. Во-первых, не «на двух флопиках», а всё так же в своих 20 мегабайтах. То, что «нечто» удалось сжать и куда-то записать, никак не делает «нечто» работоспособным — всё равно нужно распаковывать и опять возвращаемся к исходному размеру. Во-вторых, зачем оно вообще надо — что «флопики» (которых «поколение путина» даже в глаза не видело), что сама 95-ая — убогая «надстройка над ДОСом».
          Никакого фана тут нет, тупо «покрасить и выбросить».
            +11
            Пост не читай @ сразу отвечай?
            Как видно на видео выше, распакованная папка Windows у меня занимает 6.2 МБ.
            +5
            Поскольку Windows 95 в 2018 была передана в общественное достояние

            А не опрометчиво ли вы с этим? Тот «Microsoft» судя по всему и Windows 8.1 в общественное достояние «перевёл», да и не только её.
              0
              Как раз образы Windows 8.1 и 10 совершенно открыто лежат у них на сайте: www.microsoft.com/software-download/windows8ISO
                0

                То что они открыто лежат, совершенно не значит что EULA не действует

                  0
                  А подробнее? Открыто лежат, но скачивать нельзя? Скачивать можно, но устанавливать нельзя?

                  Добавлю, что начиная с Windows 10, при установке стало необязательно указывать серийный номер.
                    0
                    нельзя нарушать лицензионные ограничения

                    то что винда не проверяет серийники — ниочем не говорит, есть куча разного ПО которое стоит сотни тысяч килобаксов, и у него нет вообще никакого контроля лицензионности, его даже иногда можно относительно свободно скачать… но использовать по назначению запрещено… ну тоесть если узнают — подадут в суд и выйграют
                      0
                      Не уверен, что «ужимать до двух флоппиков» соответствует «использовать по назначению»
                  0
                  Это было в 2011.
                +3
                Роскошно, браво! У меня получалось 6 мегабайт, но без GUI — запускал Far manager.
                Когда-то Windows 3.11 на 286 компике работала в качестве принт-сервера, запускаясь с дискеты, ибо древний винчестер приказал долго жить.
                И, да не прогневит Вас мой проступок, я сжал на треть Ваш gif инструментом отсюда.
                APNG идеально подходит для записи GUI, кроме конечно фотореалистичных изображений.
                Спасибо, порадовали.

                Заголовок спойлера
                Размер, кБ:
                2246 — gif
                1757 — zlib.png
                1600 — 7zip.png
                1540 — Zopfli.png (медленее всех)

                  +1
                  У исходного .webm было 1403 КБ при 25 fps. Жаль, что хабр не позволяет их вставлять.
                    0
                    В таком случае, полагаю, рип сразу в apng будет ещё компактнее.
                  +3
                  А помнится, QNX с одной дискеты умела запускаться и работать в графике с набором ПО. :)
                    0
                    На днях пробовал Menuet OS — загружается, работает.
                    0
                    А чем запускали?
                      0
                      Жать PE-файлы UPX-ом — так себе идея.
                        +2
                        У меня ни один PE-файл не сжат UPX-ом.
                          +1
                          А подробнее можно? У меня были сжаты большинство, всё работало. И приводимые в статье чужие примеры сжаты.
                            +1
                              +2
                              Статье авторства Джордана Рассела 20 лет. Вероятно, он хороший программист, по крайней мере на сайте jrsoftware.org я узнал, что он является автором инсталлятора InnoSetup и продолжает развивать проект.

                              Но вывод после прочтения статьи, цитатой из неё же: «Да EXE компрессоры могут быть хорошим выбором когда нужно.» Все приведённые «недостатки» совершенно ожидаемы.

                              Маленький исторический экскурс: Фабрис Беллар — гениальный программист, написавший кроме lzexe немало программ, к примеру FFMPEG, на котором основано большинство программных мультимедийных плееров, QEMU и много других, некоторые из них достойны стать венцом творения хорошего программиста (и возможно некоторых компаний).
                              Также он написал свой компилятор C и довёл его до самокомпиляции, а это по мнению некоторых переводит разработчика за некоторую грань.

                              UPX авторства Маркуса Оберхаммера, о котором читал мало, но что-то подсказывает, что ему также можно доверять.

                              То есть нет людей, которые не ошибаются, но есть люди, которые ошибаются реже и ошибки исправляют.

                              В контексте же статьи применение пакеров более чем оправдано — речь идёт об экономии дискового пространства (к примеру, описываемую сборку можно легко добавить в BIOS компьютера), а не оперативной памяти. Запускается один экземпляр программного модуля. В общем, всё правильно сделал.
                                0
                                Статье авторства Джордана Рассела 20 лет.
                                Так ведь и обсуждаемой системе уже 25 лет.
                                  0
                                  А пакуем сейчас. За прошедшие 20 лет автор мог сменить свои взгляды на тему.
                                    0
                                    Автор мог сменить взгляды, а вот факты поменять он в состоянии вряд ли.
                                      +5
                                      Какие факты? То что если запустить 20 копий MSAccess, сжатых UPX, уйдёт немало ОЗУ? Да, уйдёт, но это не проблемы UPX и к сжатию всей системы с целью уместить на дискете не относится.
                                      Реакция антивируса на пакер также никого не волнует в системе, где нет антивируса. И где не будет вируса, т.к. на дискете для него просто не осталось места.
                                        0
                                        Я уже понял, что система UPX-ом не сжата.
                                        То что если запустить 20 копий MSAccess, сжатых UPX, уйдёт немало ОЗУ? Да, уйдёт, но это не проблемы UPX
                                        Правильно, это не проблемы UPX, это проблема, а точнее, особенность, всех пакеров вообще.
                                          +2
                                          Эта особенность стремительно теряет актуальность с распространением .NET и прочих JIT, когда исполнимый код берётся не из файла, а генерируется при запуске.
                                  +4
                                  Во-первых, доводы автора относятся исключительно к PE (и ELF); у меня же сжаты только бинарники для DOS.

                                  Во-вторых, lzexe вообще не сжимает PE (и ELF), а UPX сжимает далеко не только их, так что из статьи никак не следует, что lzexe и UPX не стоит пользоваться.

                                  к примеру, описываемую сборку можно легко добавить в BIOS компьютера

                                  Да чего там, она и в L3-кэш ЦП влезет целиком, даже распакованная %)
                                    0
                                    «Да чего там, она и в L3-кэш ЦП влезет целиком, даже распакованная %)»
                                    Но её же когда-то нужно будет перезагрузить.
                                    А так-то есть i5-5775c c 128 МБ L4, туда Widows PE поместится.
                            0

                            Я однажды проверил миф о дистрибутиве Офис97 на одной дискете. Отдельная история как нашел и скачал таки этот архив. Как его полдня распаковывал. Но когда она распаковалось, решил проверить что это точно "нормальный" дистр и начал ставить. Оно установилось! И запустились! Мой мир тогда перевернулся.
                            Но повторять не хочется! 6 часов на распоковку! Ну его. Но знать — полезно.

                              +3

                              Забавно, что я не вижу существенной разницы по функционалу между Офис 97 и Офис 2020. Разве что совместная работа, которую завезли в Офис 2000 или 2003. Однако системные требования различаются колосально.

                                0
                                Хмм, ну как минимум Outlook не поддерживал Unicode до 2003. Существенная разница по функционалу?
                                  0

                                  Ну ок, в целом да. А что там после 2003го?

                                    +1
                                    В 2007 был риббон, не всем нравится, но появился. Плюс, в Excel вместо 32768 ячеек в высоту стало вроде 4 миллиона, и 65к колонок вместо 256
                                      0
                                      «вместо 32768 ячеек»
                                      65536 в Excel 2003, единственное чего в нём мало. Нет, ещё цветов всего 40.
                                    0
                                    Естественно, что по функционалу разница просто огромная!
                                    +1

                                    Ну сводные таблицы точно не так работают, и есть новые формулы (xloockup например). Диапазоны сделали, таблицы, поверквери. Много чего. Но если вам просто сложить две колонки — да, нового мало что есть)

                                    0
                                    1 дискету — это включая VBA?
                                      0

                                      Да.
                                      (Более того, сейчас я не уверен что это был 97. Это вполне мог быть 2000)

                                    0

                                    Так-с, Win 95 есть. Осталось дискетки найти… и флоп...

                                    Only users with full accounts can post comments. Log in, please.