Загрузочные дискеты для linux

Загрузочные дискеты для linux

еУМЙ ЧЩ ОЕ НПЦЕФЕ ЪБЗТХЪЙФШУС У CD-ROM, ФП РТЙДЈФУС УПЪДБФШ ЪБЗТХЪПЮОХА ДЙУЛЕФХ ( boot disk ).

оБ CD-ROM ЙНЕАФУС Й ЖБКМЩ У ПВТБЪБНЙ ДЙУЛЕФЩ, Й ОЕПВИПДЙНЩЕ ДМС ЪБРЙУЙ РТПЗТБННЩ. ъБЗТХЪПЮОХА ДЙУЛЕФХ РТЙДЈФУС УПЪДБЧБФШ ФБЛЦЕ ДМС ТБВПФЩ У ЪБЗТХЪЮЙЛБНЙ ( bootloader ) ПФМЙЮОЩНЙ ПФ LILO Й GRUB.

пВТБЪЩ ЪБЗТХЪЛЙ ОБИПДСФУС Ч ЛБФБМПЗЕ images ОБ CD-ROM. оХЦОЩК ДМС ДБООПЗП НЕФПДБ ХУФБОПЧЛЙ ЖБКМ ОБЪЩЧБЕФУС НЕФПД.img.

cdrom.img: ДМС ХУФБОПЧЛЙ У МПЛБМШОПЗП IDE ЙМЙ SCSI ХУФТПКУФЧБ CD-ROM. йУРПМШЪХЕФУС РТЙ ОЕЧПЪНПЦОПУФЙ ОЕРПУТЕДУФЧЕООПК ЪБЗТХЪЛЙ У CD-ROM.

network.img: ДМС ХУФБОПЧЛЙ У ТЕРПЪЙФПТЙЕЧ, ДПУФХРОЩИ РП NFS, FTP, HTTP. оБУФТПКЛБ УЕФЙ ДМС НБЫЙОЩ НПЦЕФ ВЩФШ ТХЮОПК МЙВП БЧФПНБФЙЮЕУЛПК;

pcmcia.img: ЕУМЙ ЙУФПЮОЙЛ ХУФБОПЧЛЙ ДПУФХРЕО ЮЕТЕЪ ЛБТФХ PCMCIA (УЕФЕЧХА, CD-ROM);

hd.img: ЬФПФ ПВТБЪ ЙУРПМШЪХЕФУС, ЕУМЙ ОЕ ХДБМПУШ РТПЙЪЧЕУФЙ ХУФБОПЧЛХ У CD-ROM. оБДП РТПУФП УЛПРЙТПЧБФШ УПДЕТЦЙНПЕ CD ОБ ЦЈУФЛЙК ДЙУЛ (Ч ТБЪДЕМ FAT, ext2fs ЙМЙ ReiserFS), Й ЪБЗТХЪЙФШУС У ДЙУЛЕФЩ У ДБООЩН ПВТБЪПН;

other.img: ЬФПФ ПВТБЪ ЪБЗТХЪЛЙ ПВЕУРЕЮЙЧБЕФ РПДДЕТЦЛХ НЕОЕЕ ТБУРТПУФТБОЈООЩИ ДТБКЧЕТПЧ, ФБЛЙИ ЛБЛ NET Й SCSI. йН УФПЙФ ЧПУРПМШЪПЧБФШУС, ЕУМЙ ПУФБМШОЩЕ ЧБТЙБОФЩ ОЕ РТПЫМЙ;

рПД Windows

йУРПМШЪХКФЕ РТПЗТБННХ rawwrite. еЈ НПЦОП ОБКФЙ ОБ CD-ROM Ч ЛБФБМПЗЕ dosutils.

чЩ НПЗМЙ ЪБНЕФЙФШ, ЮФП ЕУФШ DOSЧЕТУЙС ФПК ЦЕ РТПЗТБННЩ rawrite. оБ УБНПН ДЕМЕ, ЬФП ПТЙЗЙОБМШОБС ЧЕТУЙС РТПЗТБННЩ: rawwrite СЧМСЕФУС ЗТБЖЙЮЕУЛПК ПВПМПЮЛПК Л ОЕК.

чЩВЕТЙФЕ ЪБЗТХЪПЮОЩК ПВТБЪ ДМС ЛПРЙТПЧБОЙС Й ХУФТПКУФЧП, ЛХДБ ЛПРЙТПЧБФШ. ъБФЕН ЧУФБЧШФЕ РХУФХА ДЙУЛЕФХ Ч ХЛБЪБООЩК ДЙУЛПЧПД Й ОБЦНЙФЕ Write. рП ПЛПОЮБОЙЙ ЪБРЙУЙ ОБЦНЙФЕ Exit ЧБЫБ ДЙУЛЕФБ ДМС ХУФБОПЧЛЙ Master 2.2 ЗПФПЧБ.

рПД Linux

еУМЙ Х ЧБУ ХЦЕ ЕУФШ ХУФБОПЧМЕООЩК ДЙУФТЙВХФЙЧ Linux (ДТХЗБС ЧЕТУЙС, ЙМЙ ОБ ДТХЗПК НБЫЙОЕ, ОБРТЙНЕТ Х ДТХЗБ, ЛПФПТЩК ДБМ ЧБН ЬФПФ ДЙУФТЙВХФЙЧ), ФП ПУХЭЕУФЧЙФЕ УМЕДХАЭЙЕ ЫБЗЙ:

cТЙНПОФЙТХКФЕ CD-ROM. рТЕДРПМПЦЙН, ЮФП ФПЮЛБ НПОФЙТПЧБОЙСљ— /mnt/cdrom;

ЧПКДЙФЕ У РТБЧБНЙ root (ЬФП ОЕПВСЪБФЕМШОП, ДПУФБФПЮОП ЙНЕФШ ОЕПВИПДЙНЩЕ РТБЧБ ОБ ДПУФХР Л ХУФТПКУФЧХ /dev/fd0);

ЧУФБЧШФЕ ЮЙУФХА ДЙУЛЕФХ Ч ДЙУЛПЧПД Й ДБКФЕ ЛПНБОДХ:

Источник

Создание загрузочного носителя¶

Проще всего установить Linux Mint с USB-накопителя.

Если нет возможности загрузиться с USB, вы можете использовать пустой DVD.

Как сделать загрузочный USB-накопитель¶

В Linux Mint¶

Кликните правой клавишей мыши по ISO-файлу и выберите Создание загрузочного USB-накопителя , или запустите Меню –> Стандартные –> Запись образа на USB-накопитель .

Выберите Ваше USB-устройство и нажмите Записать .

В Windows, Mac OS, или других дистрибутивах LInux¶

Загрузите Etcher, установите и запустите его.

Нажмите Select image и выберите Ваш ISO-файл.

Нажмите Select drive и выберите Ваш USB-накопитель.

Как сделать загрузочный DVD¶

Оптические диски медленны и запись на диск может сопровождаться ошибками.

Чтоб избежать проблем, записывайте на минимально возможной скорости

Записывайте содержимое ISO на dvd, а не сам ISO-файл. По завершению, Ваш DVD должен содержать директории такие как boot и casper , он не должен быть пустым DVD сожержащим .iso-файл.

В Linux¶

Установите и используйте xfburn .

В Windows¶

Кликните правой клавишей мыши на ISO-файле и выберите Записать образ диска .

Чтоб убедиться, что ISO записан без каких-либо ошибок, выберите Проверить диск после записи .

В Mac OS¶

Кликните правой клавишей мыши на ISO-файле и выберите Записать образ на диск .

© Copyright 2017, Linux Mint Revision 11740971 .

Источник

Linux на Дискете.

1.Предисловие.
2. Права и отказ от обязательств.
3. О чем мужик шумит.
4. Минимальные требования.
5. К барьеру.
5.1 Файловая система.
6. Что на диске твоем.
7. Как быть дальше.
8. Обработка напильником.
9. Автор.
10. Литература.

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

mkbootdisk -device /dev/fd0 2.4.21

или с помощью утилиты rawrite из под Windows или MS-DOS.
2. Права и отказ от обязательств.
Вся содержащаяся в этом тексте информация предназначеная для Linux и Intel платформ, но так же может быть использована и для других процессоров. Все написанное здесь написано лишь с целью оказаться полезной информацией, но не является непосредственной инструкцией к действию.
3. О чем мужик шумит.
Загрузочным диском в данном конкретном случае я хочу назвать «полноценную Linux — систему в миниатюре», т.е мы будем говорить о загрузочном диске самодостаточном для самостоятельного старта и работы. Наверное, вы уже встречали такие Linux — системы. Например, мне первое, что попало в руки это дискета на 3,5″ с помощью которой поднимался роутер (freesco), все ПО для запуска и конфигурирования было на нем, и было самодостаточным. Честно говоря никода бы не полез в эти дебри, если бы не старое ядро. Я не буду здесь говорить о типах загрузочных дисков, все это в полной мере вы можете прочитать в Boot Disk-How-To.
4. Минимальные требования.
Для работы нам потребуется флопповод (/dev/fd0 хотя бы).
Поддержка петлевого интерфейса ядром. Проверить наличие поддержки можно набрав команду

Нам понадобятся исходники ядра и четкое представление о том, что должен делать диск, а так же положительный опыт сборки ядра.
5. К барьеру.
Я никого не хочу пугать, но если ваша рабочая Linux — система живет как минимум на 600 Мб (приблизительный размер RedHat 7.2 в режиме разработчика без X-oв). То здесь нам придется немного попотеть, что бы запихнуть все, что нам понадобится как минимум на 1400 Кб. Почувствуйте разницу.

И так без чего никак не обойтись:
1.минимальный набор каталогов: /bin; /proc; /lib; /dev; /etc; /usr; /tmp;
2.минимальный набор утилит: mv; cp; ls; sh и прочих
3. минимальный набор конфигурационных файлов: rc; inittab; fstab и прочих
4. /dev/hd*; /dev/tt*; /dev/fd0 и прочие

5.1 Файловая система.
Сформировать файловую систему для загрузочного диска можно двумя способами:
1.Используя RAM — диск, если ваша базовое ядро поддерживает RAM — диски.Поддерживается по умолчанию линейкой 2.4.хх.
2.Используя петлевое устройство (loopback device), если ваше базовое ядро поддерживает loopback devices.
Поддержка RAM — дисков понадобится нам и для работы нашего загрузочного диска. Так как я не прибегал к первому способу формирования файловой системы, то как следствие мы будем действовать по второму.
Для начала сформируем файл заполненный 0, в котором мы будем создавать файловую систему нашего загрузочного диска.

#dd if=/dev/zero of=/tmp/fsfile bs=1k count=4000

Таким образом, мы получим файл размером 4096 Кб, этого нам будет вполне достаточно для корня файловой системы, но об этом позже.
Теперь мы его отформатируем. Есть несколько вариантом mke2fs, mkfs.ext3, mkfs.xfs и mkfs.raiserfs. Здесь выбор за вами я пользовался mke2fs преследуя только свои интересы.

#mke2fs -m 0 -N 2000 /tmp/fsfile

По правилам использования этих и других опций читайте # man mke2fs и прочии маны.

#mkdir /mnt/rootfs
#mount -o loop /tmp/filefs /mnt/rootfs

6. Что на диске твоем.
Поймите меня правильно, но я не стану сейчас описывать в какой директории, что у вас лежит или, что должно лежать это займет несколько страниц и полностью отвлечет от темы. Подробности все в том же Boot-Disk-How-To.
Создаем каталоги /bin; /sbin; /dev; /var; /usr; /proc; /etc; /lib; /mnt;на нашей файловой системе.

#cp -dpR /dev/fd0* /mnt/rootfs/dev/
#cp -dpR /dev/ram? /mnt/rootfs/dev/
#cp -dpR /dev/tty3 /mnt/rootfs/dev/
#cp -dpR /dev/hd[a-c]* /mnt/rootfs/dev/

Ну и все иные устройства, поддержка которых необходима, но не перестарайтесь.
На самом деле можно и не копировать все эти устройства, а можно заставить rc скрипт выполнять mknod для необходимых устройств. Но не забудьте, что console; mem; kmem; null; ram0 должны быть обязательно.
Заполняем /etc
Здесь все согласно ваших намерений, могу только указать то, что необходимо на 100%
1.rc
2.inittab
3.fstab
На самом деле здесь большое поле для исследовательской деятельности и все остальное, что вы внесете сюда зависит только от вашей задачи.

Самый простой rc

#!/bin/sh
/bin/mount -av
/bin/hostname Diskotech
/bin/sh

Самый простой fstab

/dev/ram0 / ext2 defaults 1 1
/proc /proc proc defaults 0 0

Самый простой inittab

id:2:initdefault
si::sysinit:/etc/rc
1: 2345: respawn: /sbin/getty 9600 /dev/tty1
2: 23: respawn: /sbin/getty 9600 /dev/tty2

Заполняем /bin
Тут Начинается самое веселое, столько всего, а места на диске практически и нет, без паники! Все лечится! Берем пакет busybox, собираем у себя и читаем мануал. В зависимости от версии «полной коробочки» у вас будут различное и ее наполнение.

# cp -R /bin/busybox /mnt/rootfs/bin/

И создаем все возможные софтлинки.
Заполняем /lib
Ну тут все совсем просто

#ldd /sbin/mke2fs
libext2fs.so.2 => /lib/libext2fs.so.2 (0x40025000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x4003c000)
libe2p.so.2 => /lib/libe2p.so.2 (0x4003e000)
libuuid.so.1 => /lib/libuuid.so.1 (0x40043000)
libc.so.6 => /lib/libc.so.6 (0x40046000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000

С помощью команды ldd мы выясним все необходимые нам библиотеки и скопируем их в
/mnt/rootfs/lib используя ключ -R дабы софтлинки были скопированы без нарушений.

Заполняем /lib/modules
В этом нам поможет modules.conf или lsmod кому, что нравится. Самое главное не забыть модулей файловой системы с которой придется работать если она отлична от файловой системы загрузочного диска. Не забудте vfat.o мне это стоило больших неприятностей, когда заказчик не смог примонтировать саму дискету. Что лежит у меня? Дрова CD_ROM. Дрова мультипортовки, и прочее.

7. Как быть дальше.
Если формирование корневого каталога закончено самое время начать волноваться посильнее. Все дело в том, что теперь могут начаться проблемы. Но об этом позже.

#umount /mnt/rootfs
#gzip -v9 /tmp/fsfile

И так образ нашей корневой файловой системы готов. В сжатом виде составляет, что-то вроде 650 Kb. Переходим к следующему этапу, формированию самого диска.

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

#cd /usr/src/linux
#make bzImage

И посмотреть какого размера получится ядро. Если те же 650-800 Kb, то вполне приемлемый размер. Если ядро всетаки большое, то придется потратить часок другой на удаление лихних компонентов. Хочу напомнить, что ядро должно поддерживать в обязательном порядке RAM- диски, размер RAM диска по умолчанию 4096 байт, можно и больше в описываемом случае в этом нет необходимости. Так же в ядро должна быть вкомпилированная поддержка корневой файловой системы.
Теперь маленькая хитрость, что бы не выполнять десяток операций по созданию загрузочных записей на диске, выполним всего одну

Читайте также:  Windows 10 сборка лучшие сборки

#mkbootdisk -device /dev/fd0 2.4.21

тем самым сформируем шаблон загрузочной дискеты размером 1,44 Mb, если этого размера изначально не хватает, то сформируем дискетку побольше

#mkbootdisk -device /dev/fd0u1680 2.4.21

По крайней мере мне такого размера хватало за глаза.
Теперь монтируем нашу дискету и заполним ее необходимой информацией. То есть скопируем на нее образ корневой файловой системы

#cp /tmp/fsfile.gz /mnt/floppy

Запускаем любимый текстовый редактор, правим файл syslinux.cfg и пишем что-то вроде приведенного ниже текста.

default update
vga=4
prompt 1
display boot.msg
timeout 100
label update
kernel bzImage
append initrd=fsfile.gz rw root=/dev/ram

Вот собственно и все. Наш корневой загрузочный диск готов.

9. Автор.
Andrew E. Kuznetsoff aka Разгильдяй на обкуренной кошке.
10. Литература.

Источник

Мультизагрузка: стелем соломку

Любая система, прежде чем начнет работать, должна загрузиться. Если на вашей машине установлено несколько ОС, еще нужно как-то выбрать, что именно загружать. И если при этом возникнет проблема.

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

Нужно заметить, что существует несколько схем разметки жестких дисков, помимо привычного большинству пользователей деления на разделы. Например, FreeBSD может быть установлена на целый диск без использования таблицы разделов (так называемый режим dangerously dedicated). Windows на платформах Itanium использует схему GUID Partition Table (GPT), и так далее. Но в данной статье речь будет идти о традиционной разметке ATA-дисков, используемой большинством систем на платформе i386.

Что скрывают три буквы — MBR?

Наиболее важный субъект процедуры загрузки — первый сектор жесткого диска. Как правило, его обозначают аббревиатурой MBR (Master Boot Record). Упрощенно формат MBR представлен в таблице 1:

Таблица 1. Формат MBR

Байты Назначение
0 — 445 MBR-код
446 — 461 Описание 1-го раздела
462 — 477 Описание 2-го раздела
478 — 493 Описание 3-го раздела
494 — 509 Описание 4-го раздела
510 — 511 Сигнатура 0xAA55

То есть он содержит код MBR-загрузчика, таблицу разделов (disk partition table, DPT) и сигнатуру, позволяющую распознать данный сектор как загрузочный.

Таблица разделов (64 байта) отводит по 16 байт для описания каждого раздела жесткого диска. Очевидно, что диск может содержать только 4 раздела, описанные в MBR (такие разделы называют первичными). Для обхода этого ограничения используются дополнительные (extended) разделы1. Первый сектор такого раздела аналогичен MBR и может содержать описание логического раздела (диска) и ссылку на следующий дополнительный раздел. В результате несколько дополнительных разделов создают своего рода цепочку ссылок. На рисунке 1 показан пример разбиения диска, поясняющий сказанное.

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

В DPT для каждого раздела содержатся его координаты, а также тип файловой системы и признак активности раздела. Как активный должен помечаться только один раздел; о том, зачем это нужно, поговорим чуть позже.

Координаты раздела записываются двумя способами — в виде номеров цилиндр-головка-сектор (CHS) начала и конца раздела, а также указанием линейного номера первого сектора и количества секторов (см. таблицу 2). Прочтите также врезку Сказание о 1024-м цилиндре, где вопросы геометрии рассмотрены несколько подробнее.

Таблица 2. Формат описателя раздела

Байты Назначение
0 Признак активности
1 Номер головки начала раздела
2 Номер сектора (биты 0-5) и старшие биты (биты 6-7) номера цилиндра начала раздела
3 Младшие биты номера цилиндра начала раздела
4 Тип файловой системы
5 Номер головки конца раздела
6 Номер сектора (биты 0-5) и старшие биты (биты 6-7) номера цилиндра конца раздела
7 Младшие биты номера цилиндра конца раздела
8-11 Номер первого сектора раздела от начала диска
12-15 Количество секторов, занятых разделом

Наконец, программный код (в дальнейшем для него будет использоваться термин первичный загрузчик или MBR-код), располагающийся в начале первого сектора диска, в своем каноническом виде предназначен для анализа таблицы разделов, поиска в ней раздела, помеченного как активный, загрузки в память кода из первого сектора активного раздела (boot-сектора) и передачи ему управления. Именно по такому алгоритму происходит загрузка операционных систем семейства DOS / Windows 9x.

Загрузочный сектор

В первом секторе раздела, с которого предусмотрена загрузка операционной системы, обычно располагается код вторичного загрузчика, а сам сектор именуется загрузочным. Он (код) уже должен уметь работать с соответствующей файловой системой, поскольку в его задачу входит загрузка программы-лоудера (загрузчика 3-й ступени) или непосредственно ядра операционной системы, которые, как правило, являются обычными файлами.

Загрузка непосредственно ядра может использоваться для безусловной загрузки операционных систем семейства DOS / Windows 9x, то есть тех, где пользователю не предлагается выбор системы или параметров загрузки ядра, а требуется просто передать управление ядру системы, размещенному в строго определенном месте (чтобы его не приходилось искать).

В более сложных случаях 512 байт этого сектора уже недостаточно для размещения полнофункционального кода, и поэтому запускается вспомогательная программа загрузчик ядра, практически лишенная каких-либо ограничений дискового пространства (естественно, в разумных пределах) и способная решать весьма широкий круг задач.

Рассмотрим в общих чертах работу наиболее популярных загрузчиков (их подробное описание оставим за рамками данной статьи).

Загрузка в стиле DOS

Поговорим немного подробнее о том, как происходит загрузка систем DOS и Windows. Эти системы во время инсталляции записывают в MBR классический загрузчик, который ищет активный раздел и передает управление коду, размещенному в его первом секторе. Этот код, в свою очередь, запускает ядро системы.

Таким образом, в таблице раздела один из секторов обязательно должен быть помечен как активный, иначе загрузчик не сможет его найти и вернет сообщение, что диск не является загрузочным.

В случае если загрузчик в MBR будет поврежден, восстановить его позволяет команда fdisk /mbr (в современных системах Windows вы ее, к сожалению, уже не найдете). Она перезаписывает только код первичного загрузчика (первые 446 байт), не затрагивая таблицу разделов.

А вот в NT все немножко сложнее

В операционных системах этого семейства используется еще один посредник — NTLoader. Эта программа позволяет более гибко управлять загрузкой, указывая расположение ядра системы или передавая управление на другие разделы диска. Ее загрузчик (вторичный применительно к процедуре загрузки) устанавливается в boot-сектор активного диска, а программа ntldr помещается в корне этого диска, в терминологии Windows это диск C: (при этом сама NT-система может быть инсталлирована на другой раздел, включая и логические диски). NTLoader руководствуется в своей работе конфигурационным файлом boot.ini (который размещается в корне файловой системы активного раздела, там же, где и ntldr).

NTLoader уже умеет работать с файловыми системами (как с FAT, так и NTFS), благодаря чему существует возможность2 установить несколько систем семейства Windows на один раздел. Например, если boot.ini будет выглядеть таким образом:

то это позволит загрузить Windows 2000 из каталога WinNT диска C, в то время как Windows 98 будет занимать традиционную папку C:\Windows и загружаться посредством io.sys.

NTLoader обладает еще одним полезным навыком — он умеет загружать образы загрузочных секторов из файлов. Примеры практического использования этой функции можно найти далее в этой статье.

LILO и GRUB — близнецы-братья

Нет, конечно же, эти два популярных в среде Linux менеджера загрузки имеют ряд коренных отличий, однако применительно к теме данной статьи принцип их работы схож. Они записывают в MBR код, который безусловно (независимо от установленных признаков активности разделов) передает управление вторичному загрузчику (на этот раз он располагается непосредственно в файловой системе, а не в boot-секторе, причем в некоторых случаях это может быть не Linux-раздел; в случае GRUB возможно размещение части вторичного загрузчика — stage1_5 — и вне файловой системы). Эта программа отвечает за отображение меню выбора и (в случае, если выбрана загрузка Linux) передает управление загрузчику ядра.

Благодаря такому подходу, разработчики этих менеджеров загрузки смогли обойти очень жесткое ограничение на размер загрузочного сектора, но зато привязали себя (и пользователей) к Linux-разделу. То есть, если вы на свой компьютер с Windows решите поставить для пробы Linux (с LILO), а затем, по тем или иным причинам, захотите его удалить, то после удаления раздела с Linux ваша система потеряет способность. Впрочем, это довольно легко обойти с помощью организационных методов, например, размещая каталог /boot на отдельном небольшом разделе (и проследив, чтобы все нужные загрузчику файлы располагались в нем). Если же вы не были столь предусмотрительны, и при очередной загрузке видите на экране одинокое L, то решить эту проблему не сложно: загрузитесь с системной дискеты DOS или Windows 98 и выполните команду fdisk /mbr для записи стандартного загрузчика в MBR вместо LILO. Или перед тем, как удалять раздел, деинсталлируйте LILO следующей командой:

Правда, нужно учитывать, что восстановление произойдет успешно только в том случае, если в системе есть файлы с копией MBR до установки LILO (обычно они располагаются в каталоге /boot с именами boot.XXYY, например, boot.0300 для MBR первого диска). Когда вы выполняете команду /sbin/lilo для инсталляции загрузчика, нужные файлы должны создаваться автоматически; при повторных инсталляциях (когда вы меняете конфигурацию загрузчика или устанавливаете новое ядро) эти файлы не перезаписываются, сохраняя оригинальное содержимое. А вот если вы пробовали ставить GRUB, затем снова вернулись на LILO, то при выполнении вышеозначенной команды вы получите в MBR ваш старый GRUB-код.

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

Самый умный загрузчик

Разработчики BSD-систем пошли другим путем, и им удалось каким-то чудом втолкать в 446 байт, оставшихся в MBR после размещения там таблицы разделов и сигнатуры, полноценный3 загрузчик (BootEasy). Он способен проанализировать таблицу разделов и на ее основе предложить вам меню для выбора загружаемой системы. Конечно, доступное пространство не позволяет заниматься украшательством, поэтому выглядит меню предельно лаконично:

Из этого примера видно, что загрузчик нашел три раздела: на первом — DOS (под это же обозначение попадают и системы Windows 9x), на втором — неизвестная загрузчику система (например, так может выглядеть раздел Linux swap), а на третьем — система FreeBSD. Четвертый раздел не размечен, поэтому в меню не представлен. В качестве загрузки по умолчанию (Default) предлагается та система, которая расположена на активном разделе. Причем BSD-загрузчик, ко всему прочему, умеет перезаписывать таблицу разделов, отмечая как активный тот раздел, который был выбран пользователем. То есть если вы сейчас нажмете F1, то загрузится, к примеру, Windows 98, и в следующий раз именно она будет предлагаться как система по умолчанию.

Обратите внимание, что эта способность перезаписывать таблицу разделов может стать источником проблем. Об этом подробно рассказано далее, при описании использования BSD-загрузчика при работе с несколькими жесткими дисками. При необходимости, вы можете отключить перезапись DPT, жестко назначив раздел по умолчанию, переустановив BootEasy с помощью команды boot0cfg (а заодно и изменив время ожидания выбора с 10 секунд, скажем, до 304):

Здесь опция -s задает номер раздела (начиная с 1), который будет использоваться по умолчанию, -t — задержку в тиках (1 секунда примерно соответствует 18 тикам). Будьте предельно осторожны с этой командой, и лучше ничего не делайте, если не до конца представляете, что при этом произойдет (хотя как же можно приобрести опыт, ничего не сломав?).

Грузим три системы с помощью загрузчика BSD

Посмотрим, как можно загрузить Windows, Linux и FreeBSD с помощью стандартного загрузчика FreeBSD. Собственно говоря, это наиболее простой путь — просто инсталлируйте FreeBSD последней, разрешите установку загрузчика в MBR, и больше ни о чем беспокоиться не нужно — загрузчик сам будет определять доступные разделы и предлагать их вам на выбор. Однако одним из серьезных недостатков является то, что BootEasy не умеет анализировать загрузочные сектора логических дисков (размещенных на дополнительных разделах), поэтому выбор будет ограничен системами, установленными в основные разделы5.

Если FreeBSD у вас уже установлена, и вы хотите установить еще и Linux, сохранив загрузчик, установите LILO или GRUB в загрузочный сектор Linux-раздела (большинство инсталляторов позволяют сделать соответствующий выбор). В этом случае BSD-загрузчик передаст управление на этот boot-сектор, а остальное сделает уже Linux-загрузчик.

Если же последней системой устанавливается Windows, то тут без реанимации не обойтись — после инсталляции вы сможете загрузиться только в Windows, поскольку системы от Microsoft безо всяких вопросов перезаписывают MBR тем кодом, какой им нужен. В этом случае вам придется воспользоваться системной дискетой, дистрибутивным диском или LiveCD, чтобы загрузить FreeBSD и восстановить загрузчик, используя команду boot0cfg.

В данной статье, говоря о загрузчике FreeBSD, упоминается лишь устанавливаемый по умолчанию BootEasy, однако нужно заметить, что он не единственный boot-менеджер для этой системы. В коллекции портов вы сможете найти несколько альтернатив, например, extipl (Extended IPL), gag и даже grub. Если вы используете один из них, уточните в документации, как следует выполнять те или иные действия.

Аналогичную задачу может решить и LILO

Если вы делаете ставку на LILO, то здесь придется вручную править его конфигурационный файл для включения поддержки вновь проинсталлированных операционных систем. Естественно, для этого придется загружаться в Linux (если вы только что установили Windows, для этого вам понадобится загрузочный диск или дискета).

Например, загрузка системы Windows, установленной в первом разделе, может быть обеспечена такими строками в lilo.conf:

Если Windows для загрузки использует NTLoader, то при выборе пункта windows в меню LILO вы получите еще одно меню — на этот раз соответствующее файлу C:\boot.ini.

Поскольку на самом деле строка other просто указывает на некоторый boot-сектор, коду которого должно быть передано управление, то таким же образом можно загружать и другие системы, например, FreeBSD (указав соответствующий раздел).

А наибольшую гибкость обеспечивает GRUB

Загрузчик GRUB может не только передать управление на указанный раздел, но и непосредственно загрузить файлы чужих систем (например, FreeBSD). В частности, следующий фрагмент конфигурационного файла обеспечит загрузку FreeBSD, минуя ее вторичный загрузчик:

В этом случае GRUB передаст управление сразу на загрузчик ядра FreeBSD, который и выполнит дальнейшую загрузку. Обратите внимание, что в силу особенностей разбиения раздела, присущих FreeBSD (см. врезку Особенности именования разделов), нужно помимо диска и номера раздела указать еще букву подраздела FreeBSD (в нашем случае — a).

Для загрузки Windows из GRUB больше подойдет использование передачи управления по цепочке:

То есть будет выбран первый раздел, сделан активным, и на него будет передано управление. Дальнейшая загрузка, как и в случае с LILO, будет определяться настройками NTLoader (если он имеется).

По цепочке может быть загружена практически любая система, в том числе и FreeBSD, если такой способ кажется вам более удобным, чем приведенный выше:

Кстати говоря, по цепочке можно передать управление не только на тот или иной сектор, но и на образ сектора, сохраненный в файле. Например, если у вас установлены системы Windows 98, Windows 2000 и Linux, то Windows 98 можно загрузить и сразу из GRUB, минуя меню NTLoader. Для этого можно использовать такую конфигурацию:

Файл bootsect.dos уже должен быть на вашем диске C: (именно его использует NTLoader, когда вы выбираете загрузку Windows 9x из меню NT-загрузчика). Если в boot.ini установить нулевую задержку и в качестве варианта по умолчанию выбрать загрузку Windows 2000, то вы вообще не будете видеть второе меню, делая выбор загружаемой системы только в меню GRUB.

А если я люблю NT?

Приложив некоторые усилия, можно заставить и NTLoader загружать альтернативные системы. Как мы уже упоминали выше, программа ntldr способна передавать управление образу загрузочного сектора, записанному в файл. Например, если у вас в hda1 (в терминологии Linux) установлена Windows XP, а в hda2 — Linux, то вы можете проделать следующее:

1. Загрузившись в Linux (например, с помощью дискеты; можно воспользоваться и LiveCD-дистрибутивом), сохраните первый сектор раздела hda2 в файл и скопируйте его на Windows-раздел:

Команды монтирования в этом примере предполагают, что Windows-раздел у вас описан в fstab. Иначе потребуется также указать тип монтируемой системы и, возможно, некоторые дополнительные параметры. Данный фрагмент сработает только в том случае, если на диске C: вы используете файловую систему FAT. В случае NTFS запись возможна, если файл назначения уже создан и имеет нужный размер, хотя проще и безопаснее воспользоваться посредником, например, дискетой или флэшкой, для переноса образа на диск C:.

Далее, перегрузившись в Windows, добавьте в файл boot.ini такую строчку (описание в кавычках может быть любым):

Теперь, при следующей загрузке компьютера, вы обнаружите в предложенном вам меню новый пункт, выбрав который, попадете в Linux.

В случае FreeBSD все еще проще — вам просто нужно скопировать файл /boot/boot1 на диск C: под именем, скажем, bootsect.bsd, и добавить соответствующий пункт в меню boot.ini.

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

Некоторые особенности работы с несколькими дисками

Если у вас установлено несколько жестких дисков и, например, FreeBSD установлена на второй из них (в то время как загрузка выполняется с первого), то нужно иметь в виду следующую особенность. Вы не всегда можете передать управление на какой-либо раздел второго диска, не сделав этот диск текущим (текущим будем называть диск, номер которого хранится в данный момент в регистре DL процессора, впрочем, для нашей статьи это уже страшные дебри).

Такие менеджеры загрузки как LILO или GRUB умеют это делать прозрачно для пользователя — в зависимости от того, какое устройство указано в соответствующей строке конфигурационного файла, выполняются все необходимые действия.

BootEasy для передачи управления на другой диск предложит вам еще один вариант выбора — F5. Если в MBR второго диска также установлен BSD-загрузчик, то будет выполнен анализ его таблицы разделов и сформировано меню для этого диска. Вернуться на первый можно той же клавишей F5.

А вот если вы используете NTLoader, то тут есть свои особенности.

В случае с LILO вы по-прежнему можете использовать описанную выше схему — сохраняя в файл образ соответствующего boot-сектора и подключая его в boot.ini. Но вот если на первом диске у вас установлена система Windows, а на втором — FreeBSD, и вы хотели бы использовать для загрузки NTLoader (в частности, чтобы иметь возможность безболезненно отключить второй диск), то, просто передав управление на образ загрузочного раздела (файл boot1), вы поставленную задачу не решите. Дело в том, что boot1 обращается к таблице разделов текущего диска, чтобы определить координаты сектора с системой FreeBSD. А поскольку текущим диском останется первый, то и поиск будет выполняться в его MBR-секторе. В результате вы вместо загрузки системы получите сообщение об ошибке.

Чтобы этого избежать, можно использовать образ MBR второго диска, в который должен быть установлен один из загрузчиков, и передавать управление на него. В случае с Linux особых проблем возникнуть не должно — во время инсталляции укажите, что хотите поставить LILO или GRUB в MBR второго диска (hdb), а после установки системы сохраните в файл образ MBR:

Теперь перепишите этот файл в Windows-раздел и настройте NTLoader, как было описано выше, и при выборе соответствующего пункта меню вы попадете в LILO или GRUB, который сделает всю оставшуюся работу.

Однако будьте предельно осторожны с загрузчиком BSD — он обязательно должен быть установлен, в нашем случае — в MBR второго диска, и использовать лучше образ этого сектора, снятый утилитой dd. Если это не было сделано, то файл boot0 не будет содержать таблицы разделов. А, как вы, должно быть, помните, BSD-загрузчик перезаписывает MBR, чтобы проставить признак активности раздела, загружавшегося последним. В итоге, если вы просто будете использовать boot0 в качестве образа MBR, то получите следующую схему:

  • Стандартный загрузчик из MBR первого диска находит активный раздел и загружает его boot-сектор.
  • Находящийся там NTLoader при выборе пункта FreeBSD загружает bootsect.bsd (который является копией boot0).
  • Загрузчик BSD, получив управление, загружает выбранную систему, проставляет признак активности в пустой таблице разделов и записывает ее в MBR.
  • Включив в следующий раз компьютер, вы обнаружите свой винчестер девственно чистым.

Однако не следует впадать в панику и начинать форматировать диск. Ваши данные никуда не делись — все на месте и ждут загрузки. Сломалась только таблица разделов, которую не сложно восстановить. Если, конечно, у вас будет под рукой нужный инструментарий (см. следующий раздел).

Страховка на все случаи жизни

Итак, что же нужно иметь под рукой, чтобы справиться с большинством проблем, которые могут возникнуть при загрузке системы?

Если вы часто используете Windows, и эта система вам очень дорога, то непременно обзаведитесь двумя-тремя (учитывая их непревзойденную надежность) системными дискетами, на которых хорошо бы держать и утилиты fdisk, format и т.п. Даже если вы работаете только в Windows XP, все равно подготовьте загрузочную дискету, например, с Windows 98. Поверьте, это не самая лучшая ситуация, когда вы не можете найти, откуда можно выполнить спасительную команду fdisk /mbr.

При использовании Windows 2000 или XP не поленитесь установить Recovery Console (см. врезку Использование консоли восстановления). Конечно, если у вас всегда под рукой инсталляционный диск, то это не является необходимым. Впрочем, места на диске консоль восстановления занимает немного, а выручить когда-нибудь сможет.

Для Linux и FreeBSD крайне полезны будут LiveCD, с которых можно будет загрузиться и устранить возникшую проблему. Также интересное решение было описано в прошлом номере Системного администратора в статье GRUB на CD, или Ещё один способ восстановить MBR.

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

Неплохо также иметь под рукой и специализированный LiveCD, предназначенный для аварийно-восстановительных работ. В принципе, вы можете создать и собственный дистрибутив, разместив на нем именно те инструменты, которые вы предпочитаете использовать. Но существуют и готовые решения, одно из которых — Knoppix.

Много про этот дистрибутив писать не буду. Отмечу лишь, что он несет на борту большое число утилит для разбиения и восстановления разделов диска — от традиционных fdisk и cfdisk до QTParted, позволяющей производить визуальное редактирование диска, в том числе и изменение размеров разделов без потери информации (однако это не отменяет необходимость обязательного создания резервных копий перед любыми манипуляциями с разделами). В частности, попытаться восстановить таблицу разделов, если она будет повреждена (например, в результате неправильных манипуляций с BootEasy), можно с помощью утилиты testdisk — она сканирует весь диск в поисках сигнатур, и по ним пытается восстановить DPT. Меня она пару раз выручала даже в условиях довольно сложной разметки. Пример ее работы, а также некоторые другие инструменты Knoppix показаны на рисунке 2.

С помощью Knoppix вы сможете восстановить и менеджеры загрузки. Например, чтобы восстановить LILO, cмонтируйте ваш Linux-раздел, скажем, в /mnt (при наличии нескольких разделов их тоже следует подключить, сохраняя иерархию; например раздел /boot смонтируйте как /mnt/boot), с помощью команды chroot /mnt сделайте его корневым и выполните команду /sbin/lilo для восстановления загрузчика.

Не поленитесь сохранить образы MBR и загрузочных секторов. Места они практически не занимают, записываются быстро, а вот восстановить с их помощью проблемный сектор (той же командой dd) может оказаться на порядок проще и быстрее, а главное — надежнее, чем с использованием различный утилит, которые, в принципе, могут и ошибиться. Единственное — не забывайте поддерживать этот архив в актуальном состоянии, чтобы не откатиться на тот момент, когда у вас не было установлено и половины систем.

Ну и неплохо также иметь записанную на бумаге таблицу разделов (ее можно сформировать с помощью fdisk) — иногда бывают секунды, когда все решают минуты В общем, порой оказывается намного проще (а то и единственно возможно) восстановить таблицу разделов вручную с помощью fdisk. А феноменальной памятью, чтобы запомнить все сектора и цилиндры, обладают не многие.

Заключение

Как видите, проблемы с загрузчиками не представляют той опасности, как может показаться на первый взгляд. Никакие данные не теряются безвозвратно, даже в случае повреждения таблицы разделов, и если у вас под рукой такой замечательный инструмент как Knoppix, то все можно исправить.

Главное — не впадайте в панику и не совершайте скоропалительных действий. От того, броситесь вы восстанавливать разделы сразу же после возникновения проблемы или спустя неделю, ничего не изменится. А вот последствия ошибок могут быть весьма плачевными. Поэтому сначала попытайтесь вычислить, что же произошло, и на основании этого составьте план восстановительных мероприятий. Постарайтесь предугадать возможные проблемы, а также подготовьте точки отката для каждого шага (например, сохраняя образ текущего MBR, хоть он и может выглядеть совершенно бесполезным). Только после этого приступайте к спасению своих данных.

Удачи вам и крепких нервов!

Соглашение о терминах

Если говорить о процессе загрузки, то английский язык оказывается здесь несколько богаче русского. В нем есть два термина — booting и loading, описывающих разные этапы загрузки ОС. Мы же вынуждены плясать вокруг одного слова — загрузка, поэтому приведу небольшой словарик, которого будем придерживаться в этой статье (в скобках указаны синонимы):

Термин загрузчик в зависимости от контекста может обозначать либо один из указанных кодов, либо весь набор программ, отвечающих за загрузку системы (например, BSD-загрузчик).

Сказание о 1024-м цилиндре

С давних времен умудренные опытом системные администраторы передают своим молодым коллегам наказ — не ставить операционную систему за пределами 1024-го цилиндра. Что же это за магический цилиндр и насколько проблема актуальна в наши дни?

Если посмотреть на структуру таблицы разделов (Таблица 2), то будет видно, что при CHS-адресации там отводится 6 бит для номера сектора, 8 — для головки, и 10 — для цилиндра. В результате мы получаем естественное (для BIOS) ограничение на адресуемое пространство: 63 сектора * 256 головок * 1024 цилиндра (те самые) * 512 байт в секторе = 8455716864 байт (диск около 8,46 Гб). Код первичного загрузчика, если он для работы с диском использует функцию BIOS INT13 (которая как раз и руководствуется CHS-адресацией), просто не сможет дотянуться до раздела, размещенного за указанным пределом.

В современных BIOS используется, как правило, расширенное прерывание INT13, позволяющее обойти это ограничение. В этом случае для доступа к разделу используется преобразование геометрии на лету (например, для цилиндра 1800 и головки 16 возвращается законный номер цилиндра 900 и головка 32). Кроме того, некоторые менеджеры загрузки способны самостоятельно рассчитывать местоположение разделов, основываясь на линейных координатах, именуемых также LBA — Linear Block Addressing (для указания первого сектора раздела в DPT отводится 4 байта, что позволяет адресовать порядка 2 Тбайт данных: 2**32 сектора * 512 байт). Например, так ведет себя LILO в случае использования опции linear в файле lilo.conf

Особенности именования разделов

Это было бы смешно, если бы не было так грустно Каждая система использует свои наименования разделов, в которых можно и запутаться. Приведенная здесь таблица должна помочь вам (приведены лишь некоторые примеры, об остальном несложно догадаться):

Таблица 3. Обозначения разделов диска

Раздел GRUB Linux FreeBSD
Первый раздел на первом диске (hd0,0) hda1 ad0s1
Второй раздел на первом диске (hd0,1) hda2 ad0s2
Первый раздел на втором диске (hd1,0) hdb1 ad1s1

Как видите, FreeBSD и GRUB нумеруют винчестеры начиная с нуля, Linux использует для их обозначения буквы a, b и т.д. Разделы Linux и FreeBSD считают с единицы, в то время как GRUB — с нуля.

Кроме того, FreeBSD использует собственную разметку внутри раздела. В ее терминологии разделы именуются слайсами (slice), а созданные в них подразделы — собственно разделами (partition). Эти разделы обозначаются буквами (первый раздел первого слайса будет обозначаться как ad0s1a.

Таблица 4. Соответствие между обозначением и контроллерами

Диск Linux FreeBSD
Primary Master hda ad0
Primary Slave hdb ad1
Secondary Master hdc ad2
Secondary Slave hdd ad3

Обратите внимание еще на одну особенность — FreeBSD и Linux привязывают нумерацию раздела к контроллеру и режиму работы диска (таблица 4), в то время как GRUB считает реально присутствующие диски. Например, если вы подключите только один диск как Primary Slave, то Linux будет рассматривать его как hdb, в то время как GRUB — как (hd0).

Использование консоли восстановления

Как ни странно, но системы семейства Windows NT не предоставляют пользователю возможность использовать утилиту fdisk или как-то иначе работать с MBR и загрузочными секторами. Для этого используется Recovery Console (консоль восстановления), которую можно проинсталлировать на диск либо использовать непосредственно с дистрибутивного CD.

Установка на диск выполняется из папки дистрибутива командой:

При следующей перезагрузке вы увидите новый пункт в меню NTLoader, вызывающий загрузочный образ из места расположения файлов консоли восстановления (обычно это C:\cmdcons\BOOTSECT.DAT).

Загрузившись в консоль, вы сможете выполнить ряд команд, среди которых интересные нам fixmbr и fixboot. Первая, как следует из названия, перезаписывает MBR стандартным кодом (не затрагивая таблицу разделов), вторая — заносит код вторичного загрузчика в boot-сектор активного раздела.

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

Большая тайна маленькой дискетки

Вы никогда не задумывались, почему дискета, забытая в дисководе, прерывает загрузку компьютера с выдачей сообщения Non-System disk or disk error? Казалось бы, если дискета не загрузочная, то BIOS должен просто приступить к опросу следующего по списку устройства

Загрузитесь во FreeBSD или Linux и запишите в файл первый сектор чистой дискеты, только что из коробочки:

Откройте его в каком-нибудь hex-просмотрщике (это можно сделать и в Midnight Commander), и — о чудо! — мы видим и код, и сигнатуру загрузочного раздела! То есть получается, что дискета может быть системной или нет, но она всегда загрузочная. И поэтому BIOS, обнаружив сигнатуру 0xAA55, отдает управление коду и умывает руки. Все остальные сообщения — это уже забота загрузчика, размещенного в boot-секторе нашей дискеты. А он, как можно увидеть, только и умеет, что ругаться на экране страшными для секретарш фразами.

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

Источник

Читайте также:  Посмотреть сетевые параметры linux
Оцените статью