Я пройшов через цей процес кілька разів, і хоча це надзвичайно просто, я постійно забуваю точні кроки, які я використовував, тому я документую його тут для моєї власної посилання, а також інших. Для довідки, я використовую Slackware Linux 14.2+ як сервер PXE, і завантаження до декількох різних моделей Dell Optiplex для оновлення BIOS. Як було зазначено в інших відповідях, ви можете створити завантажувальні образи ISO для великих файлових систем. Однак, оскільки ви спеціально запитували про завантажувальні дискети, ось ті кроки, які я використовую для цього.
По-перше, деяка довідкова інформація щодо MEMDISK і FAT12, щоб поставити ваше питання в контекст. Існує багато суперечливої та неоднозначної інформації, тому ми сподіваємося, що це дещо очистить речі.
A нитка syslinux з 2003 року вказує, що MEMDISK підтримує максимальний розмір зображення 4 Гб, залежно від апаратного забезпечення (тобто, обмеженого пам'яттю, але, можливо, додаткових апаратних міркувань). An раніше нитка з 2002 року також вказує окреме обмеження PXELINUX (простір ядра Linux обмежений ~ 1 Гб, але ця інформація більше 15 років).
Від Документація MEMDISK , існують певні геометрії дискети, які memdisk спробує вгадати:
Зображення дискети
Якщо зображення диска менше 4,194,304 байтів (4096 Кбайт, 4 Мб), то воно є
передбачається, що це дискети, а MEMDISK спробує вгадати її
геометрії на основі розміру файлу. MEMDISK розпізнає всі
стандартні розміри дискети, а також загальні розширені формати:
163,840 bytes (160K) c=40 h=1 s=8 5.25" SSSD
184,320 bytes (180K) c=40 h=1 s=9 5.25" SSSD
327,680 bytes (320K) c=40 h=2 s=8 5.25" DSDD
368,640 bytes (360K) c=40 h=2 s=9 5.25" DSDD
655,360 bytes (640K) c=80 h=2 s=8 3.5" DSDD
737,280 bytes (720K) c=80 h=2 s=9 3.5" DSDD
1,222,800 bytes (1200K) c=80 h=2 s=15 5.25" DSHD
1,474,560 bytes (1440K) c=80 h=2 s=18 3.5" DSHD
1,638,400 bytes (1600K) c=80 h=2 s=20 3.5" DSHD (extended)
1,720,320 bytes (1680K) c=80 h=2 s=21 3.5" DSHD (extended)
1,763,328 bytes (1722K) c=82 h=2 s=21 3.5" DSHD (extended)
1,784,832 bytes (1743K) c=83 h=2 s=21 3.5" DSHD (extended)
1,802,240 bytes (1760K) c=80 h=2 s=22 3.5" DSHD (extended)
1,884,160 bytes (1840K) c=80 h=2 s=23 3.5" DSHD (extended)
1,966,080 bytes (1920K) c=80 h=2 s=24 3.5" DSHD (extended)
2,949,120 bytes (2880K) c=80 h=2 s=36 3.5" DSED
3,194,880 bytes (3120K) c=80 h=2 s=39 3.5" DSED (extended)
3,276,800 bytes (3200K) c=80 h=2 s=40 3.5" DSED (extended)
3,604,480 bytes (3520K) c=80 h=2 s=44 3.5" DSED (extended)
3,932,160 bytes (3840K) c=80 h=2 s=48 3.5" DSED (extended)
Невеликий скрипт perl входить до каталогу MEMDISK, який може
визначити геометрію, яку MEMDISK буде вибирати для інших розмірів; в
Загалом, MEMDISK правильно визначить більшість фізичних розширених форматів
використовується, з 80 циліндрами або трохи вище.
LABEL floppy_image
LINUX memdisk
INITRD floppy.img
Якщо ваше зображення перевищує 4 Мб і це зображення з дискети, ви можете
змусити MEMDISK обробляти його як дискети:
LABEL floppy_image
LINUX memdisk
INITRD floppy.img
APPEND floppy
На практиці мені не пощастило APPEND floppy
параметр; Я отримую MEMDISK: No ramdisk image specified!
помилка, коли я її використовую.
Традиційно для використання дискети використовуються Формат FAT12 , які мають ліміт кластерів 16 МБ і 8 КБ. Видається, що є розширення FAT12 що дозволяє 32MB або навіть 256MB (64k кластери), але я не впевнений у специфіці.
Якщо ми націлюємо максимальний розмір FAT12 ( 16,736,256 байт ) для завантажувального зображення "дискети" можна виконати наступне:
dd if=/dev/zero of=FAT12_16MB.img bs=1 count=16736256
Проте ця команда може зайняти хвилину. Використовуючи більший розмір блоку, ми можемо виконати те ж саме менш ніж за секунду:
dd if=/dev/zero of=FAT12_16MB.img bs=8192 count=2043
Тепер, коли у нас є "чистий диск", нам потрібно відформатувати його як FAT12 (якщо ви зацікавлені в доступних параметрах для цієї команди, запустіть man mkfs.fat
щоб переглянути сторінку користувача:)
mkfs.fat -D 0x00 -F 12 -n FREEDOSBIOS FAT12_16MB.img
Тепер у нас є зображення формату FAT12 "дискети". Ми можемо створити папку та встановити її:
mkdir floppy
mount -t msdos -o loop FAT12_16MB.img floppy
А тепер ми можемо почати копіювати файли до нього. Я завантажив FreeDOS OEM завантажувальний диск від fdos.org і скопіював його на моє велике зображення:
wget http://www.fdos.org/bootdisks/autogen/FDOEM.288.imz
unzip FDOEM.288.imz
Створіть нову точку монтування для образу FreeDOS і змонтуйте його:
mkdir freedos12
mount -t msdos -o loop FDOEM.288 freedos12
Скопіюйте операційну систему FreeDOS на велику дискету:
cp -r freedos12/* floppy
Потім відключіть розділ FreeDOS і видаліть точку монтування, якщо більше не потрібно:
umount freedos12
rmdir freedos12
Тепер у нас є 16 Мб дискети ( FAT12_16MB.img
), що містить операційну систему FreeDOS. Проте, якщо ви намагаєтеся завантажитися через PXE, ви отримаєте таку помилку:
Loading boot sector... booting...
This is not a bootable disk. Please insert a bootable floppy and press any key to try again...
На цьому зображенні нам потрібно створити завантажувальний сектор. Важливо: Оскільки ми будемо писати безпосередньо до файлу зображення, переконайтеся, що ваше гнучке зображення не змонтоване до наступного кроку:
umount floppy
Скопіюйте завантажувальний сектор із образу FreeDOS ( FDOEM.288
на велике зображення "FAT12_16MB.img":
dd if=FDOEM.288 of=FAT12_16MB.img bs=1 count=446 seek=62 skip=62 conv=notrunc
Тепер у вас є завантажувальний диск FAT12 з файловою системою FAT12 PXE з FreeDOS. На цьому етапі можна повторно встановити зображення та скопіювати будь-які потрібні додаткові файли.
Точна конфігурація PXE, яку я використовую для завантаження цього зображення:
label bios
menu label FreeDOS
kernel memdisk
append initrd=FAT12_16MB.img
Є деякі інші корисні покрокові ресурси там, де я консультувався під час створення цієї відповіді.