Форум русскоязычного сообщества Ubuntu


Автор Тема: Как сделать загрузочную дискету?  (Прочитано 2570 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн warhel

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Есть достаточно простое задание - сделать загрузчик на дискете, то есть чтобы когда в биосе ставишь загрузку с дискеты - управление передавлось некому нашему коду (без разницы какому, можно просто выводить текстовую строку на экран и всё). Прочитал много много теории про загрузочные записи загрузчики и т.д., нашёл на асме готовый код непосредственно загрузчика (там буквально 10-15 строчек на самом деле). Единственная проблема - как из всего этого теперь сделать загрузочную дискету. Я понимаю, что мне надо просто записать первые байты на дискете, но как это сделать? Нашёл какие-то разные программы под винду, но сейчас нет компа с ней, точнее дискетника на нём. Пробовал писать таким найденным кодом:

#include <sys/types.h> /* unistd.h needs this */
#include <unistd.h>    /* contains read/write */
#include <fcntl.h>

int main()
{
        char boot_buf[512];
        int floppy_desc, file_desc;
 
       
        file_desc = open("./boot", O_RDONLY);
        read(file_desc, boot_buf, 510);
        close(file_desc);
       
        boot_buf[510] = 0x55;
        boot_buf[511] = 0xaa;

        floppy_desc = open("/dev/fd0", O_RDWR);
        lseek(floppy_desc, 0, SEEK_CUR);
        write(floppy_desc, boot_buf, 512);
        close(floppy_desc);
}
Он компилится и запускается, но в итоге на дискету ничего не пишется, дискетник даже не включается. Стоит отметить, что у меня он монтируется почему-то только руками и пробовал писать вместо /dev/fd0 непосредственно место, куда он примонтирован - не помогло. Просто так дискету вижу нормально, отформатировал её, но вот выше написанным кодом записать никак не могу. Подскажите, что делаю не так? Или может вообще есть более простой способ?
« Последнее редактирование: 20 Май 2010, 08:20:59 от Владимир Николаевич »

Оффлайн hippi90

  • Активист
  • *
  • Сообщений: 433
    • Просмотр профиля
Re: Как сделать загрузочную дискету?
« Ответ #1 : 19 Май 2010, 21:43:14 »
Чтобы записать файл в первый сектор дискеты надо воспользоваться консольной командой dd
dd if=/path/to/file of=/dev/fd0 bs=512 count=1

Оффлайн warhel

  • Автор темы
  • Новичок
  • *
  • Сообщений: 36
    • Просмотр профиля
Re: Как сделать загрузочную дискету?
« Ответ #2 : 19 Май 2010, 23:01:30 »
Спасибо! Огромное спасибо! Работает, работает блин! А я то голову ломал  ;D

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Как сделать загрузочную дискету?
« Ответ #3 : 20 Май 2010, 08:25:18 »
Можно просто воспользоваться поиском, гуглица за 5 сек ;)

Оффлайн alecsartania

  • Старожил
  • *
  • Сообщений: 1557
  • УМка.
    • Просмотр профиля
Re: Как сделать загрузочную дискету?
« Ответ #4 : 20 Май 2010, 08:48:03 »
остается только воспевать хвалу телепатам, которые  успешно трансформировали тему "сделать загрузочную дискету"(вообще подразумлевающую кроме записи загрузчика в первый сектор и помещение загрузчика какой-либо ОС на дискету формирование на дискете пула собственно каких-то прикладных программ - иначе зачем загрузочная дискета?), с примером куска какого то кода!,  в, как оказалось, верный вопрос - как записать  любой загрузчик в загрузочный сектор!
 Мне остается только аплодировать.
Дома Linux mint 15 ||  Ubuntu 14.04  / Ubuntu 17.03
Работа: Linux Mint 18(Ub 16.04)

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Как сделать загрузочную дискету?
« Ответ #5 : 20 Май 2010, 08:59:26 »
остается только воспевать хвалу телепатам, которые  успешно трансформировали тему "сделать загрузочную дискету"(вообще подразумлевающую кроме записи загрузчика в первый сектор и помещение загрузчика какой-либо ОС на дискету формирование на дискете пула собственно каких-то прикладных программ - иначе зачем загрузочная дискета?), с примером куска какого то кода!,  в, как оказалось, верный вопрос - как записать  любой загрузчик в загрузочный сектор!
 Мне остается только аплодировать.
верно, hippi90, +1 к телепатии

 

Страница сгенерирована за 0.057 секунд. Запросов: 22.