Skip to content

Commit 9599767

Browse files
committed
Correctly build FuzzyOS.vmdk and FuzzyOS.vdi
1 parent 8cd839b commit 9599767

File tree

5 files changed

+61
-26
lines changed

5 files changed

+61
-26
lines changed

.github/workflows/ci.yaml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,18 @@ jobs:
1717

1818
- uses: actions/upload-artifact@v2
1919
with:
20-
name: OS Image
21-
path: build/image.vmdk
20+
name: Raw Image
21+
path: build/FuzzyOS.raw
22+
23+
- uses: actions/upload-artifact@v2
24+
with:
25+
name: Virtual Box Image
26+
path: build/FuzzyOS.vdi
27+
28+
- uses: actions/upload-artifact@v2
29+
with:
30+
name: VMWare Image
31+
path: build/FuzzyOS.vmdk
2232

2333
- name: make test
2434
run: make test

.github/workflows/release.yml

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ jobs:
2828
utcOffset: "+00:00"
2929

3030
- name: Create Release
31-
id: create_release
3231
uses: actions/create-release@v1
3332
env:
3433
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -39,13 +38,32 @@ jobs:
3938
prerelease: false
4039
commitish: ${{ github.sha }}
4140

42-
- name: Upload Release Image
41+
- name: Upload Raw Image
4342
uses: actions/upload-release-asset@v1
44-
id: upload-release-image
4543
env:
4644
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4745
with:
4846
upload_url: ${{ steps.create_release.outputs.upload_url }}
49-
asset_path: build/image.vmdk
50-
asset_name: image.vmdk
47+
asset_path: build/FuzzyOS.raw
48+
asset_name: FuzzyOS.raw
49+
asset_content_type: application/octet-stream
50+
51+
- name: Upload Virtual Box Image
52+
uses: actions/upload-release-asset@v1
53+
env:
54+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55+
with:
56+
upload_url: ${{ steps.create_release.outputs.upload_url }}
57+
asset_path: build/FuzzyOS.vdi
58+
asset_name: FuzzyOS.vdi
59+
asset_content_type: application/x-virtualbox-vdi
60+
61+
- name: Upload VMWare Image
62+
uses: actions/upload-release-asset@v1
63+
env:
64+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
65+
with:
66+
upload_url: ${{ steps.create_release.outputs.upload_url }}
67+
asset_path: build/FuzzyOS.vmdk
68+
asset_name: FuzzyOS.vmdk
5169
asset_content_type: application/x-vmdk

Makefile

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,15 @@ BUILD_REALMODE = $(BUILD_DIR)/real_mode
4242
# Files
4343
bt_stage1 = $(BUILD_BOOTLOADER)/stage1
4444
bt_stage2 = $(BUILD_BOOTLOADER)/stage2
45-
image_vmdk = $(BUILD_DIR)/image.vmdk
4645
app_entry = $(BUILD_LIB)/app/entry.out
4746
rm_static = $(BUILD_REALMODE)/static_library
4847

48+
# OS images
49+
image_raw = $(BUILD_DIR)/FuzzyOS.raw
50+
image_vmdk = $(BUILD_DIR)/FuzzyOS.vmdk
51+
image_vdi = $(BUILD_DIR)/FuzzyOS.vdi
52+
ALL_IMAGES = $(image_raw) $(image_vmdk) $(image_vdi)
53+
4954
# Kernel
5055
kernel_core = $(BUILD_DIR)/kernel/core
5156

@@ -90,10 +95,10 @@ FLAT_FROM_ELF=objcopy -O binary
9095
# Targets
9196
all_artifacts: images binaries external
9297

93-
test: $(image_vmdk) $(wildcard tests/**/*)
98+
test: images $(wildcard tests/**/*)
9499
bash tests/run.sh
95100

96-
images: $(image_vmdk)
101+
images: $(ALL_IMAGES)
97102

98103
binaries: $(bt_stage1) $(bt_stage2) $(kernel_core) $(rm_static)
99104

@@ -109,15 +114,22 @@ SECTOR_START_SHARED_LIBRARY = $(shell expr $(SECTOR_START_BT_STAGE1) + $(SECTOR_
109114
SECTOR_START_BT_STAGE2 = $(shell expr $(SECTOR_START_SHARED_LIBRARY) + $(SECTOR_COUNT_SHARED_LIBRARY) )
110115
SECTOR_START_KERNEL = $(shell expr $(SECTOR_START_BT_STAGE2) + $(SECTOR_COUNT_BT_STAGE2) )
111116

112-
$(image_vmdk): $(bt_stage1) $(rm_static) $(bt_stage2) $(kernel_core) $(BUILD_DIR)/external/bin/mbr_builder $(MINIMAL_DISK)
117+
$(image_raw): $(bt_stage1) $(rm_static) $(bt_stage2) $(kernel_core) $(BUILD_DIR)/external/bin/mbr_builder $(MINIMAL_DISK)
113118
bash scripts/build_image.sh $(BUILD_DIR)/temp_vmdk \
114119
$(bt_stage1) $(SECTOR_COUNT_BT_STAGE1) \
115120
$(rm_static) $(SECTOR_COUNT_SHARED_LIBRARY) \
116121
$(bt_stage2) $(SECTOR_COUNT_BT_STAGE2) \
117122
$(kernel_core) $(SECTOR_COUNT_KERNEL)
118123
./$(BUILD_DIR)/external/bin/mbr_builder $@ $(BUILD_DIR)/temp_vmdk $(MINIMAL_DISK)
124+
truncate --size=128M $@ # sparse file
119125
@echo "Image Size : $$(stat -c %s $@) byte(s)"
120126

127+
$(image_vmdk): $(image_raw)
128+
qemu-img convert -O vmdk $< $@
129+
130+
$(image_vdi): $(image_raw)
131+
qemu-img convert -O vdi $< $@
132+
121133
clean:
122134
rm -r $(BUILD_DIR)/ || echo "Build directory is clean."
123135

README.md

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fork() | TicTacToe game
2626
----------------|---------------
2727
![image](https://user-images.githubusercontent.com/9819066/132112808-72ba7691-5f18-4631-b95d-fa52a63d2f38.png) | ![image](https://user-images.githubusercontent.com/9819066/129463802-d9a0bc77-74eb-4438-b553-e1439ada95a1.png)
2828

29-
| pingpong game |
29+
| pingpong game |
3030
| ------------- |
3131
| ![gif](https://user-images.githubusercontent.com/9819066/132988756-de1b7770-430d-40df-a7c9-593cd752b20a.gif) |
3232

@@ -38,20 +38,15 @@ fork() | TicTacToe game
3838
- Download image from one of the [Release](#Release).
3939
- Or directly build image using `make images` after cloning the repository.
4040

41+
#### Boot on VirtualBox
42+
- Create VM with `FuzzyOS.vdi` as storage.
43+
4144
#### Boot on VMware
42-
- Create *Virtual Machine Disk* with fixed size of *4MB*.
43-
- Burn `image.vmdk` to `new-disk-flat.vmdk`
44-
- `bash scripts/burn.sh /path/to/image.vmdk /path/to/build/new-disk-flat.vmdk`
45-
- Or simply replace `new-disk-flat.vmdk` with a sym-link to `build/image.vmdk` (for rapid development :grin:)
45+
- Create VM with `FuzzyOS.vmdk` as storage.
4646

4747
##### Boot on a real machine
4848
- Use `dd` or `scripts/burn.sh` to burn image into the disk (potentially destructive).
49-
- `bash scripts/burn.sh build/image.vmdk /path/to/devicefile`
50-
51-
###### If boot from Flash Drive doesn't work
52-
- Try formatting device MBR with a FAT partition.
53-
- And then burn the image again.
54-
49+
- `bash scripts/burn.sh build/FuzzyOS.raw /path/to/devicefile`
5550

5651
### Development
5752

emulator/Makefile.mk

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ QEMU_GDB_PORT=9000
44
QEMU_MONITOR_PORT=55555
55
GDB_EX=echo Use GDB_EX="<command>" to execute command on connect.\n
66

7-
qemu: $(image_vmdk)
7+
qemu: $(image_raw)
88
qemu-system-x86_64 -smp 1 -m 128M -hda $< $(QEMU_SHUT_FLAGS) $(QEMU_EXTRA_FLAGS)
99

10-
qemu_vvv: $(image_vmdk)
10+
qemu_vvv: $(image_raw)
1111
qemu-system-x86_64 -smp 1 -m 128M -hda $< $(QEMU_SHUT_FLAGS) $(QEMU_EXTRA_FLAGS) -d cpu,exec,in_asm
1212

13-
qemu_monitor: $(image_vmdk)
13+
qemu_monitor: $(image_raw)
1414
qemu-system-x86_64 -smp 1 -m 128M -hda $< $(QEMU_SHUT_FLAGS) $(QEMU_EXTRA_FLAGS) -monitor telnet:127.0.0.1:$(QEMU_MONITOR_PORT),server,nowait
1515

16-
qemu_debug: $(image_vmdk)
16+
qemu_debug: $(image_raw)
1717
qemu-system-x86_64 -S -gdb tcp::$(QEMU_GDB_PORT) -smp 1 -m 128M -hda $< $(QEMU_SHUT_FLAGS) -d cpu,exec,in_asm
1818

1919
qemu_debug_connect:

0 commit comments

Comments
 (0)