Build images in directory per arch, remove bochs

This commit is contained in:
Jeremy Soller 2022-11-10 12:06:24 -07:00
parent f6d58d5b68
commit 9232e4282a
No known key found for this signature in database
GPG key ID: 87F211AF2BE4C2FE
11 changed files with 76 additions and 134 deletions

View file

@ -4,14 +4,14 @@ include mk/config.mk
# Dependencies
include mk/depends.mk
all: build/harddrive.img
all: $(BUILD)/harddrive.img
live: build/livedisk.iso
live: $(BUILD)/livedisk.iso
rebuild:
-$(FUMOUNT) build/filesystem/ || true
-$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true
rm -rf build
rm -rf $(BUILD)
$(MAKE) all
clean:
@ -20,9 +20,9 @@ clean:
cargo clean --manifest-path installer/Cargo.toml
cargo clean --manifest-path redoxfs/Cargo.toml
cargo clean --manifest-path relibc/Cargo.toml
-$(FUMOUNT) build/filesystem/ || true
-$(FUMOUNT) $(BUILD)/filesystem/ || true
-$(FUMOUNT) /tmp/redox_installer/ || true
rm -rf build
rm -rf $(BUILD)
distclean:
$(MAKE) clean
@ -33,9 +33,9 @@ pull:
git submodule sync --recursive
git submodule update --recursive --init
fetch: build/fetch.tag
fetch: $(BUILD)/fetch.tag
repo: build/repo.tag
repo: $(BUILD)/repo.tag
# Cross compiler recipes
include mk/prefix.mk
@ -48,7 +48,6 @@ include mk/disk.mk
# Emulation recipes
include mk/qemu.mk
include mk/bochs.mk
include mk/virtualbox.mk
# CI
@ -70,4 +69,4 @@ FORCE:
# Wireshark
wireshark: FORCE
wireshark build/network.pcap
wireshark $(BUILD)/network.pcap

View file

@ -1,28 +0,0 @@
megs: 1024
boot: disk
ata0-master: type=disk, path="build/harddrive.img", mode=flat
#com1: enabled=1, mode=file, dev=build/serial.log
cpu: model=p2_klamath
#e1000: enabled=1, mac=52:54:00:12:34:56 ethmod=vnet
# enable "cirrus" SVGA. Note that neither this nor VBE works perfectly
#vga: extension=cirrus
#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest-cirrus
#vga: extension=vbe
magic_break: enabled=1
#uncomment to choose either display library to use
#display_library: sdl2
display_library: x, options="gui_debug"
log: -
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
debugger_log: -

View file

@ -1,28 +0,0 @@
megs: 1024
boot: disk
ata0-master: type=disk, path="build/harddrive.img", mode=flat
#com1: enabled=1, mode=file, dev=build/serial.log
#cpu: model=corei7_haswell_4770
#e1000: enabled=1, mac=52:54:00:12:34:56 ethmod=vnet
# enable "cirrus" SVGA. Note that neither this nor VBE works perfectly
#vga: extension=cirrus
#vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest-cirrus
#vga: extension=vbe
magic_break: enabled=1
#uncomment to choose either display library to use
#display_library: sdl2
display_library: x, options="gui_debug"
log: -
debug: action=ignore
info: action=report
error: action=report
panic: action=ask
debugger_log: -

@ -1 +1 @@
Subproject commit f0c7eeda727b8fa412e5ff24a57f860453d224aa
Subproject commit d7ce4d4d65b505a1c8428434ade5f49a143d59b2

View file

@ -1,2 +0,0 @@
bochs: build/harddrive.img
bochs -f bochs.$(ARCH)

View file

@ -1,6 +1,6 @@
IMG_TAG?=$(shell git describe --tags)
IMG_SEPARATOR?=_
IMG_DIR?=build/img
IMG_DIR?=$(BUILD)/img
# CI image target - build desktop, server and demo images
# To leave out the build tag, set both IMG_TAG and IMG_SEPARATOR to null
@ -12,13 +12,13 @@ ci-img: FORCE
# The name of the target must match the name of the filesystem config file
desktop server demo: FORCE
rm -f "build/harddrive.img" "build/livedisk.iso"
rm -f "$(BUILD)/harddrive.img" "$(BUILD)/livedisk.iso"
$(MAKE) REPO_BINARY=1 \
FILESYSTEM_CONFIG=config/$(ARCH)/$@.toml \
build/harddrive.img \
build/livedisk.iso
cp "build/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img"
cp "build/livedisk.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso"
$(BUILD)/harddrive.img \
$(BUILD)/livedisk.iso
cp "$(BUILD)/harddrive.img" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_harddrive.img"
cp "$(BUILD)/livedisk.iso" "$(IMG_DIR)/redox_$(@)$(IMG_SEPARATOR)$(IMG_TAG)_livedisk.iso"
# CI packaging target
ci-pkg: prefix FORCE
@ -36,9 +36,9 @@ ci-toolchain: FORCE
"prefix/$(TARGET)/gcc-install.tar.gz" \
"prefix/$(TARGET)/relibc-install.tar.gz" \
"prefix/$(TARGET)/rust-install.tar.gz"
rm -rf "build/toolchain/$(TARGET)"
mkdir -p "build/toolchain/$(TARGET)"
cp "prefix/$(TARGET)/gcc-install.tar.gz" "build/toolchain/$(TARGET)/gcc-install.tar.gz"
cp "prefix/$(TARGET)/relibc-install.tar.gz" "build/toolchain/$(TARGET)/relibc-install.tar.gz"
cp "prefix/$(TARGET)/rust-install.tar.gz" "build/toolchain/$(TARGET)/rust-install.tar.gz"
cd "build/toolchain/$(TARGET)" && sha256sum -b * > SHA256SUM
rm -rf "$(BUILD)/toolchain"
mkdir -p "$(BUILD)/toolchain"
cp "prefix/$(TARGET)/gcc-install.tar.gz" "$(BUILD)/toolchain/gcc-install.tar.gz"
cp "prefix/$(TARGET)/relibc-install.tar.gz" "$(BUILD)/toolchain/relibc-install.tar.gz"
cp "prefix/$(TARGET)/rust-install.tar.gz" "$(BUILD)/toolchain/rust-install.tar.gz"
cd "$(BUILD)/toolchain" && sha256sum -b * > SHA256SUM

View file

@ -51,10 +51,11 @@ export XARGO_RUST_SRC=$(ROOT)/rust/src
## Userspace variables
export TARGET=$(ARCH)-unknown-redox
BUILD=build/$(ARCH)
INSTALLER=installer/target/release/redox_installer
ifeq ($(REPO_BINARY),0)
INSTALLER+=--cookbook=cookbook
REPO_TAG=build/repo.tag
REPO_TAG=$(BUILD)/repo.tag
endif
## Cross compiler variables

View file

@ -1,53 +1,53 @@
build/harddrive.img: $(REPO_TAG)
mkdir -p build
$(BUILD)/harddrive.img: $(REPO_TAG)
mkdir -p $(BUILD)
rm -rf $@ $@.partial
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
$(INSTALLER) -c $(FILESYSTEM_CONFIG) $@.partial
mv $@.partial $@
build/livedisk.iso: $(REPO_TAG)
mkdir -p build
$(BUILD)/livedisk.iso: $(REPO_TAG)
mkdir -p $(BUILD)
rm -rf $@ $@.partial
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
$(INSTALLER) -c $(FILESYSTEM_CONFIG) --live $@.partial
mv $@.partial $@
build/filesystem.img: $(REPO_TAG)
mkdir -p build
$(BUILD)/filesystem.img: $(REPO_TAG)
mkdir -p $(BUILD)
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release
-$(FUMOUNT) build/filesystem/ || true
rm -rf $@ $@.partial build/filesystem/
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $@ $@.partial $(BUILD)/filesystem/
-$(FUMOUNT) /tmp/redox_installer || true
fallocate --posix --length "$(FILESYSTEM_SIZE)MiB" $@.partial
redoxfs/target/release/redoxfs-mkfs $(REDOXFS_MKFS_FLAGS) $@.partial
mkdir -p build/filesystem/
redoxfs/target/release/redoxfs $@.partial build/filesystem/
mkdir -p $(BUILD)/filesystem/
redoxfs/target/release/redoxfs $@.partial $(BUILD)/filesystem/
sleep 1
pgrep redoxfs
$(INSTALLER) -c $(FILESYSTEM_CONFIG) build/filesystem/
$(INSTALLER) -c $(FILESYSTEM_CONFIG) $(BUILD)/filesystem/
sync
-$(FUMOUNT) build/filesystem/ || true
rm -rf build/filesystem/
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $(BUILD)/filesystem/
mv $@.partial $@
mount: FORCE
mkdir -p build/filesystem/
mkdir -p $(BUILD)/filesystem/
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs
redoxfs/target/release/redoxfs build/harddrive.img build/filesystem/
redoxfs/target/release/redoxfs $(BUILD)/harddrive.img $(BUILD)/filesystem/
sleep 2
pgrep redoxfs
mount_extra: FORCE
mkdir -p build/filesystem/
mkdir -p $(BUILD)/filesystem/
$(HOST_CARGO) build --manifest-path redoxfs/Cargo.toml --release --bin redoxfs
redoxfs/target/release/redoxfs build/extra.img build/filesystem/
redoxfs/target/release/redoxfs $(BUILD)/extra.img $(BUILD)/filesystem/
sleep 2
pgrep redoxfs
unmount: FORCE
sync
-$(FUMOUNT) build/filesystem/ || true
rm -rf build/filesystem/
-$(FUMOUNT) $(BUILD)/filesystem/ || true
rm -rf $(BUILD)/filesystem/
-$(FUMOUNT) /tmp/redox_installer || true

View file

@ -35,16 +35,16 @@ $(error Unsupported ARCH for QEMU "$(ARCH)"))
endif
ifeq ($(efi),yes)
FIRMWARE=build/firmware.rom
QEMUFLAGS+=-bios build/firmware.rom
FIRMWARE=$(BUILD)/firmware.rom
QEMUFLAGS+=-bios $(BUILD)/firmware.rom
else
FIRMWARE=
endif
ifeq ($(live),yes)
DISK=build/livedisk.iso
DISK=$(BUILD)/livedisk.iso
else
DISK=build/harddrive.img
DISK=$(BUILD)/harddrive.img
endif
ifeq ($(serial),no)
@ -76,7 +76,7 @@ else
QEMUFLAGS+=-netdev user,id=net0,hostfwd=tcp::8080-:8080,hostfwd=tcp::8083-:8083,hostfwd=tcp::64126-:64126 -device e1000,netdev=net0,id=nic0
else
QEMUFLAGS+=-netdev user,id=net0 -device e1000,netdev=net0 \
-object filter-dump,id=f1,netdev=net0,file=build/network.pcap
-object filter-dump,id=f1,netdev=net0,file=$(BUILD)/network.pcap
endif
endif
endif
@ -102,56 +102,56 @@ ifeq ($(UNAME),Linux)
endif
ifeq ($(UNAME),Linux)
build/extra.img:
$(BUILD)/extra.img:
fallocate --posix --length 1G $@
else
build/extra.img:
$(BUILD)/extra.img:
truncate -s 1g $@
endif
build/firmware.rom:
$(BUILD)/firmware.rom:
cp $(QEMU_EFI) $@
qemu: $(DISK) $(FIRMWARE) build/extra.img
qemu: $(DISK) $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-hdc $(DISK)
echo -drive file=$(DISK),format=raw \
-drive file=build/extra.img,format=raw
-drive file=$(BUILD)/extra.img,format=raw
qemu_no_build: $(FIRMWARE) build/extra.img
qemu_no_build: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=$(DISK),format=raw \
-drive file=build/extra.img,format=raw
-drive file=$(BUILD)/extra.img,format=raw
qemu_cdrom: $(DISK) $(FIRMWARE) build/extra.img
qemu_cdrom: $(DISK) $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-boot d -cdrom $(DISK) \
-drive file=build/extra.img,format=raw
-drive file=$(BUILD)/extra.img,format=raw
qemu_cdrom_no_build: $(FIRMWARE) build/extra.img
qemu_cdrom_no_build: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-boot d -cdrom $(DISK) \
-drive file=build/extra.img,format=raw
-drive file=$(BUILD)/extra.img,format=raw
qemu_nvme: $(DISK) $(FIRMWARE) build/extra.img
qemu_nvme: $(DISK) $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
-drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
-drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
qemu_nvme_no_build: $(FIRMWARE) build/extra.img
qemu_nvme_no_build: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=$(DISK),format=raw,if=none,id=drv0 -device nvme,drive=drv0,serial=NVME_SERIAL \
-drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
-drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
qemu_usb: $(DISK) $(FIRMWARE)
$(QEMU) $(QEMUFLAGS) \
-drive if=none,id=usbstick,format=raw,file=$(DISK) \
-device usb-storage,drive=usbstick
qemu_extra: $(FIRMWARE) build/extra.img
qemu_extra: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=build/extra.img,format=raw
-drive file=$(BUILD)/extra.img,format=raw
qemu_nvme_extra: $(FIRMWARE) build/extra.img
qemu_nvme_extra: $(FIRMWARE) $(BUILD)/extra.img
$(QEMU) $(QEMUFLAGS) \
-drive file=build/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA
-drive file=$(BUILD)/extra.img,format=raw,if=none,id=drv1 -device nvme,drive=drv1,serial=NVME_EXTRA

View file

@ -1,18 +1,18 @@
build/fetch.tag: cookbook installer prefix $(FILESYSTEM_CONFIG)
$(BUILD)/fetch.tag: cookbook installer prefix $(FILESYSTEM_CONFIG)
$(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release
$(HOST_CARGO) build --manifest-path installer/Cargo.toml --release
PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \
cd cookbook && \
./fetch.sh "$${PACKAGES}"
mkdir -p build
mkdir -p $(BUILD)
touch $@
build/repo.tag: build/fetch.tag
$(BUILD)/repo.tag: $(BUILD)/fetch.tag
$(HOST_CARGO) build --manifest-path cookbook/Cargo.toml --release
$(HOST_CARGO) build --manifest-path installer/Cargo.toml --release
export PATH="$(PREFIX_PATH):$$PATH" && \
PACKAGES="$$($(INSTALLER) --list-packages -c $(FILESYSTEM_CONFIG))" && \
cd cookbook && \
./repo.sh "$${PACKAGES}"
mkdir -p build
mkdir -p $(BUILD)
touch $@

View file

@ -1,4 +1,4 @@
virtualbox: build/harddrive.img
virtualbox: $(BUILD)/harddrive.img
echo "Delete VM"
-$(VBM) unregistervm Redox --delete; \
if [ $$? -ne 0 ]; \
@ -22,10 +22,10 @@ virtualbox: build/harddrive.img
$(VBM) modifyvm Redox --nictype1 82540EM; \
$(VBM) modifyvm Redox --cableconnected1 on; \
$(VBM) modifyvm Redox --nictrace1 on; \
$(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/build/network.pcap"; \
$(VBM) modifyvm Redox --nictracefile1 "$(ROOT)/$(BUILD)/network.pcap"; \
fi
$(VBM) modifyvm Redox --uart1 0x3F8 4
$(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/build/serial.log"
$(VBM) modifyvm Redox --uartmode1 file "$(ROOT)/$(BUILD)/serial.log"
$(VBM) modifyvm Redox --usb off # on
$(VBM) modifyvm Redox --keyboard ps2
$(VBM) modifyvm Redox --mouse ps2
@ -33,9 +33,9 @@ virtualbox: build/harddrive.img
$(VBM) modifyvm Redox --audiocontroller hda
$(VBM) modifyvm Redox --nestedpaging on
echo "Create Disk"
$(VBM) convertfromraw $< build/harddrive.vdi
$(VBM) convertfromraw $< $(BUILD)/harddrive.vdi
echo "Attach Disk"
$(VBM) storagectl Redox --name ATA --add sata --controller IntelAHCI --bootable on --portcount 1
$(VBM) storageattach Redox --storagectl ATA --port 0 --device 0 --type hdd --medium build/harddrive.vdi
$(VBM) storageattach Redox --storagectl ATA --port 0 --device 0 --type hdd --medium $(BUILD)/harddrive.vdi
echo "Run VM"
$(VBM) startvm Redox