{"id":19705391,"url":"https://github.com/arun-gupta/firecracker-firstlook","last_synced_at":"2026-02-18T17:02:46.803Z","repository":{"id":69263692,"uuid":"161848283","full_name":"arun-gupta/firecracker-firstlook","owner":"arun-gupta","description":"First Look at Firecracker","archived":false,"fork":false,"pushed_at":"2025-10-16T18:10:16.000Z","size":13,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-17T20:54:55.031Z","etag":null,"topics":["containers","fargate","firecracker","kata-containers","kvm-hypervisor","lambda","qemu","virtualization","virtualization-based-security"],"latest_commit_sha":null,"homepage":"https://firecracker-microvm.github.io/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arun-gupta.png","metadata":{"files":{"readme":"readme.adoc","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-14T22:45:45.000Z","updated_at":"2022-12-18T09:36:09.000Z","dependencies_parsed_at":"2023-07-29T13:47:14.056Z","dependency_job_id":null,"html_url":"https://github.com/arun-gupta/firecracker-firstlook","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arun-gupta/firecracker-firstlook","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arun-gupta%2Ffirecracker-firstlook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arun-gupta%2Ffirecracker-firstlook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arun-gupta%2Ffirecracker-firstlook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arun-gupta%2Ffirecracker-firstlook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arun-gupta","download_url":"https://codeload.github.com/arun-gupta/firecracker-firstlook/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arun-gupta%2Ffirecracker-firstlook/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29587066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T16:55:40.614Z","status":"ssl_error","status_checked_at":"2026-02-18T16:55:37.558Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["containers","fargate","firecracker","kata-containers","kvm-hypervisor","lambda","qemu","virtualization","virtualization-based-security"],"created_at":"2024-11-11T21:27:57.308Z","updated_at":"2026-02-18T17:02:46.770Z","avatar_url":"https://github.com/arun-gupta.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"= First Look at Firecracker\n:toc:\n\n= Video 1: What is Firecracker\n\n**Slides**\n\n. What is Firecracker?\n. Benefits of Firecracker\n. Firecracker Design Principles\n\n= Video 2: Firecracker Design\n\n**Slides**\n\n. Firecracker Design\n. REST API\n\n= Video 3: Firecracker and Lambda\n\n**Slides**\n\n= Video 4: Firecracker and Fargate\n\n**Slides**\n\n= Video 5: Getting Started with Firecracker\n\n**Prep Work**\n\n. Create an `m5.metal` instance using Amazon Linux 2 on EC2 and login:\n\n    ssh -i ~/.ssh/arun-us-east1.pem ec2-user@\u003cip-address\u003e\n\n**Code**\n\n. Clone and build `firectl`:\n\n    sudo yum install -y git\n    git clone https://github.com/firecracker-microvm/firectl\n    sudo amazon-linux-extras install -y golang1.11\n    cd firectl\n    make\n\n. Firecracker uses KVM and needs read/write access that can be granted as shown below:\n\n    sudo setfacl -m u:${USER}:rw /dev/kvm\n\n. Download the Firecracker binary:\n\n    curl -LOJ https://github.com/firecracker-microvm/firecracker/releases/download/v0.15.2/firecracker-v0.15.2\n    chmod +x firecracker-v0.15.2\n    sudo mv firecracker-v0.15.2 /usr/local/bin/firecracker\n\n. Download an Alpine Linux-based test kernel and a root filesystem:\n\n    curl -fsSL -o hello-vmlinux.bin https://s3.amazonaws.com/spec.ccfc.min/img/hello/kernel/hello-vmlinux.bin\n    curl -fsSL -o hello-rootfs.ext4 https://s3.amazonaws.com/spec.ccfc.min/img/hello/fsfiles/hello-rootfs.ext4\n\n. Create microVM:\n\n    ./firectl \\\n      --kernel=hello-vmlinux.bin \\\n      --root-drive=hello-rootfs.ext4\n\n. Terminal 1 shows a login prompt:\n\n    Welcome to Alpine Linux 3.8\n    Kernel 4.14.55-84.37.amzn2.x86_64 on an x86_64 (ttyS0)\n    localhost login:\n\n. Log in as `root` with password `root`\n. Show the filesystem:\n\n    ls /\n\n. Shutdown the machine:\n\n    reboot\n\n= Video 6: Access the microVM using REST API\n\n. Start the machine again:\n\n    sudo setfacl -m u:${USER}:rw /dev/kvm\n    ./firectl \\\n      --kernel=hello-vmlinux.bin \\\n      --root-drive=hello-rootfs.ext4\n\n. In another terminal, login to the same EC2 instance:\n\n   ssh -i ~/.ssh/arun-us-east1.pem ec2-user@\u003cip-address\u003e\n \n. Query the microVM:\n\n    $ curl --unix-socket ~/.firecracker.sock-* http://localhost/\n    {\"id\":\"anonymous-instance\",\"state\":\"Running\",\"vmm_version\":\"0.15.2\"}\n\n. Get more details about the microVM:\n+\n    $ curl --unix-socket ~/.firecracker.sock-* http://localhost/machine-config\n    { \"vcpu_count\": 1, \"mem_size_mib\": 512,  \"ht_enabled\": true,  \"cpu_template\": \"Uninitialized\" }\n+\nShow the vCPU and memory size.\n+\n. Try to update the vCPU:\n\n    $ curl --unix-socket ~/.firecracker.sock-* -X PUT http://localhost/machine-config -d '{ \"vcpu_count\": 2}'\n    {\n    \"fault_message\": \"The update operation is not allowed after boot.\"\n    }\n\n. Try to shutdown the VM using by sending `SendCtrlAltDel` action:\n+\n    curl --unix-socket ~/.firecracker.sock-* -X PUT http://localhost/actions -d '{ \"action_type\": \"SendCtrlAltDel\" }'\n+\nExplain that this will not work. Firecracker emulates a standard AT keyboard, connected via an i8042 controller. The required device drivers are not enabled in this kernel.\n+\n. Download a Ubuntu-based test kernel and Xenial root filesystem, that has the device drivers enabled:\n\n    curl -fsSL -o vmlinux.bin https://s3.amazonaws.com/spec.ccfc.min/img/ubuntu_with_ssh/kernel/vmlinux.bin\n    curl -fsSL -o xenial.rootfs.ext4 https://s3.amazonaws.com/spec.ccfc.min/img/ubuntu_with_ssh/fsfiles/xenial.rootfs.ext4\n\n. Start a new microVM using new kernel and filesystem:\n\n    sudo setfacl -m u:${USER}:rw /dev/kvm\n    ./firectl \\\n      --kernel=vmlinux.bin \\\n      --root-drive=xenial.rootfs.ext4\n\n. Query the microVM again:\n\n    curl --unix-socket ~/.firecracker.sock-* http://localhost/machine-config\n\n. Shutdown the microVM using an action:\n\n    curl --unix-socket ~/.firecracker.sock-* -X PUT http://localhost/actions -d '{ \"action_type\": \"SendCtrlAltDel\" }'\n\n= Video 7: Firecracker and Container Integration\n\n**Slides**\n\n. Firecracker and Containerd\n. Firecracker and Kata Containers\n\n**Code**\n\nWaiting for https://github.com/aws/containers-roadmap/issues/24.\n\nhttps://github.com/kata-containers/packaging/tree/master/kata-deploy#kubernetes-quick-start\n\n. Install eksctl CLI:\n\n    brew tap weaveworks/tap\n    brew install weaveworks/tap/eksctl\n\n. Create EKS cluster:\n\n    eksctl create cluster --name kata --nodes 4\n\n. Install Kata:\n\n    kubectl apply -f https://raw.githubusercontent.com/kata-containers/packaging/master/kata-deploy/kata-rbac.yaml\n    kubectl apply -f https://raw.githubusercontent.com/kata-containers/packaging/master/kata-deploy/kata-deploy.yaml\n\n. Deploy a pod using `kata-fc` runtime:\n\n    kubectl apply -f https://raw.githubusercontent.com/kata-containers/packaging/master/kata-deploy/examples/test-deploy-kata-fc.yaml\n\n. Get pod details:\n\n    kubectl describe pod \u003c\u003e\n\n= Video 8: Next Steps with Firecracker\n\n. https://firecracker-microvm.github.io/\n. https://github.com/rust-vmm\n. Slack channel: https://tinyurl.com/firecracker-microvm\n. Good First Issue: https://github.com/firecracker-microvm/firecracker/issues?q=is%3Aopen+is%3Aissue+label%3A%22Contribute%3A+Good+First+Issue%22\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farun-gupta%2Ffirecracker-firstlook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farun-gupta%2Ffirecracker-firstlook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farun-gupta%2Ffirecracker-firstlook/lists"}