Skip to content

Commit 5b3c6c9

Browse files
committed
Release notes for Firecracker v0.2
Updated the version: 0.1.1 -> 0.2.0 Updated the CHANGELOG and README to include changes for this release. Updated the examples script. Signed-off-by: Adrian Catangiu <[email protected]>
1 parent 78e6bb5 commit 5b3c6c9

File tree

5 files changed

+47
-21
lines changed

5 files changed

+47
-21
lines changed

CHANGELOG.md

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
# Changelog
22

3+
## [0.2.0]
4+
5+
### Added
6+
7+
* Users can now interrogate Instance Information (currently just instance state) through the API.
8+
9+
### Changed
10+
11+
* Renamed `api/swagger/all.yaml` to `api/swagger/firecracker-v1.0.yaml` which specifies targeted API support for Firecracker v1.0.
12+
* Renamed `api/swagger/firecracker-v0.1.yaml` to `api/swagger/firecracker-beta.yaml` which specifies the currently supported API.
13+
* Users can now enforce that an emulated block device is read-only via the API. To specify whether a block device is read-only or read-write, an extra "permissions" field was added to the Drive definition in the API. The root filesystem is automatically mounted in the guest OS as ro/rw according to the specified "permissions". It's the responsibility of the user to mount any other read-only block device as such within the guest OS.
14+
* Users can now stop the guest VM using the API. Actions of type 'InstanceHalt' are now supported via the API.
15+
16+
### Fixed
17+
18+
* Added support for getDeviceID() in virtIO-block. Without this, the guest Linux kernel would complain at boot time that the operation is unsupported.
19+
* STDIN control is returned to the Firecracker process when guest VM is inactive. Raw mode STDIN is forwarded to the guest OS when guest VM is running.
20+
21+
### Removed
22+
23+
* Removed `api/swagger/actions.yaml`.
24+
* Removed `api/swagger/devices.yaml`.
25+
* Removed `api/swagger/firecracker-mvp.yaml`.
26+
* Removed `api/swagger/limiters.yaml`.
27+
28+
329
## [0.1.1]
430

531
### Changed
@@ -22,4 +48,4 @@
2248
* The capability of mapping an existing host tun-tap device as a virtIO/net device into the microVM.
2349
* The capability of mapping an existing host file as a virtIO/block device into the microVM.
2450
* The capability of creating a virtIO/vsock between the host and the microVM.
25-
* Default demand fault paging & CPU oversubscription.
51+
* Default demand fault paging & CPU oversubscription.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "firecracker"
3-
version = "0.1.1"
3+
version = "0.2.0"
44
authors = ["Amazon firecracker team <[email protected]>"]
55

66
[dependencies]

README.md

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,18 @@ MicroVMs are created and managed by the Firecracker process, which implements a
66

77
# Overview
88

9-
This Readme currently pertains to the v0.1 release.
10-
11-
Firecracker consists of single micro Virtual Machine Manager binary that will spawn a RESTful API endpoint when started. In v0.1, the API endpoint can be used to:
9+
Firecracker consists of a single micro Virtual Machine Manager binary that will spawn a RESTful API endpoint when started. The API endpoint can be used to:
1210
* Add one or more vCPUs to the microVM.
1311
* Add memory to the microVM.
1412
* Add one or more network interfaces to the microVM.
1513
* Add one or more read/write disks (block devices) to the microVM.
1614
* Add one or more vSockets to the microVM.
1715
* Start the microVM using a given kernel image and root file system.
16+
* Stop the microVM
1817

19-
## What's Included in v0.1?
18+
## What's Included in the current version?
2019
* One-process virtual machine manager (one Firecracker per microVM).
21-
* RESTful API running on a unix socket. The API supported by v0.1 can be found at `api/swagger/firecracker-v0.1.yaml`.
20+
* RESTful API running on a unix socket. The API supported by the current version can be found at `api/swagger/firecracker-beta.yaml`.
2221
* Emulated keyboard (i8042) and serial console (UART). The microVM serial console input and output are connected to those of the Firecracker process (this allows direct console access to the guest OS).
2322
* The capability of mapping an existing host tun-tap device as a virtIO/net device into the microVM.
2423
* The capability of mapping an existing host file as a virtIO/block device into the microVM.
@@ -54,7 +53,7 @@ To run microVMs with Firecracker, you will need to have:
5453

5554
The python-based toy example below will start a Firecracker microVM with 2 vCPUs, 256 MiB or RAM, two network interfaces, two disks (rootfs and temp), and a vsocket.
5655

57-
Currently, only the core parts of the API (`/actions`, `/machine-config`, `/boot-source`, `/network-interfaces`, `/drives`, and `/vsocks`) are implemented. See section [What's Included in v0.1?](https://quip-amazon.com/Y3RFAqZFxBwE#BGO9CAEkkRE) for more details. For the planned v1.0 API description see `/api/swagger/all.yaml`.
56+
Currently, only the core parts of the API (`/actions`, `/machine-config`, `/boot-source`, `/network-interfaces`, `/drives`, and `/vsocks`) are implemented. For the planned v1.0 API description see `/api/swagger/all.yaml`.
5857

5958
The toy example snapshot below uses a Python script to start a Firecracker instance. The Firecracker binary, as well as compatible kernel, root file system, and temp file system images are assumed to already exist. The TUN/TAP devices passed to the networking API are also assumed to already exist. Firecracker requires root privileges to open vsock interfaces on a host.
6059

@@ -102,6 +101,7 @@ requests.put(
102101
'drive_id': '1',
103102
'path_on_host': '/tmp/firecracker0001/ami-rootfs.ext4',
104103
'state': 'Attached',
104+
'permissions': 'rw',
105105
'is_root_device': True
106106
}
107107
)
@@ -114,6 +114,7 @@ requests.put(
114114
'drive_id': '2',
115115
'path_on_host': '/tmp/firecracker0001/scratch.ext4',
116116
'state': 'Attached',
117+
'permissions': 'rw',
117118
'is_root_device': False
118119
}
119120
)
@@ -143,18 +144,15 @@ requests.put(
143144
)
144145
```
145146

146-
## Notes for v0.1
147+
## Notes
147148
1. The Kernel and RootFS need to work together, and the Kernel needs to run with Firecracker's limited device model.
148149
2. Vsocket usage currently requires root privileges, and both host (`CONFIG_VHOST_VSOCK`) and guest (`CONFIG_VIRTIO_VSOCKETS`) kernel support.
149-
3. During bootup, an error will be displayed when mounting the disk: `[ERROR:devices/src/virtio/block.rs:209] failed executing disk request: Unsupported(8)`. This is because we don't currently create an ID in the virtio block device. It should be benign.
150-
4. When creating more than one Firecracker v0.1 microVM, make sure you will have separate copies of the file system images. All drives are currently mounted in read-write mode.
151-
5. Firecracker v0.1 uses default values for the following parameters:
150+
3. It is the user's responsability to make sure that the same backing file is not added as a read-write block device to multiple Firecracker instances. A file can be safely added as a read-only block device to multiple Firecracker instances.
151+
4. Firecracker uses default values for the following parameters:
152152
1. Kernel Command Line: `console=ttyS0 noapic reboot=k panic=1 pci=off nomodules`. This can be changed with a `PUT` request to `/boot-source`.
153153
2. Number of vCPUs: 1. This can be changed with a `PUT` request to `/machine-config`
154-
3. Memory Size: 128 Mib. This can be changed with a `PUT` request to `/machine-config`
154+
3. Memory Size: 128 MiB. This can be changed with a `PUT` request to `/machine-config`
155155
4. Unix domain socket: `/tmp/firecracker.socket`. This can be changed only when Firecracker is started, by using the command line parameter `--api-sock`.
156-
6. Firecracker v0.1 links the microVM serial console output to its stdout, and its stdin to the microVM serial console input. Therefore, you can interact with the microVM guest in the screen session.
157-
7. Important: The unix domain socket is not deleted when Firecracker v0.1 is stopped. You have to remove it yourself after stopping the Firecracker process.
158-
159-
## Shutting Down
160-
Firecracker v0.1 doesn't emulate a power management device, so poweroff doesn't work as expected (it leaves Firecracker hanging).
156+
5. Firecracker links the microVM serial console output to its stdout, and its stdin to the microVM serial console input. Therefore, you can interact with the microVM guest in the screen session.
157+
6. Important: The unix domain socket is not deleted when Firecracker is stopped. You have to remove it yourself after stopping the Firecracker process.
158+
7. Firecracker doesn't yet emulate a power management device. This means that any shutdown/poweroff command issued by the guest OS only does partial shutdown then hangs. The linux 'reboot' command when run in the guest OS will actually cleanly shut down the guest without bringing it back up.

api/swagger/firecracker-beta.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
swagger: "2.0"
22
info:
3-
title: Firecracker v0.1 API
4-
description: Firecraker v0.1 - RESTful public-facing API.
3+
title: Firecracker v0.2 API
4+
description: Firecraker v0.2 - RESTful public-facing API.
55
The API is accessible through HTTP calls on specific URLs carrying JSON modeled data.
66
The transport medium is a Unix Domain Socket.
7-
version: 0.1.0
7+
version: 0.2.0
88
termsOfService: ""
99
contact:
1010

examples/hello_api/spawn_microvm.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def get_usocket_url(self):
9999
'drive_id': '1',
100100
'path_on_host': '/tmp/firecracker0001/ami-rootfs.ext4',
101101
'state': 'Attached',
102+
'permissions': 'rw',
102103
'is_root_device': True
103104
}
104105
)
@@ -111,6 +112,7 @@ def get_usocket_url(self):
111112
'drive_id': '2',
112113
'path_on_host': '/tmp/firecracker0001/scratch.ext4',
113114
'state': 'Attached',
115+
'permissions': 'rw',
114116
'is_root_device': False
115117
}
116118
)

0 commit comments

Comments
 (0)