1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rcore-os-rCore-Tutorial

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
part-2.md 2.2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 21:14 7f8a4fd

Упаковка в образ диска

В предыдущей главе мы уже реализовали файловую систему и можем позволить операционной системе загрузить образ диска. Теперь нам нужно только использовать инструмент для упаковки скомпилированных пользовательских программ в образ, и мы сможем его использовать.

Установка инструмента

Установите инструмент rcore-fs-fuse с помощью команды cargo:

cargo install rcore-fs-fuse --git https://github.com/rcore-os/rcore-fs

Упаковка

Этот инструмент может упаковать каталог в образ диска формата SimpleFileSystem. Для этого нам нужно поместить скомпилированный файл ELF отдельно в экспортируемый каталог, который называется user/build/disk.

Файл user/Makefile

build: dependency
	# Компиляция
	@cargo build
	@echo Targets: $(patsubst $(SRC_DIR)/%.rs, %, $(SRC_FILES))
	# Удаление всех существующих файлов
	@rm -rf $(OUT_DIR)
	@mkdir -p $(OUT_DIR)
	# Копирование скомпилированного файла ELF в целевой каталог
	@cp $(BIN_FILES) $(OUT_DIR)
	# Упаковка с использованием инструмента rcore-fs-fuse
	@rcore-fs-fuse --fs sfs $(IMG_FILE) $(OUT_DIR) zip
	# Преобразование формата файла образа в формат, используемый QEMU
	@qemu-img convert -f raw $(IMG_FILE) -O qcow2 $(QCOW_FILE)
	# Увеличение размера файла образа (не фактического размера), чтобы можно было записать больше данных
	@qemu-img resize $(QCOW_FILE) +1G

Укажите новый созданный файл QCOW_FILE в файле os/Makefile, чтобы операционная система могла видеть упакованный каталог.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/rcore-os-rCore-Tutorial.git
git@api.gitlife.ru:oschina-mirror/rcore-os-rCore-Tutorial.git
oschina-mirror
rcore-os-rCore-Tutorial
rcore-os-rCore-Tutorial
master