Pull to refresh

Comments 78

Завидую я таким, кто может сам до такого догадаться, так потом еще и реализовать! Респект!
После 5 подряд заливания на флеху очередной операционки, трудно было не задуматься об оптимизации труда )
Когда вам было лет 5-6 это умел каждый кто интересовался компами…

(MBR у HDD такой самый, и в те времена были даже заражающие его вирусы, так что каждый умел читать/писать/редактировать его с помощью всяких утилит типа Norton DiskEdit или даже просто в MS Debug)
Ага, даже дохлые дискеты реанимировать удавалось путём копирования первых секторов с живой дискеты на дохлую DiskEdit-ом.
Ну вот зачем Вы дразнитесь? =) Итак жалею, что не родился лет 10-20 назад.
Радуйся, у нас было «тяжёлое детство, восьмибитные игркшки ©»
Не могу я радоваться! Мои любимые игры: Wolfenstein 3D, Doom I и II, Duke Nukem 3D, Redneck Rampage. Правда они 16-ти битные, но все же! Денди и тоже любил.
Они все (точнее почти все, Redneck Rampage не помню) 32-ух битные (386-й минимум требовали)
Да, Вы полностью правы. Я что-то перепутал. Redneck Rampage требует Pentium 166.
А что мешает самостоятельно погрузиться в эти дебри? Не так-то там всё и сложно, как кажется с первого взгляда.

ЗЫ: ник почти в тему :)
Вы правы. Прерывание 0x02h возникает при сбоях питания. Так и задумывалось.
UFO just landed and posted this here
За теоретическую (и асм-практическую) часть спасибо, интересно.
Но вот огород городить ради мультибута с флешки смысла не было. То же самое можно сделать, не разбивая её на разделы. Вручную или с помощью готового софта. Вот, например, WinSetupFromUSB делает это с помощью grub. У меня на флешке с её помощью разместились BartPE, Ubuntu 10.04 LiveCD, Windows XP и Windows 7. И добавил бы ещё кое-что, но место закончилось.
Правда,
упс…
Правда, решение далеко от изящества, зато быстрое и надёжное.
Невнимательно читал. Решил было, что сома Windows 7 живая тама.
в сторону GRUB смотрел, без сомнения он бы спас положение, но это как-то не интересно было бы)
Люди с техническим складом ума вообще много чего способны натворить, когда простое решение слишком… простое )
И это прекрасно. Иначе бы до сих пор на лошадях ездили, в лучшем случае.
Вот в этом есть смысл.
А вы именно извращались от скуки, практиковались или еще что…
Как только мы начнем прежде чем что-то сделать оценивать, насколько это будет полезно, мы станем скучными скептиками
Можно много интересных идей и знаний упустить, если каждый раз задумываться «а зачем?».

В свое время писал собственный загрузчик с проверкой пароля при включении компьютера до загрузки системы, так вот приобретенные знания помогли вручную восстановить «нечаянно» убитую таблицу разделов на ноутбуке, а написание «голых» программ на FASM пригодилось при создании шелл-кодов.
а вы случайно не подскажете как в такую флешку добавить еще несколько win7?
с хр это пролазит, а вот с седьмыми виндами чтото я копаюсь и пока неполучилось. перед выбором редакций при установке выдает ошибку
спасибо.
Насколько я понимаю, только на разные партиции.
Но существует специальный трюк. Если нужно несколько редакций одной битности — дистрибутив легко превращается в «универсальный», который при установки даёт выбрать редакцию. Так что в конечном итоге установщика нужно только два: x86 и x64.
Для этого нужно удалить из дистрибутива один файл, точное название не помню, но это гуглится.
надо подредактировать файл install.win удалить ненужные и экспортировать нужные редакции, но это костыль, правда работает

нагуглил еще один вариант, через imdisk но у меня что-то пошло не так и в итоге выдает ошибку.
youtu.be/uaOmDS15ZWg?t=27s
Да вы извращенец, батенька!!!
Не буду углубляться в подробности, просто приведу в пример старую статью.
Первый раздел можно дополнительно форматнуть в FAT/NTFS и он будет читаться виндой, как вы и обещали толпе.

Что вы тут нагородили — это просто жесть!!!
Не могу не упомянуть о замечательном опенсорсном MBR, который я всегда использую в таких случаях (пакет в Debian mbr, команда install-mbr). Ее функционал один в один совпадает с тем, что описано в топике.
Фревый boot0 (лежит в /sys/boot/i386/boot0) тоже бы подошел, полагаю.
А почему бы просто не проинсталить на флешку граб и кинуть на нее пачку iso фаилов. У меня так сделано + на том же разделе FreeDOS чтобы всякие системные утилитки можно было просто копированием туда добрасывать
А как загрузиться с произвольного iso-файла? Поделитесь знанием, пожалуйста.
товарищ господин, вот эти цитаты явно лишние, по-моему тут никому не надо объяснять как пользоваться fdisk и dd. вы просто бы диаграммку нарисовали, мол, в результате должно быть так.

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Отличная статья. Позволю себе добавить, что в открытой программе Testdisk есть возможность переписать mbr на свой, который позволяет выбирать раздел. Правда, там по умолчанию идёт загрузка с первого, а если не вышло — тогда отображается меню выбора, но это правится патчем пары байт.
Из статьи не понял смысла, зачем понадобился фокус с перемещением записей о разделах и форматированием очередного первого раздела. Не проще ли (раз уж всё равно залезли в Linux ради fdisk) в Линуксе же и отформатировать все три раздела командой mkfs.vfat?
Проще, Вы правы! Зато так была обнаружена особенность работы Windows с разделами флешек
P.S. Я тут не стал расписывать, как на такую флешку ставить операционки, но без подмены записей в partitions там тоже не обошлось, чтобы инсталляторы видели нужный раздел
Хотел как-то сделать флешку с двумя разделами и второй раздел выделить под Linux Live USB.
При том было требование — первый диск должен быть пустым (Windows вправе переформатировать диск)
Тогда я так и не смог сделать задуманное, видать терпения не хватило, забил и остановился на slax
Надеюсь когда нибудь процесс таких вот манипуляций с флешками упростится и придет в массы.
Упростить можно легко! Например, дробим fdisk`ом (нужен линь), затем переходим в Windows и с помощью утилиты (которую я планирую написать), автоматизированно выбираем какой раздел должен быть виден операционке. Делаем с этим разделом что хотим (форматируем, устанавливаем ОСи, интсалляторы ОСей, неполное форматирование не убивает MBR), а затем этой же утилитой переключаемся на другой. В конце просто отображаем список разделов и помечаем все той же тулзой активные. Собственно заливка кода загрузчика тоже на совести утилиты.
Но если уж совсем упростить, то можно и дробильную часть засунуть в утилитку, тогда удастся отказаться от Linux`а.
Вопрос в другом — какой части аудитории это интересно?
Пользуюсь случаем хочу спросить, а на USB 3.0 флешки этот метод подойдет?
У меня есть предположение, что скорость их работы будет низка (usb2.0) при загрузке с них…
Пока способ работы MBR неизменен, а он не менялся лет 100, этот способ работает и с флешками и со съемными жесткими дисками и даже с дисками, подключенными по SATA =)
Насчет скорости работы — а почему бы тогда скорости не опуститься до уровня USB 1.0? USB — интерфейс программно-аппаратный. В 3.0 заложены как железные решения увеличения пропускной способности, так и скорее всего разработан новый стек протоколов работы с ним. Я в этом направлении не копал, но думаю тут возникнет множество факторов, влияющих на скорость загрузки с флешки
Флешки возможности-то второго USB не используют на полную из-за низкой скорости чтения-записи. Удобнее использовать внешний винт, тут и объёмы другие.
Написанное, конечно впечатляет. У меня у самого была похожая ситуация, когда с одной флэшки надо было разные ОС ставить, вернее сначала ОС поставить а потом на флэшку clonezilla записать, чтобы образ снять.
Но я нашел путь попроще: />YUMI – Multiboot USB Creator Она распаковывает известные образы на флэшку и делает multiboot, а если ей образ неизвестен пробует его поставить ка iso на флэшку.
По поводу Windows и разделов флэшки: Деталей не помню, но в свое время когда была проблема загрузки Windows с флэшки, ее решали заменой драйверов для флэш накопителей и в итоге Windows видел влэшку как обычный HDD и соответствено все разделы.
Я сам долго мучился с вопросами мультизагрузки с флешки, а потом с выходом GRUB2 появилось следующее решение:

Увы, опять слетело

Периодически нужно устанавливать систему, грузиться с live-CD.
С выходом GRUB2 эта задача упростилась несказано. Теперь есть возможность загрузить компьютер с iso-образов, которые лежат на флешке.

Для начала отформатируем нашу флешку:
#mkfs.vfat -n «rescue» /dev/sdb1

Смонтируем ее в систему:
#mount /dev/sdb1 /mnt/

Установим загрузчик GRUB2:
#grub-install --no-floppy --root-directory=/mnt /dev/sdb

Создадим файл конфигурации /mnt/boot/grub/grub.cfg:
menuentry «Kubuntu 10.04» {
loopback loop /boot/iso/kubuntu-10.04.1-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/kubuntu-10.04.1-desktop-i386.iso noeject noprompt — initrd (loop)/casper/initrd.lz
}

Если у нас несколько исошников — таким же образом прописываем и остальные.

Создаем каталог /mnt/boot/iso и копируем туда наш iso-образ.
Теперь отмонтируем флешку:
#umount /mnt/

И все. С нашей флешки можно загружаться.
Для добавления новых образов нужно только скопировать его в /mnt/boot/iso и дописать новый пункт в /boot/grub/grub.cfg на флешке.
Разве ISO образ при загрузке таким способом не копируется в память? Помню когда-то пытался делать такую флешку, но остановило предупреждение в статье что оно годно только для небольших ISO. Если у меня iso файл размером 7 гигов, а памяти 2, то как я понимаю ваш способ бесполезен?
Уже сам нашел ответ на свой вопрос :-) Да и вообще есть отличная статья на тему установки загрузчика и загрузки ISO образов.
> Если у нас несколько исошников —
> таким же образом прописываем и остальные.

А как прописать исошники mhdd.iso и windowsXP.iso?
Скажите, а заставить винду видеть несколько разделов на флешке совсем-совсем никак нельзя?
AFAIK всё она видит, просто не монтирует автоматом (букву не назначает)
удём в Управление компьютером -> Управление дисками
назначаем дополнительным разделам буквы вручную

а большинство контроллеров usb-flash умеют аппаратно эмулировать отдельные устройства: несколько флешек, cd/dvd, флопик, только чтение

на flashboot.ru/ большая коллекция сервисных утилит для подобных мероприятий
Нее, я имел ввиду разбить флешку на две ФЛЕШКИ а не два сменных ЖЕСТКИХ диска (как пишут на вышеуказанном сайте).
Если флешка — removable то нет. Но если флешка — HDD? то можно. А можно ли сделать из removable — HDD? :) тоже можно!
greenflash.su/publ/13-1-0-46
Есть тулуза (BootIt если правильно помню), которая позволяет снять Removable Media Bit. После этого Windows видит все разделы.
А, чем принципиально флешка от винта отличается?
Почему разбивая жесткий диск не возникает необходимости писать на асме?
Там у вас нет выбора с какого раздела грузиться или он реализуется сторонним софтом «написанном на асме».
Я перепрошил микроконтролер флешки с помощью какой то китайской проги, и теперь и винда и биос видит 2 флешки сразу. Они как отдельные устройства видятся.
У всех ли флешек можно перепрошивать контроллеры?
Названия проги не припомните?
Один раз у меня флешка заглючила, нашел программу для восстановления прошивки, и там были настройки позволяющие сделать 2 раздела. Названия не помню, тем более для разных флешек нужны разные проги, погуглите «восстановление флешек».
Вот нашел, для моей флешки transcend JF V10 8gb, программа называется AlcorMP

Вообще есть сайт flashboot.ru/iflash.html на нем можно найти программу для конкретной флешки.
Открою страшную тайну. Для этого есть grub4dos и grub2 ;)
UFO just landed and posted this here
Спасибо, поправил, стало действительно намного симпатичнее!
Ещё бы команды и код под тег соответсвующий упрятали…
Отлично! Напишите об этом статью! =)
> Чтобы после загрузки BIOS компьютер начинал грузиться с флешки, один из ее разделов должен быть активным (значение первого байта в записи partitions 0x01)

Это в принципе вариант по умолчанию. Можно обойтись без активных разделов вообще, если прописать в MBR grub или lilo — те могут грузить любой раздел.
Но ваш вариант весьма изящен, да и работа на асме внушает уважение.
Эххх… А почти 15 лет назад и я таким баловался… /*Смахнул скупую слезу и пошел ваять очередной проект на javascript и .net*/
Боюсь представить до чего мы докатимся еще через 15…
Будем попинывать других программистов, и думать что 15 лет тому назад и я таким баловался :)…
статья конечно занимательная с теоретической стороны, но как практическое решение я бы однозначно не стал применять. Вместо этого можно воспользоватся возможностями контролера на флешке(практически все современные умеют дробить флеш на разделы и они все будут видны в винде, а некоторые еще позволяют эмулировать USB-CDROM) или как уже выше написали воспользоватся GRUB
В общем ваши пожелания и предложения принимаются в комментариях.

Возможность запустить микроядро L4 Pistachio и несколько модулей к нему. GNU grub умеет и с флешки, но Ваше решение интересней. Т.е. хотелось бы поддержку Multiboot Specification в объёме, достаточном для загрузки Pistachio.

Наверное это уже наглость с моей стороны, но хочется также версию загрузчика для архитектуры ARM.

Кстати, первый раз вижу человека, который написал загрузчик для «чужих» операционных систем. Моё почтение.

С момента публикации статьи я из беззаботного студента успел превратится в запаренную лошадь, бегающую по 1000 и 1 работе в поисках счастья =) Если вдруг конечно у меня появится свободное время, то я капну в сторону этой вашей таинственной Pistachio. Хотя если стараться приближаться к поддержке сразу всех ОС и архитектур, то в конце концов можно нечаянно породить еще одного монстрика в духе GRUB
За теоретическую (и асм-практическую) часть спасибо, интересно.
Но вот огород городить ради мультибута с флешки смысла не было. То же самое можно сделать, не разбивая её на разделы. Вручную или с помощью готового софта. Вот, например, WinSetupFromUSB делает это с помощью grub. У меня на флешке с её помощью разместились BartPE, Ubuntu 10.04 LiveCD, Windows XP и Windows 7. И добавил бы ещё кое-что, но место закончилось.
Правда,
Sign up to leave a comment.

Articles