На GitHub выложили тетрис, целиком помещающийся в загрузочном секторе
Новости Отредактировано
17К открытий17К показов
TetrOS — клон знаменитого Tetris, написанный на ассемблере. Он целиком вмещается в 512 байт загрузочного сектора (ему требуется всего 446 байт места, это как раз максимальный размер загрузчика в MBR).
MBR — раздел, содержащий код и данные, необходимые для последующей загрузки операционной системы и расположенные в первых физических секторах. Самые первые 446 байт диска отдаются под код загрузчика. Именно в это место и записывается TetrOS.
Естественно, из-за таких свойств он загружается перед любой операционной системой — никакой ОС ему не требуется, он работает сам. Да-да, вы не ослышались, TetrOS — сам себе загрузчик.
Вот так это выглядит на экране:
А исходник на загрузочном секторе выглядит так:
И да, это весь исходник. Вы же помните, что он весит всего 446 байт?
Можно запустить эту «чудо-операционную систему» под qemu или даже по-настоящему установить на загрузочный раздел диска или флешки.
Запуск
qemu
Просто установите qemu:
sudo apt-get install qemu
и запустите:
make run
Загрузка на флешку
Скопируйте образ на флешку. Допустим, если флешка подмонтирована как /dev/sde
, вам понадобится выполнить следующую команду, чтобы записать на ее загрузочный сектор TetrOS:
sudo dd if=tetros.img of=/dev/sde
Описание игры
Разработчик сумел всего в 512 байт памяти впихнуть не самый скучный дизайн. У каждого кирпичика в игре есть свой цвет, управление производится кнопками, в случае поражения игра завершается, кирпичики генерируются случайным образом… BolgenOS и рядом не стояла!
К несчастью, из-за размера от некоторых фич пришлось отказаться. В игре нет подсчета очков, рестарта игры без перезагрузки и отображения того, каким будет следующий кирпичик.
Игра написана на nasm, и ее можно собрать самостоятельно. Устанавливаем nasm:
sudo apt-get install nasm
Собираем с помощью команды make
. На выходе вы получите файл tetros.img.
Аналоги
Это не единственный проект, умещающий какую-либо классическую игру в один загрузочный сектор. Вот, например:
17К открытий17К показов