Skip to content
Find file
624 lines (521 sloc) 19.6 KB
#Modify for different target support
ARCH?=i386
#ARCH?=x86_64
BUILD=build/$(ARCH)-unknown-redox/debug
QEMU?=qemu-system-$(ARCH)
CARGO=CARGO_TARGET_DIR=build RUSTC="./rustc-$(ARCH).sh" cargo rustc
CARGOFLAGS=--verbose --target=$(ARCH)-unknown-redox.json -- -L $(BUILD) \
-C no-prepopulate-passes -C no-stack-check -C opt-level=2 \
-Z no-landing-pads \
-A dead_code
RUSTC=RUST_BACKTRACE=1 rustc
RUSTDOC=rustdoc --target=$(ARCH)-unknown-redox.json -L $(BUILD) \
--no-defaults --passes collapse-docs --passes unindent-comments
RUSTCFLAGS=--target=$(ARCH)-unknown-redox.json -L $(BUILD) \
-C no-prepopulate-passes -C no-stack-check -C opt-level=2 \
-Z no-landing-pads \
-A dead_code
AS=nasm
AWK=awk
BASENAME=basename
CUT=cut
DATE=date
FIND=find
LD=ld
LDARGS=-m elf_$(ARCH)
MAKE=make
MKDIR=mkdir
OBJDUMP=objdump
RM=rm
SED=sed
SORT=sort
VB=virtualbox
VB_AUDIO="pulse"
VBM=VBoxManage
VBM_CLEANUP=\
if [ $$? -ne 0 ]; \
then \
if [ -d "$$HOME/VirtualBox VMs/Redox" ]; \
then \
echo "Redox directory exists, deleting..."; \
$(RM) -rf "$$HOME/VirtualBox VMs/Redox"; \
fi \
fi
ifeq ($(OS),Windows_NT)
SHELL=windows\sh
LD=windows/$(ARCH)-elf-ld
CARGOFLAGS += -C ar=windows/$(ARCH)-elf-ar -C linker=windows/$(ARCH)-elf-gcc -C link-args="-v -fno-use-linker-plugin"
RUSTCFLAGS += -C ar=windows/$(ARCH)-elf-ar -C linker=windows/$(ARCH)-elf-gcc -C link-args="-v -fno-use-linker-plugin"
AS=windows/nasm
AWK=windows/awk
BASENAME=windows/basename
CUT=windows/cut
DATE=windows/date
FIND=windows/find
MAKE=windows/make
MKDIR=windows/mkdir
OBJDUMP=windows/i386-elf-objdump
RM=windows/rm
SED=windows/sed
SORT=windows/sort
VB="C:/Program Files/Oracle/VirtualBox/VirtualBox"
VB_AUDIO="dsound"
VBM="C:/Program Files/Oracle/VirtualBox/VBoxManage"
VBM_CLEANUP=\
if [ $$? -ne 0 ]; \
then \
if [ -d "$$USERPROFILE/VirtualBox VMs/Redox" ]; \
then \
echo "Redox directory exists, deleting..."; \
$(RM) -rf "$$USERPROFILE/VirtualBox VMs/Redox"; \
fi \
fi
else
UNAME := $(shell uname)
ifeq ($(UNAME),Darwin)
LD=$(ARCH)-elf-ld
OBJDUMP=$(ARCH)-elf-objdump
CARGOFLAGS += -C ar=$(ARCH)-elf-ar -C linker=$(ARCH)-elf-gcc
RUSTCFLAGS += -C ar=$(ARCH)-elf-ar -C linker=$(ARCH)-elf-gcc
VB="/Applications/VirtualBox.app/Contents/MacOS/VirtualBox"
VB_AUDIO="coreaudio"
VBM="/Applications/VirtualBox.app/Contents/MacOS/VBoxManage"
endif
endif
.PHONY: help all doc apps bins clean \
bochs \
qemu qemu_bare qemu_tap \
virtualbox virtualbox_tap \
arping ping wireshark
help:
@echo ".########..########.########...#######..##.....##"
@echo ".##.....##.##.......##.....##.##.....##..##...##."
@echo ".##.....##.##.......##.....##.##.....##...##.##.."
@echo ".########..######...##.....##.##.....##....###..."
@echo ".##...##...##.......##.....##.##.....##...##.##.."
@echo ".##....##..##.......##.....##.##.....##..##...##."
@echo ".##.....##.########.########...#######..##.....##"
@echo
@echo "-------- Redox: A Rust Operating System ---------"
@echo
@echo "Commands:"
@echo
@echo " make all"
@echo " Build raw image of filesystem used by Redox."
@echo " It create $(BUILD)/harddrive.bin which can be used to build"
@echo " images for Your virtual machine."
@echo
@echo " make virtualbox"
@echo " Build Redox and run it inside VirtualBox machine."
@echo
@echo " make qemu"
@echo " Build Redox and run it inside KVM machine."
@echo
@echo " make qemu kvm=no"
@echo " Build Redox and run it inside Qemu machine without KVM support."
@echo
@echo " make apps"
@echo " Build apps for Redox."
@echo
@echo " make clean"
@echo " Clean build directory."
@echo
@echo
@echo " .........................................................."
@echo " For more information check out 'github.com/redox-os/redox'"
@echo " or 'redox-os.org'"
all: $(BUILD)/harddrive.bin
filesystem/apps/sodium/main.bin: filesystem/apps/sodium/src/main.rs filesystem/apps/sodium/src/*.rs $(BUILD)/libstd.rlib $(BUILD)/liborbclient.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $< --cfg 'feature="orbital"'
filesystem/apps/example/main.bin: filesystem/apps/example/main.rs filesystem/apps/example/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
filesystem/apps/%/main.bin: filesystem/apps/%/main.rs filesystem/apps/%/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib $(BUILD)/liborbclient.rlib $(BUILD)/liborbtk.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
filesystem/apps/%/main.bin: crates/orbutils/src/%/main.rs crates/orbutils/src/%/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib $(BUILD)/liborbclient.rlib $(BUILD)/liborbtk.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
apps: filesystem/apps/calculator/main.bin \
filesystem/apps/editor/main.bin \
filesystem/apps/file_manager/main.bin \
filesystem/apps/orbtk/main.bin \
filesystem/apps/player/main.bin \
filesystem/apps/sodium/main.bin \
filesystem/apps/terminal/main.bin \
filesystem/apps/viewer/main.bin
$(BUILD)/libextra.rlib: crates/extra/src/lib.rs crates/extra/src/*.rs $(BUILD)/libstd.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-name extra --crate-type lib -o $@ $<
filesystem/bin/%: crates/coreutils/src/bin/%.rs $(BUILD)/crt0.o $(BUILD)/libextra.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
coreutils: \
filesystem/bin/basename \
filesystem/bin/cat \
filesystem/bin/clear \
filesystem/bin/cp \
filesystem/bin/du \
filesystem/bin/echo \
filesystem/bin/false \
filesystem/bin/free \
filesystem/bin/head \
filesystem/bin/ls \
filesystem/bin/mkdir \
filesystem/bin/mv \
filesystem/bin/ps \
filesystem/bin/pwd \
filesystem/bin/realpath \
filesystem/bin/reset \
filesystem/bin/rm \
filesystem/bin/rmdir \
filesystem/bin/seq \
filesystem/bin/shutdown \
filesystem/bin/sleep \
filesystem/bin/tail \
filesystem/bin/touch \
filesystem/bin/true \
filesystem/bin/wc \
filesystem/bin/yes
#TODO: filesystem/bin/env filesystem/bin/test
$(BUILD)/libbinutils.rlib: crates/binutils/src/lib.rs crates/binutils/src/*.rs $(BUILD)/libextra.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-name binutils --crate-type lib -o $@ $<
filesystem/bin/%: crates/binutils/src/bin/%.rs $(BUILD)/crt0.o $(BUILD)/libbinutils.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
binutils: \
filesystem/bin/hex \
filesystem/bin/hexdump \
filesystem/bin/strings
$(BUILD)/libtermion.rlib: crates/termion/src/lib.rs crates/termion/src/*.rs $(BUILD)/libstd.rlib
$(RUSTC) $(RUSTCFLAGS) --crate-name termion --crate-type lib -o $@ $< --cfg 'feature="nightly"'
filesystem/bin/%: crates/extrautils/src/bin/%.rs $(BUILD)/crt0.o $(BUILD)/libextra.rlib $(BUILD)/libtermion.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
extrautils: \
filesystem/bin/calc \
filesystem/bin/cksum \
filesystem/bin/cur \
filesystem/bin/grep \
filesystem/bin/less \
filesystem/bin/mtxt \
filesystem/bin/rem
filesystem/bin/%: crates/games/src/%/main.rs crates/games/src/%/*.rs $(BUILD)/crt0.o $(BUILD)/libextra.rlib $(BUILD)/libtermion.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
games: \
filesystem/bin/ice \
filesystem/bin/minesweeper \
filesystem/bin/rusthello \
filesystem/bin/snake
filesystem/bin/%: crates/%/main.rs crates/%/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
filesystem/bin/%: libc/bin/%
mkdir -p filesystem/bin
cp $< $@
$(BUILD)/ion-shell.bin: FORCE $(BUILD)/libstd.rlib
$(CARGO) --manifest-path crates/ion/Cargo.toml --bin ion-shell $(CARGOFLAGS)
filesystem/bin/ion: $(BUILD)/ion-shell.bin
mkdir -p filesystem/bin
cp $< $@
filesystem/bin/sh: $(BUILD)/ion-shell.bin
mkdir -p filesystem/bin
cp $< $@
filesystem/bin/launcher: crates/orbutils/src/launcher/main.rs crates/orbutils/src/launcher/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib $(BUILD)/liborbclient.rlib $(BUILD)/liborbtk.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
filesystem/bin/zfs: crates/zfs/src/main.rs crates/zfs/src/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib
mkdir -p filesystem/bin
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
bins: \
coreutils \
extrautils \
games \
filesystem/bin/ansi-test \
filesystem/bin/c-test \
filesystem/bin/dosbox \
filesystem/bin/ed \
filesystem/bin/example \
filesystem/bin/init \
filesystem/bin/ion \
filesystem/bin/launcher \
filesystem/bin/lua \
filesystem/bin/luac \
filesystem/bin/login \
filesystem/bin/minesweeper \
filesystem/bin/orbital \
filesystem/bin/std-test \
filesystem/bin/sdl-test \
filesystem/bin/sdl-ttf-test \
filesystem/bin/sh \
filesystem/bin/tar \
#TODO: binutils filesystem/bin/zfs
initfs/redoxfsd: crates/redoxfs/scheme/main.rs crates/redoxfs/scheme/*.rs $(BUILD)/crt0.o $(BUILD)/libstd.rlib $(BUILD)/libredoxfs.rlib
mkdir -p initfs/
$(RUSTC) $(RUSTCFLAGS) --crate-type bin -o $@ $<
initfs/build-arch:
mkdir -p initfs/
echo $(ARCH) > $@
initfs/build-branch:
mkdir -p initfs/
git rev-parse --abbrev-ref HEAD > $@
initfs/build-cargo:
mkdir -p initfs/
cargo -V > $@
initfs/build-date:
mkdir -p initfs/
date > $@
initfs/build-host:
mkdir -p initfs/
uname -a > $@
initfs/build-rustc:
mkdir -p initfs/
$(RUSTC) -V > $@
initfs/build-rev:
mkdir -p initfs/
git rev-parse HEAD > $@
build/initfs.gen: \
initfs/redoxfsd \
initfs/build-arch \
initfs/build-branch \
initfs/build-cargo \
initfs/build-date \
initfs/build-host \
initfs/build-rustc \
initfs/build-rev
echo 'use collections::BTreeMap;' > $@
echo 'pub fn gen() -> BTreeMap<&'"'"'static str, &'"'"'static [u8]> {' >> $@
echo ' let mut files: BTreeMap<&'"'"'static str, &'"'"'static [u8]> = BTreeMap::new();' >> $@
$(FIND) initfs -type f -o -type l | $(CUT) -d '/' -f2- | $(SORT) \
| $(AWK) '{printf(" files.insert(\"%s\", include_bytes!(\"../initfs/%s\"));\n", $$0, $$0)}' \
>> $@
echo ' files' >> $@
echo '}' >> $@
test: kernel/main.rs \
rust/src/libtest/lib.rs \
$(BUILD)/libcore.rlib \
$(BUILD)/liballoc.rlib \
$(BUILD)/libcollections.rlib \
$(BUILD)/libtest.rlib
$(RUSTC) $(RUSTCFLAGS) --test $<
clean:
$(RM) -rf build doc filesystem/bin/ initfs/bin/ filesystem/apps/*/*.bin filesystem/apps/*/*.list
FORCE:
doc/core: rust/src/libcore/lib.rs $(BUILD)/libcore.rlib
$(RUSTDOC) --cfg disable_float $<
doc/alloc_system: liballoc_system/lib.rs $(BUILD)/liballoc_system.rlib doc/core
$(RUSTDOC) $<
doc/alloc: rust/src/liballoc/lib.rs $(BUILD)/liballoc.rlib doc/alloc_system
$(RUSTDOC) $<
doc/rustc_unicode: rust/src/librustc_unicode/lib.rs $(BUILD)/librustc_unicode.rlib doc/core
$(RUSTDOC) $<
doc/collections: rust/src/libcollections/lib.rs $(BUILD)/libcollections.rlib doc/alloc doc/rustc_unicode
$(RUSTDOC) $<
doc/rand: rust/src/librand/lib.rs $(BUILD)/librand.rlib doc/collections
$(RUSTDOC) --cfg disable_float $<
doc/io: crates/io/lib.rs crates/io/*.rs $(BUILD)/libio.rlib doc/core
$(RUSTDOC) $<
doc/system: crates/system/lib.rs crates/system/*.rs crates/system/*/*.rs $(BUILD)/libsystem.rlib doc/core
$(RUSTDOC) $<
doc/redoxfs: crates/redoxfs/src/lib.rs crates/redoxfs/src/*.rs doc/system doc/alloc doc/collections
$(RUSTDOC) $<
doc/kernel: kernel/main.rs kernel/*.rs kernel/*/*.rs kernel/*/*/*.rs $(BUILD)/kernel.rlib doc/io doc/redoxfs
$(RUSTDOC) $<
doc/std: libstd/src/lib.rs libstd/src/*.rs libstd/src/*/*.rs libstd/src/*/*/*.rs $(BUILD)/libstd.rlib doc/rand doc/system
$(RUSTDOC) --cfg disable_float --crate-name=std $<
doc: doc/kernel doc/std
man: filesystem/man
filesystem/man:
mkdir man \
rm -rf filesystem/man |& true \
cd crates/docgen \
cargo build --release \
cd ../../ \
./crates/docgen/target/release/docgen \
mv man filesystem
$(BUILD)/libcore.rlib: rust/src/libcore/lib.rs
$(MKDIR) -p $(BUILD)
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/liballoc_system.rlib: liballoc_system/lib.rs $(BUILD)/libcore.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/liballoc.rlib: rust/src/liballoc/lib.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc_system.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/librustc_unicode.rlib: rust/src/librustc_unicode/lib.rs $(BUILD)/libcore.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libcollections.rlib: rust/src/libcollections/lib.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc.rlib $(BUILD)/librustc_unicode.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libgetopts.rlib: rust/src/libgetopts/lib.rs $(BUILD)/libserialize.rlib $(BUILD)/liblog.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/librand.rlib: rust/src/librand/lib.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc.rlib $(BUILD)/librustc_unicode.rlib $(BUILD)/libcollections.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/liblibc.rlib: rust/src/liblibc/src/lib.rs $(BUILD)/libcore.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/librealstd.rlib: rust/src/libstd/lib.rs $(BUILD)/libcore.rlib $(BUILD)/liblibc.rlib $(BUILD)/liballoc.rlib $(BUILD)/librustc_unicode.rlib $(BUILD)/libcollections.rlib $(BUILD)/librand.rlib
$(RUSTC) $(RUSTCFLAGS) --cfg unix --crate-type rlib -o $@ $<
$(BUILD)/libstd.rlib: libstd/src/lib.rs libstd/src/*.rs libstd/src/*/*.rs libstd/src/*/*/*.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc.rlib $(BUILD)/libcollections.rlib $(BUILD)/librand.rlib $(BUILD)/libsystem.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/liborbclient.rlib: crates/orbclient/src/lib.rs crates/orbclient/src/*.rs crates/orbclient/src/*/*.rs $(BUILD)/libstd.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/liborbtk.rlib: crates/orbtk/src/lib.rs crates/orbtk/src/*.rs $(BUILD)/libstd.rlib $(BUILD)/liborbclient.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
#Kernel stuff
$(BUILD)/libio.rlib: crates/io/lib.rs crates/io/*.rs $(BUILD)/libcore.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libsystem.rlib: crates/system/lib.rs crates/system/*.rs crates/system/*/*.rs $(BUILD)/libcore.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libredoxfs.rlib: crates/redoxfs/src/lib.rs crates/redoxfs/src/*.rs $(BUILD)/libsystem.rlib $(BUILD)/liballoc.rlib $(BUILD)/libcollections.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/kernel.rlib: kernel/main.rs kernel/*.rs kernel/*/*.rs kernel/*/*/*.rs $(BUILD)/libio.rlib build/initfs.gen
$(RUSTC) $(RUSTCFLAGS) -C lto -o $@ $<
$(BUILD)/kernel.bin: $(BUILD)/kernel.rlib kernel/kernel.ld
$(LD) $(LDARGS) -o $@ -T kernel/kernel.ld -z max-page-size=0x1000 $<
$(BUILD)/kernel.list: $(BUILD)/kernel.bin
$(OBJDUMP) -C -M intel -D $< > $@
$(BUILD)/kernel.asm: kernel/main.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc.rlib $(BUILD)/libcollections.rlib
$(RUSTC) $(RUSTCFLAGS) -C lto -o $@ --emit asm $<
$(BUILD)/kernel.ir: kernel/main.rs $(BUILD)/libcore.rlib $(BUILD)/liballoc.rlib $(BUILD)/libcollections.rlib
$(RUSTC) $(RUSTCFLAGS) -C lto -o $@ --emit llvm-ir $<
$(BUILD)/crt0.o: kernel/program-$(ARCH).asm
$(MKDIR) -p $(BUILD)
ifeq ($(ARCH),x86_64)
$(AS) -f elf64 -o $@ $<
else
$(AS) -f elf -o $@ $<
endif
#Rustc
$(BUILD)/liblog.rlib: rust/src/liblog/lib.rs $(BUILD)/libstd.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/librustc_%.rlib: rust/src/librustc_%/lib.rs $(BUILD)/libsyntax.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libserialize.rlib: rust/src/libserialize/lib.rs $(BUILD)/liblog.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libsyntax.rlib: rust/src/libsyntax/lib.rs $(BUILD)/libserialize.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
$(BUILD)/libtest.rlib: rust/src/libtest/lib.rs $(BUILD)/libstd.rlib $(BUILD)/libgetopts.rlib
$(RUSTC) $(RUSTCFLAGS) -o $@ $<
rustc: $(BUILD)/librustc_back.rlib \
$(BUILD)/librustc_bitflags.rlib \
$(BUILD)/librustc_borrowck.rlib \
$(BUILD)/librustc_data_structures.rlib \
$(BUILD)/librustc_driver.rlib \
$(BUILD)/librustc_front.rlib \
$(BUILD)/librustc_lint.rlib \
$(BUILD)/librustc_llvm.rlib \
$(BUILD)/librustc_metadata.rlib \
$(BUILD)/librustc_mir.rlib \
$(BUILD)/librustc_passes.rlib \
$(BUILD)/librustc_platform_intrinsics.rlib \
$(BUILD)/librustc_plugin.rlib \
$(BUILD)/librustc_privacy.rlib \
$(BUILD)/librustc_resolve.rlib \
$(BUILD)/librustc_trans.rlib \
$(BUILD)/librustc_typeck.rlib \
$(BUILD)/librustc_unicode.rlib
filesystem/%.list: filesystem/%
$(OBJDUMP) -C -M intel -D $< > $@
filesystem/apps/zfs/zfs.img:
dd if=/dev/zero of=$@ bs=64M count=1
sudo losetup /dev/loop0 $@
-sudo zpool create redox_zfs /dev/loop0
-sudo mkdir /redox_zfs/home/
-sudo mkdir /redox_zfs/home/test/
-sudo cp LICENSE.md README.md /redox_zfs/home/
-sudo sync
-sleep 1
-sudo zfs unmount redox_zfs
-sleep 1
-sudo zpool destroy redox_zfs
sudo losetup -d /dev/loop0
$(BUILD)/filesystem.gen: apps bins
$(FIND) filesystem -type f -o -type l | $(CUT) -d '/' -f2- | $(SORT) | $(AWK) '{printf("file %d,\"%s\"\n", NR, $$0)}' > $@
$(BUILD)/harddrive.bin: kernel/harddrive.asm $(BUILD)/kernel.bin $(BUILD)/filesystem.gen
$(AS) -f bin -o $@ -l $(BUILD)/harddrive.list -D ARCH_$(ARCH) -D TIME="`$(DATE) "+%F %T"`" -i$(BUILD)/ -ikernel/ -ifilesystem/ $<
virtualbox: $(BUILD)/harddrive.bin
echo "Delete VM"
-$(VBM) unregistervm Redox --delete; $(VBM_CLEANUP)
echo "Delete Disk"
-$(RM) harddrive.vdi
echo "Create VM"
$(VBM) createvm --name Redox --register
echo "Set Configuration"
$(VBM) modifyvm Redox --memory 1024
$(VBM) modifyvm Redox --vram 16
# $(VBM) modifyvm Redox --nic1 nat
# $(VBM) modifyvm Redox --nictype1 82540EM
# $(VBM) modifyvm Redox --nictrace1 on
# $(VBM) modifyvm Redox --nictracefile1 $(BUILD)/network.pcap
$(VBM) modifyvm Redox --uart1 0x3F8 4
$(VBM) modifyvm Redox --uartmode1 file $(BUILD)/serial.log
$(VBM) modifyvm Redox --usb off # on
$(VBM) modifyvm Redox --keyboard ps2
$(VBM) modifyvm Redox --mouse ps2
# $(VBM) modifyvm Redox --audio $(VB_AUDIO)
# $(VBM) modifyvm Redox --audiocontroller ac97
echo "Create Disk"
$(VBM) convertfromraw $< $(BUILD)/harddrive.vdi
echo "Attach Disk"
#PATA
# $(VBM) storagectl Redox --name ATA --add ide --controller PIIX4 --bootable on
#SATA
$(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
echo "Run VM"
$(VB) --startvm Redox --dbg
bochs: $(BUILD)/harddrive.bin
-bochs -f bochs.$(ARCH)
QFLAGS := -serial mon:stdio -m 1024 -d guest_errors
ifeq ($(machine),q35)
QFLAGS += -machine q35
endif
ifneq ($(kvm),no)
QFLAGS += -enable-kvm
endif
ifeq ($(vga),no)
QFLAGS += -vga none -nographic
else
QFLAGS += -vga std
endif
ifneq ($(usb),no)
QFLAGS += -usb
ifeq ($(usb),ohci)
QFLAGS += -device pci-ohci,id=ohci
QFLAGS += -device usb-tablet,bus=ohci.0
else ifeq ($(usb),ehci)
QFLAGS += -device usb-ehci,id=ehci
QFLAGS += -device usb-tablet,bus=ehci.0
else ifeq ($(usb),xhci)
QFLAGS += -device nec-usb-xhci,id=xhci
QFLAGS += -device usb-tablet,bus=xhci.0
else
QFLAGS += -device usb-tablet
endif
endif
ifeq ($(storage),ahci)
QFLAGS += -device ahci,id=ahci -drive id=disk,file=$(BUILD)/harddrive.bin,format=raw,if=none -device ide-hd,drive=disk,bus=ahci.0
else ifeq ($(storage),usb)
QFLAGS += -device usb-ehci,id=flash_bus -drive id=flash_drive,file=$(BUILD)/harddrive.bin,format=raw,if=none -device usb-storage,drive=flash_drive,bus=flash_bus.0
else
QFLAGS += -drive file=$(BUILD)/harddrive.bin,format=raw,index=0,media=disk
endif
ifeq ($(net),no)
QFLAGS += -net none
else ifeq ($(net),tap)
QFLAGS += -net nic,model=rtl8139 -net tap,ifname=tap_redox,script=no,downscript=no -net dump,file=$(BUILD)/network.pcap
else
QFLAGS += -net nic,model=rtl8139 -net user -net dump,file=$(BUILD)/network.pcap
endif
qemu: $(BUILD)/harddrive.bin
@if [ "$(net)" = "tap" ]; \
then \
sudo tunctl -t tap_redox -u "${USER}"; \
sudo ifconfig tap_redox 10.85.85.1 up; \
fi
-$(QEMU) $(QFLAGS)
@if [ "$(net)" = "tap" ]; \
then \
sudo ifconfig tap_redox down; \
sudo tunctl -d tap_redox; \
fi
arping:
arping -I tap_redox 10.85.85.2
ping:
ping 10.85.85.2
wireshark:
wireshark $(BUILD)/network.pcap
Something went wrong with that request. Please try again.