Build images in directory per arch, remove bochs
This commit is contained in:
parent
f6d58d5b68
commit
9232e4282a
19
Makefile
19
Makefile
|
@ -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
|
||||
|
|
28
bochs.i686
28
bochs.i686
|
@ -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: -
|
28
bochs.x86_64
28
bochs.x86_64
|
@ -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: -
|
2
cookbook
2
cookbook
|
@ -1 +1 @@
|
|||
Subproject commit f0c7eeda727b8fa412e5ff24a57f860453d224aa
|
||||
Subproject commit d7ce4d4d65b505a1c8428434ade5f49a143d59b2
|
|
@ -1,2 +0,0 @@
|
|||
bochs: build/harddrive.img
|
||||
bochs -f bochs.$(ARCH)
|
24
mk/ci.mk
24
mk/ci.mk
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
38
mk/disk.mk
38
mk/disk.mk
|
@ -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
|
||||
|
|
48
mk/qemu.mk
48
mk/qemu.mk
|
@ -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
|
||||
|
|
|
@ -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 $@
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue