В предыдущей главе мы уже реализовали файловую систему и можем позволить операционной системе загрузить образ диска. Теперь нам нужно только использовать инструмент для упаковки скомпилированных пользовательских программ в образ, и мы сможем его использовать.
Установите инструмент rcore-fs-fuse
с помощью команды cargo:
cargo install rcore-fs-fuse --git https://github.com/rcore-os/rcore-fs
Этот инструмент может упаковать каталог в образ диска формата SimpleFileSystem. Для этого нам нужно поместить скомпилированный файл ELF отдельно в экспортируемый каталог, который называется user/build/disk
.
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 )