Поиск по сайту:

Дискеты против Linux 21-го века


На этой странице

  1. История
  2. Затруднительное положение
  3. Решение
  4. Добавить индикатор выполнения
  5. Упрощение использования
  6. Работа с ошибками
  7. Использование файлов изображений
  8. Заключение

Заголовки сообщают о прекращении поддержки ядром дисководов для гибких дисков. Вот что делать с вашей коллекцией дискет и как это сделать.

Филип Л. Гилмер, 11 августа 2019 г.

Недавние заголовки сообщают о скором прекращении поддержки почтенных дисководов гибких дисков в ядре Linux. Мой желудок заурчал, и мое сердце дало трепетание или два. Я в этом бизнесе уже несколько лет, и моя коллекция дискет восходит к 8-дюймовым дискам. \Не снова! Я думал.

К счастью, дальнейшие исследования показали, что заголовки несколько преувеличивают ситуацию. Вся поддержка гибких дисков не исчезнет — только поддержка дисководов, подключенных к выделенным контроллерам гибких дисков. Этот USB-накопитель, который вы купили, чтобы обеспечить возможность чтения/записи дискет на новых компьютерах, использует другой механизм поддержки и будет продолжать поддерживаться — пока. Тем не менее, казалось, что сейчас самое время что-то сделать со всеми этими дискетами.

История

Первые гибкие диски имели диаметр 8 дюймов и были представлены IBM в конце 1960-х годов в качестве компонентов мэйнфреймов. IBM обозначила их как «Дискеты Типа 1», но термин «гибкий диск» прижился очень быстро. Поздние двусторонние версии могли хранить около 1,2 мегабайта данных.

Вскоре последовали диски размером 5-1/4 дюйма. Несмотря на меньшую стоимость, они могли хранить лишь небольшой объем данных. Первоначально храня только около 72 килобайт данных, конкуренция увеличила емкость примерно до 630 килобайт.

Первый 3-1/2-дюймовый дисковод для гибких дисков в свое время был чудом. «Диета» больше не была такой гибкой. Ранние компьютеры Apple Macintosh использовали размер 400 килобайт. IBM представила форм-фактор в 1986 году для своей линейки IBM PC Convertible, предоставив нам возможность хранить «колоссальные» 720 килобайт. Более поздняя серия PS/2 IBM PC увеличила емкость до 1,44 и даже 2,88 мегабайт данных. Но время идет. Такие инновации, как диски Iomegas SuperDisk LS-120 и LS-240, увеличили емкость до отметки 750 МБ.

Успехи в технологиях CD и DVD в значительной степени положили конец дискетам. Хотя компакт-диски изначально были носителями только для чтения, вскоре стали доступны устройства с возможностью записи, и объем памяти увеличился с 650 мегабайт до гигабайтного диапазона с двухслойными DVD-дисками емкостью 8 гигабайт.

В наши дни флэш-накопители являются предпочтительным оружием для большинства из нас. Маленькие, дешевые и удобные, они обеспечивают объем памяти, приближающийся к терабайту.

Большой! Я использую новые технологии, как и все остальные. Но что мне делать со всеми этими дискетами, которые у меня есть?

Затруднительное положение

Конечно, многие из этих старых дискет содержат файлы данных того или иного типа, и эти файлы можно скопировать в каталог в моей системе Linux. Поскольку я использую Linux Mint KDE, мне даже не нужно вручную монтировать дискеты. Mint предложит сделать это за меня, когда дискета будет вставлена. Откройте мой файловый менеджер, и я могу просто перетаскивать файлы в новые места.

Другие дистрибутивы Linux могут делать это немного по-другому, но в большинстве из них вы сможете легко смонтировать дисковод для гибких дисков. Нажмите на запись о дискете, и отобразятся параметры. Я выбираю «Открыть с помощью файлового менеджера», чтобы просмотреть файлы на дискете.

Скопируйте файлы в каталог по вашему выбору, просто перетащив их.

Что делать с другими дискетами оказалось не так просто. Чтобы быть полезными, они должны были использоваться как дискеты. Я сделал образы дискет под DOS и Windows. Но это было давно. И программы, которые я использовал, являются 16-разрядными программами для DOS и не будут работать ни в одной версии Windows, начиная с Windows XP.

К счастью, процесс сделать это просто. И для этого вам не нужна никакая сторонняя программа. Linux содержит все необходимое для работы.

Решение

Мы будем использовать программу под названием dd для фактического создания образа.

Первое, что нам нужно сделать, это выяснить, где установлен дисковод.

Подключите USB-накопитель к системе, подождите несколько секунд, а затем введите команду:

dmesg | tail

Вывод будет выглядеть примерно так:

Последняя строка здесь указывает, что дискета обозначена как /dev/sdb.

Если вы используете флоппи-дисковод, подключенный к специальному контроллеру, ваше устройство будет выглядеть примерно так: /dev/fd0 или /dev/floppy. Вставьте в него дискету и используйте команду df, чтобы увидеть используемое устройство:

В нашем примере назначено устройство /dev/fd0. Если это ваша конфигурация, используйте это устройство везде, где используется /dev/sdb в приведенных ниже примерах.

Вставьте дискету для создания образа, перейдите в каталог, в котором должен храниться образ, и введите команду:

dd if=/dev/sdb of=test.img

Мы надеемся, что вы увидите что-то вроде этого:

Есть несколько проблем с использованием dd в его простейшей форме.

Во-первых, независимо от того, сколько или мало используется дискета, созданный образ будет отражать размер дискеты, в данном случае 1,44 мегабайта. Мы можем сжать файл с помощью команды gzip:

gzip test.img

со следующим результатом:

Файл test.img сжимается и заменяется файлом test.img.gz, который меньше почти вдвое.

Во-вторых, программа dd обрабатывает ошибки не так, как хотелось бы. По умолчанию, если он обнаруживает ошибку, например, поврежденный сектор, он сообщает о проблеме и завершает работу.

К счастью, dd позволяет нам исправить некоторые ошибки.

Мы добавим параметры, чтобы игнорировать ошибку и продолжать работу. Кроме того, пусть он заполнит нечитаемый раздел нулями, чтобы у нас не было усеченных данных. Я собираюсь изменить размер блока копии с 512 байт до 1024 байт, чтобы количество записей теперь равнялось емкости диска (в килобайтах). Теперь наша копия выглядит так:

Как и раньше, мы можем сжать файл с помощью утилиты gzip.

Было бы очень хорошо сделать это за один шаг. Мы можем сделать это с помощью оператора pipe (\|). Мы выполним следующую команду:

sudo dd if=/dev/sdb bs=1024 conv=sync,noerror | gzip > test.img.gz

Со следующим результатом:

Поскольку мы предоставляем имя, заканчивающееся расширением файла .gz, программа gzip использует оставшуюся часть имени файла в качестве имени внутреннего файла, \test.img . Я настоятельно рекомендую это соглашение об именах. Без него gzip и gunzip запутаются, и результаты могут быть непредсказуемыми. Поэтому используйте +\.img\+ \.gz\. Если ваше имя содержит пробелы или другие специальные символы, заключите все имя в кавычки.

Если мы откроем наш файл в архиваторе, мы увидим фактическое имя файла:

Добавьте индикатор прогресса

Наши команды работают, но вы не можете видеть, что происходит. Было бы неплохо иметь возможность видеть, продвигаются ли дела так, как должны.

Есть отличная маленькая утилита под названием pv, которая сделает эту работу. Установите его из репозиториев ваших дистрибутивов. Linux Mint использует менеджер пакетов apt, поэтому мы устанавливаем его с помощью команды:

sudo apt install pv

Используя pv, мы получили индикатор прогресса. Итак, наш процесс создания образа теперь выглядит так:

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror | gzip > test.img.gz

Точно так же наш процесс восстановления дискеты становится:

sudo pv -tpreb test.img.gz | gunzip -c | dd of=/dev/sdb

Сделать это проще в использовании

Чтобы упростить использование этих команд, я создал пару сценариев bash. Чтобы создать образ дискеты, используйте imgcreate.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019

#!pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Вызовите, используя имя и имя сжатого файла.

Чтобы воссоздать дискету, используйте imgrestore.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019
#!

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Не забудьте изменить имя устройства, если дисковод не /dev/sdb.

Работа с ошибками

Итак, мы были заняты, насколько это возможно, созданием образов наших дискет, и происходит что-то вроде этого:

Он должен показать 720 прочитанных записей. Ой! 104? Не совсем неожиданно. Некоторым из этих дискет 30 лет. Ну что теперь? Я попытался использовать команду fsck, но не получил очень хороших результатов. К счастью, нам может помочь команда dosfsck. Эта команда является частью пакета репозитория dosfstools. Если он еще не установлен в вашей системе, установите пакет. В системе на основе Debian, такой как Linux Mint, вы можете установить с помощью команды:

sudo apt install dosfstools

Ваш вкус может отличаться.

Введите команду следующим образом:

sudo dosfsck -w -r -l -a -v -t /dev/sdb

При вводе dosfsck попытается восстановить диск, автоматически перечисляя имена файлов по мере их обработки, пометит нечитаемые кластеры как плохие и немедленно запишет изменения на диск. Проверьте справочную страницу для получения дополнительной информации. Для нашей текущей дискеты мы получаем следующий вывод:

Эта дискета действительно непригодна для использования. Слишком много файлов повреждены и содержат нечитаемые кластеры. Затронутые файлы необходимо будет восстановить из какого-либо другого источника. Однако часто нечитаемые кластеры будут лежать за пределами выделенных кластеров любых файлов. После этого можно создать образ восстановленного диска. Повторный запуск dosfsck показывает, что он очистил дискету как можно лучше:

Итак, теперь мы пытаемся пересоздать образ дискеты:

Можно создать образ всего диска. Помните, что любые файлы с плохими кластерами нельзя будет использовать.

Использование файлов изображений

Чтобы использовать файл изображения, сначала распакуйте его.

Чтобы проверить файл, смонтируйте его на петлевом устройстве:

sudo mount -o loop -t msdos ./test.img /mnt

Просматривая нашу точку монтирования /mnt, мы видим файлы:

Файл .img также можно использовать как виртуальную дискету в виртуальном приводе, определенном на гостевом компьютере в виртуальной машине VirtualBox. Файл изображения должен находиться на жестком диске hosts.

Выберите выделенную запись и просмотрите.

Заключение

Внедрение новых технологий могло сделать дискеты менее полезными с годами. Тем не менее, они могут быть незаменимы при работе с виртуальными машинами со старыми программами и системами. Дистрибутивы Linux 21-го века по-прежнему включают в себя множество инструментов для поддержки старой технологии, но как долго эта технология будет поддерживаться, никто сказать не может.

Так что сделай образ этих дискет как можно скорее, слышишь? Я все еще жалею, что не сделал что-нибудь с этими 8-дюймовыми дискетами!