Операционная система Xmtwolime

завершено на 100%
Материал из Викиучебника — открытых книг для открытого мира


Введение[1][править]

Xmtwolime — это операционная система, которая уважает вашу свободу. Работает на виртуальной машине iiixmish2 и не выполняет операций над файлами.

Требования[править]

Вы должны иметь:

  • Java Runtime Environment и Java Development Kit (>= 8; OpenJDK подойдёт)
  • iiixmish2
  • makexm2c-tools
  • компилятор Си
  • GNU bash
  • зависимости вышеперечисленных пакетов

Сборка…[править]

Ниже показаны инструкции для GNU+Linux. Для других ОС, действия могут отличаться.

…iiixmish2 и makexm2c-tools[править]

$ cd iiixmish2/
$ bash build.sh
$ cd ../makexm2c-tools
$ bash build.sh

…системы[править]

$ cd xmtwolime/
$ bash build.sh </путь/к/makexm2c-tools> <устройство> # «ls etc» для получения списка доступных «устройств»

Загрузка[править]

Запустите iiixmish2:

$ cd iiixmish2/
$ java downadow.iiixmish2.main.Iiixmish2 <путь к каталогу xmtwolime>/image --no-communication

Если ничего не нажимать, должна пойти нормальная загрузка системы. Если нажать клавишу «f», то загрузка пойдёт в FastBoot, где, при условии разблокированного состояния, можно прошивать файлы, используя xtl-fastboot-tool (в таком случае, отпустите параметр --no-communication при запуске машины). Если же нажать «r», то загрузится «рекавери».

Работа с Xmtwolime[править]

Войдите в систему как «обычный пользователь», оставив поле ввода пустым.

sed 8700000 STRока запишет строку «STRока», начиная с ячейки памяти 8700000. bed 9000200 0001024 (набирать точно так, как показано) положит число 1024 в ячейку 9000200. Команда tnp изменяет знак яч. памяти. str 8700003 покажет содержимое памяти, начиная с яч. 8700003. vwb показывает значение ячейки памяти (формат как у txt). gam запустит игру. txt 9000000 начнёт записывать пользовательский ввод в память, начиная с ячейки 9000000. thm выведет информацию о цветах. thm 1 0 изменит цвет фона на белый, а цвет текста — на чёрный. Программа who печатает идентификатор пользователя (UID). Есть и другие программы.

Архитектура[2][править]

Сперва, выполняется код программы-загрузчика bootrom. По умолчанию, он просто переходит к коду xloader, но, как правило, bootrom также включает программу прошивки (edl или brom)[3].

Раздел xloader содержит ещё один загрузчик, который:

  • выполняет переход к началу кода fastboot, либо
  • переходит к fastboot RESCUE_MODE, либо
  • загружается в recovery

Следующий раздел, fastboot, хранит программу перехода к коду ядра операционной системы (<boot_start>), а также содержит программу RESCUE_MODE, которую можно использовать для прошивки нового recovery, system и т. д. (bootrom прошивать там нельзя).

recovery содержит программу восстановления (в частности, имеется возможность стереть пользовательские данные). В неё можно попасть, нажав «r» при загрузке.

Раздел info содержит информацию о «pkey» (это код, на основе которого генерируется код разблокировки загрузчика), ключ разблокировки fastboot RESCUE_MODE (используется не всегда!), состояние загрузчика (1 — разблокирован, 0 — разблокирован). Попробуйте перезаписать его.

boot содержит ядро операционной системы, а system — остальные её данные (например, анимация загрузки и приложения).

userdata может содержать данные программ, хранящих значения в памяти, и, конечно же, данные «обычного пользователя» (начинаются с ячейки 8700000).

Xmtwolime не знает слова «файл», не пугайтесь данной особенности. Память можно разделить на вышеупомянутые разделы.

Написание программного обеспечения[править]

Пример программы на Makexm2c
;; эта программа выводит свои аргументы
ech:
	mov %R_FA_0%, %ARGS_ST%
	mov %R_FA_1%, %OUT_ST%
	
	mov %R_FA_2%, %OUT_ST%
	mov2 %R_FA_3%, <ech_loop>
	
	ech_loop:
		vld %R_FA_0%, %R_FA_4%
		vsv %R_FA_4%, %R_FA_1%
		
		inc %R_FA_0%
		inc %R_FA_1%
		
		if %R_FA_0% < %R_FA_2%, %R_FA_3%
	
	updd
	%__END_THE_APP__%

Makexm2c — это язык ассемблера для iiixmish2. Xmtwolime-программы написаны на нём. См. следующие учебники: Makexm2c, Makexm2c и Xmtwolime.

Примечания[править]