Форум » SyMon и UNIX » Symon и syslinux » Ответить

Symon и syslinux

ainu: Здравствуйте, форумчане. Такая вот трабла: есть две primary партиции по 31 метру, FAT16 на первой установлен syslinux и тонкий клиент на второй стоят утилиты и загрузчик дос с менюшкой Устанавливаю symon 3.22 Lite, вторая партиция с утилитами грузится без проблем а при попытке загрузки первой пишет boot filed Помогите пожалуйста решить проблему.

Ответов - 36, стр: 1 2 All

Vladimir Dashevsky: Так а как раньше производилась загрузка с первого раздела?

ainu: Раньше на разделе с утилитами стоял BootIt NG. Он фактически устанавливал активной 1-ю партицию и наоборот; вызвать его при загрузке можно было зажав Insert. Пробовал с нуля на чистом (всё было секурно удалено акронисом, симона там не было никогда) диске - создаю 1 партицию с клиентом, делаю для неё syslinux /dev/hdd1, заливаю ghost-ом партицию с утилитами (пробовал и с 0 создавать руками), устанавливаю симон. Он успешно определяет обе партиции (через поиск), начинаю грузить партишн с утилитами - всё ок, пытаюсь загрузит партишн с клиентом - пишет Boot failed :(( Все действия производятся на одном (!) диске.

Vladimir Dashevsky: А можно настройки SyMon посмотреть? Те что по F2.


ainu: Вот они (по порядку через ';') : 0-й; Thin;3;0;-;-;0;3;0 1-й Utils;3;0;-;-;1;0;0 Других разделов на винте нет, только эти два, поиск ничего нового не даёт.

Vladimir Dashevsky: Хорошо, а чем собственно грузится ядро линукса? lilo? grub?

ainu: Ммм... собственно syslinux этим и занимается, т.е, он пишет свой загрузчик на партицию (по крайней мере так должно быть), а когда она становится активной, то собственно идёт загрузка. Раньше бутит так и делал (менял активные разделы). Специально пробовал использовать другую версию syslinux (последнюю) - на флешке и на харде (который вообще только с партицией syslinux) без симона всё работает. Я конечно вышел временно из положения - гружу сначала фриДос, а потом через loadlin.exe, но такой подход меня не устраивает тем, что памяти больше надо, а так же при работе loadlin вылетает туева куча сообщений на экран, которых пользователь видеть не должен. А с syslinux всего 2 неинформативные (!) строчки. Обидно очень... монитор Ваш очень хорош, просто как нельзя лучше подходит к моей ситуации, а тут такая засада...

Vladimir_Bronsch: ainu, добрый день Как я понимаю, комп у вас довольно древний, возможно, что доржки имеют меньше чем 63 сектора. Так вот у меня предположение, что SyMon при установке не хватает места, хотя и версия Lite, и он залезает на загрузочный сектор раздела syslinux. Что если попробовать версию 3.21? Владимир Дашевский, что думаете? Привет,

ainu: Я думаю, что такое врядли возможно, т.к. я ставлю syslinux после симона; тогда бы не работал симон. Я вот что подумал, создам-ка я ещё одну партицию после этих 2-х, сделаю ей syslinux после чего найду симоном. И попробую загрузиться, если нет, тогда удалю симон и установлю заново, чтобы до конца понять где же засада. Винт древний - 3 гб. Но такие и планируется использовать, ведь всё ПО 6-10 мб плюс утилиты 22 мб, так что даже 40 метровые винты можно пользовать:)) такого конечно не будет, но это как пример:))

Vladimir Dashevsky: Vladimir_Bronsch Нет, SyMon не может так безобразничать, что при установке затрется бут-сектор. ainu Надо разобраться, что именно за загрузчик поднимает ядро с раздела. Проверить, что таблица разделов соответствует устройствам, с которых монтируются файловые системы. Еще можно поиграть с порядком разделов: 0-й; Thin;3;0;-;-;0;3;0 поменять на 0-й; Thin;0;3;-;-;1;3;0 А еще возможно там неправильно указан параметр hidden sectors в бут-секторе FAT16. Из-за этого загрузчик неправильно определяет, где собственно начинается начало раздела в LBA.

ainu: Замена параметров не подошла. Результаты 'играний' нулевые. Удаляю симон, ставлю активной партицию, syslinux всё грузит. Пробовал создать 3-й раздел, но результат 0, т.к. симон его не смог найти. Он может искать разделы без установленного редактора разделов? Задача упрощается донельзя: имеется 2 партиции, каждая со своим загрузчиком. Надо, чтобы по умолчанию система грузилась с 1-й (для чего её просто надо сделать активной), при выборе раздела с утилитами, активной становилась бы 2-я партиция и всё грузилось с неё. Порядок разделов в MBR должен быть одинаковый - имено такой, как на диске. Т.е. задачей симона является перестановка активности разделов. Уважаемые, помогите плз составить такой конфиг, или хотя бы не запутаться с его составлением. Заметил интересную вещь - время на табличке о регистрации можно сократить, нажимая insert. Всё больше начинаю смотреть в сторону симон 3.21

Vladimir_Bronsch: Ainu, Вы пишете про автопоиск разделов, значит раскраиваете диск на партиции Вы с помощью сторонних утилит. А потом уже ставите SyMon и используете его как переключатель активности разделов. В принципе это возможно, но не всегда. Есть типы файловых систем, которые SyMon не находит, ext3, например. Но это не беда, если для раскройки диска Вы возьмёте именно SyMon, ведь он для того и предназначен. Тогда SyMon с самого начала будет ЗНАТЬ, где начало и где конец, даже если Вы экзотику ставите, и автопоиск будет не нужен. Попробуйте. С помощью SyMon выделите по 4 цилиндра на syslinux и на утилити (4 цилиндра=31MB), коды FCS => для syslinux: 83 (это надо уточнить), для утилити: FAT16. Потом генерируете MBR, ставите syslinux и пробуете его запустить. Пишите, что вышло из этой истории. Успехов,

ainu: Чем MBR делать? fdisk \MBR ?

Vladimir_Bronsch: Нет, с помощью SyMon. Если в редакторе разделов нарезали по 4 цилиндра на оба раздела, то вторым шагом создаёте дескрипторы ОС в таблице "F2". Потом против названия нужной ОС ставите звёздочку клавишей пробела, далее делаете загрузку с дискеты, неважно, вставлена дискета или нет. Как раз в этот момент и генерируется нужный Вам MBR. За подробностями отсылаю к документации SyMon, смотри PDF-файл на сайте.

ainu: У меня вот что получилось: после тотальной очистки диска акронисом с секурным удалением, запускаю симон с дискеты, создаю fat16 раздел, форматирую его, запускаю симон с дискеты от имени жёсткого диска, пишу дескриптор ОС Thin;1;-;-;-;0;1;0 жму enter. Перезагружаюсь, смотрю акронисом - раздел появился, иду в линь, там делаю syslinux этому разделу. Вновь загружаю симон с дискеты от имени харда. Появляются те же настройки, что делал выше, жму загрузить и... оно нормально загружается! Ну думаю, все, конец мучениям, однако... Устанавливаю симон лайт, вбиваю в него те же настройки, пытаюсь загрузить - опс, boot failed

ainu: Такс, попробовал установить полную версию симон на хард. Сделал всё по тому же алгоритму, что и прежде, но с харда не грузится, а с дискеты грузится! Как перенести с дискеты на диск? Я был бы просто счастлив...

ainu: Описываю финальную ситуацию: на очищенный акронисом диск ставится симон 3.22 независимо про или лайт, далее тут же симоном создаётся и форматируется раздел, затем вбиваются дескрипторы ос и создаётся MBR, после чего на партицию ставится syslinux. Все настройки симона на дискете и харде идентичны. В итоге получаем, что симон, запущенный с дискеты от имени диска спокойно грузит раздел с syslinux, а будучи установлен на хард (как про так и лайт) с этой же дискеты при попытке загрузиться с раздела пишет BOOT ERROR Ммм... да... буду пробовать с версией 3.21

Vladimir Dashevsky: Хм. Странно всё это. Остается еще гипотеза, что это может быть связано с тем, что SyMon патчит бут сектор FAT16 в памяти, чтобы поправить там номер загрузочного диска. При этом он расчитывает, что бут-сектор на самом деле стандартный для дос, и номер диска расположен в определенном месте. Вполне возможно, что для линукс бут-сектор другой, и патч только портит его. Если эта гипотеза правильная, то должен помочь такой ход. Надо создать вспомогательный раздел в таблице разделов SyMon размером 1 сектор, который будет находиться ровно там же, где и бут-сектор раздела. Но вот FSC этому разделу надо назначить такой, чтобы он вообще не напоминал о ДОС, скажем #55. Допустим, что это раздел 2: 0 - FAT16 (1) - syslinux 1 - FAT16 (2) 2 - #55 - начало совпадает с разделом 0 Тогда дескриптор для syslinux будет: 0-й; Thin;0;1;-;-;0;2;0 таким образом, патчер будет думать, что он патчит раздел #55, а на такой FSC патча нет. Но в реальности то будет загружен тот же самый бут-сектор от раздела FAT16. Единственное, не понимаю пока, почему при загрузке с дискеты патч не срабатывает...

ainu: Не срабатывает этот вариант, или я чего-то не правильно делаю. Делаю пока с 1-м разделом, т.е. вторго (с утилитами) пока не создал. Итак, в конце раздела создаю ещё один раздел, запустив редактор с дискеты (правда там можно мин только на 1 цилиндр создать), в симоне, запущенном с винта в редакторе подправляю чтобы начало совпадало с разделом с Thin, длину ставлю 1. Карта разделов показывает конфликт. Пытаюсь загрузиться с раздела, указав загрузочным раздел с FSC=55, все равно пишет boot error. Подскажите, может я что-то неверно сделал? С дискеты по-прежнему всё грузится, при том как с раздела с FSC=55, так и непосредственно с теми конфигами, которые были раньше, т.е. Thin;1;-;-;-;0;1;0

Vladimir_Bronsch: Но ведь запускался же syslinux, когда на диске не было SyMon! Со стандартным загрузчиком всё было в порядке, значит. Что если сделать так: удалить с диска SyMon вместе с его настройками (т.е. занулить сигнатуру hoodwin в третьем или в четвёртом блоке). Затем сделать fdisk /mbr . Потом добиться, чтобы syslinux запускался стандартным загрузчиком, как это уже имело место. А потом вновь поставить SyMon. Тогда SyMon, не найдя свою сигнатуру, возьмёт все данные из MBR, т.е. размеры разделов и коды FSC. И снова попробовать запустить. Правда, этот совет - "метод научного тыка" :-) Но... хуже уже не будет.

ainu: Ответ не найден. На другом винте та же потеха - boot error

Vladimir Dashevsky: Ну, раз такое дело, пришлите мне пожалуйста бут сектор раздела, а еще лучше - образ syslinux, если он не очень велик.

ainu: Можно вам прислать образ ghost (версия 8.3)? Там будет симон и пустой раздел с установленным syslinux. Если у Вас всё получится, тогда вы увидите, что syslinux попросит ввести имя загружаемого ядра.

Vladimir Dashevsky: Вообще, мне достаточно одного сектора. Ну, или просто сделать что-нибудь типа cp /dev/hda1 image.bin, потом его пожать и прислать. Писать я его пока никуда не собирался :)

ainu: Хорошо, я сделаю образ бутсектора как обычно через dd и отправлю его на reg@symon.ru с темой письма: бутсектор syslinux.

Vladimir Dashevsky: лучше на support@symon.ru

ainu: Отправил на support@symon.ru

Vladimir Dashevsky: Ага, поймал

ainu: Не хотелось бы ни торопить ни лишний раз дёргать автора ни что-то комментировать, но ветка как-то замерла...

Vladimir Dashevsky: Нашел у себя ляп. Появился он, когда я делал автоматическе заполнение буфера клавиатуры. Портится регистр SI, в котором передается ссылка на активный раздел в MBR, оттуда берется смещение раздела. Проверить гипотезу можно так. В бут-секторе нужно забить nop-ами (opcode 0x90) 4 байта по смещению 0x9E..0xA1. И кроме того, убедиться что 32-битное число по смещению 0x1C равно LBA адресу бут-сектора. Сейчас там лежит число 0x3F=63 - первая дорожка. Поправлю SyMon, пришлю два архива с патчем, на финальную проверку...

ainu: Буду очень благодарен за помощь! Жду архивы для тестирования.

Vladimir Dashevsky: Архивы отослал на тот адрес, с которого получил бут-сектор. Ждем результатов проверки.

ainu: Архивы поймал. Постараюсь как можно быстрее протестировать - пока, к сожалению, болею. Результаты сообщу непременно!

ainu: Ходы и норы! Работает!!! Без заиканий на какие-либо ошибки!

Vladimir Dashevsky: Поздравляю! Это, пожалуй, первый бут-сектор, который обращается к записи в таблице разделов MBR, ссылка на которую передается в паре DS:SI. Все остальные сами читают MBR повторно и сами ищут там активный раздел.

Vladimir_Bronsch: Уважаемый автор, а не могли бы Вы прокомментировать ситуацию: насколько критичен этот найденный баг для других пользователей, в каких версиях SyMon он существует и выйдет ли в связи с этим новый релиз. Заранее благодарен, Владимир

Vladimir Dashevsky: Как я и написал, ошибка крайне редкая, поскольку большинство загрузчиков из бут-сектора не пользуется данной особенностью. Дело в том, что ранее, когда MBR содержала только стандартный загрузчик, единственный во всем мире, поиск активного раздела осуществлялся по указателю DS:SI, и он, так уж вышло, доживал до запуска кода из бут-сектора. В результате стало принято считать, что этот указатель передается в бут-сектор как параметр, и указывает на запись в таблице разделов MBR. В этой записи, как известно, находится информация о положении раздела на диске, типе файловой системы и т.п. Но главное удобство заключается в том, что благодаря такому способу можно в принципе грузить систему не из основного раздела! А, скажем, из расширенного. А всё потому, что загрузчику не надо знать, откуда реально прочитан дескриптор раздела, его можно хоть виртуально прямо в памяти создать. Надо сказать, что этим удобством мало кто воспользовался, потому что уж было так заведено, что в качестве загружаемых определены основные разделы, а все прочие схемы - от лукавого. Но вот, как видно, линукс с раздела FAT воспользовался... Этот баг не критичен для всех ОС, которые грузятся из активного раздела MBR. Их загрузчики сами повторно считывают MBR и сами определяют там активный раздел. Этот баг критичен для пользователей, намеревающихся делать загружаемыми расширенные разделы, хотя ошибка может и не проявиться ввиду того, что зачастую вместе с загрузчиком в бут-сектор вписывается информация об абсолютном положении раздела на данном диске, так что загрузчик может вычислить все необходимые адреса без необходимости повторного чтения MBR. Наличие данной ошибки считаю несущественным для большинства пользователей. Исправление войдет в новый релиз вместе с каким-нибудь существенным улучшением.



полная версия страницы