All Projects → yabits → 9pfspkg

yabits / 9pfspkg

Licence: other
Painless Network-Transparent Network Boot with 9P

Programming Languages

c
50402 projects - #5 most used programming language

Labels

Projects that are alternatives of or similar to 9pfspkg

Super Uefiinsecureboot Disk
Super UEFIinSecureBoot Disk: Boot any OS or .efi file without disabling UEFI Secure Boot
Stars: ✭ 309 (+543.75%)
Mutual labels:  uefi
Hackbgrt
Windows boot logo changer for UEFI systems
Stars: ✭ 693 (+1343.75%)
Mutual labels:  uefi
Mu tiano plus
UEFI Tiano Core Value
Stars: ✭ 28 (-41.67%)
Mutual labels:  uefi
Uefi Ntfs
UEFI:NTFS - Boot NTFS partitions from UEFI
Stars: ✭ 386 (+704.17%)
Mutual labels:  uefi
Uefi Rs
Rust wrapper for UEFI.
Stars: ✭ 582 (+1112.5%)
Mutual labels:  uefi
Cxcore
A prebuilt Linux system use UEFI and f2fs for RaspberryPi 3B, RaspberryPi 3B+, RaspberryPi 4B
Stars: ✭ 17 (-64.58%)
Mutual labels:  uefi
Aio Boot
AIO Boot is an All-in-One bootable software for USB and HDD. Is one of the best Multiboot USB Creator for Windows.
Stars: ✭ 300 (+525%)
Mutual labels:  uefi
Minimal
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.
Stars: ✭ 1,014 (+2012.5%)
Mutual labels:  uefi
Efiguard
Disable PatchGuard and DSE at boot time
Stars: ✭ 601 (+1152.08%)
Mutual labels:  uefi
Rust Uefi Runtime Driver
Template for UEFI runtime drivers written in Rust with serial logging and debugging support.
Stars: ✭ 21 (-56.25%)
Mutual labels:  uefi
Mu
Project mu Documentation
Stars: ✭ 449 (+835.42%)
Mutual labels:  uefi
Linuxboot
The LinuxBoot project is working to enable Linux to replace your firmware on all platforms.
Stars: ✭ 554 (+1054.17%)
Mutual labels:  uefi
Fasmg Ebc
An EFI Byte Code (EBC) assembler, based on fasmg
Stars: ✭ 17 (-64.58%)
Mutual labels:  uefi
Grub2 Filemanager
GRUB2-based file manager
Stars: ✭ 330 (+587.5%)
Mutual labels:  uefi
Ebcvm
EFI Byte Code Virtual Machine in userspace
Stars: ✭ 34 (-29.17%)
Mutual labels:  uefi
S6 pcie microblaze
PCI Express DIY hacking toolkit for Xilinx SP605
Stars: ✭ 301 (+527.08%)
Mutual labels:  uefi
Raspberrypipkg
DEPRECATED - DO NOT USE | Go here instead ->
Stars: ✭ 758 (+1479.17%)
Mutual labels:  uefi
Efiseek
Ghidra analyzer for UEFI firmware.
Stars: ✭ 45 (-6.25%)
Mutual labels:  uefi
Guide2011 3
Гайд по сокету LGA2011-3 и в целом по платформе Intel X99
Stars: ✭ 37 (-22.92%)
Mutual labels:  uefi
Uefi freetype msvc
UEFI アプリケーションで、英日中韓台のアウトライン・フォント表示を行うサンプル・プログラムです。
Stars: ✭ 8 (-83.33%)
Mutual labels:  uefi

9pfsPkg

.github/workflows/config.yml

9pfsPkg is a Plan 9 file system protocol (9P) client for UEFI. In contrast to other network boots, it provides EFI_SIMPLE_FILE_SYSTEM_PROTOCOL interfaces for network-transparent file system operations. Any existing non-network-aware UEFI applications including bootloaders and Linux can use for 9P Boot without any modification.

9P Boot Overview

By coping with other file systems on the 9P server, 9pfsPkg enables Proxy Boot, network boot from another complicated file system like cloud storage.

Proxy Boot Overview

For more details, see the blog post.

Build 9pfsPkg

9pfsPkg requires EDK II.

# Clone EDK II repository.
$ git clone https://github.com/tianocore/edk2.git
$ cd edk2
$ git submodule update --init --recursive

# Clone 9pfsPkg in the EDK II root directory.
$ git clone https://github.com/yabits/9pfsPkg.git


# Build build tools and set environment variables.
$ make -C BaseTools
$ source ./edksetup.sh

# Build 9pfsPkg.
$ build -p 9pfsPkg/9pfsPkg.dsc

Usage

To use 9pfs.efi, set the following UEFI variables with GUID g9pfsGuid (10e4a8f-ed0a-4eed-85ee-216a9d3f092e). It is recommended to create a helper application to set them.

  • StationAddr: Client IPv4 address in CHAR16 (e.g. L"10.0.2.2:564")
  • SubnetMask: Client IPv4 subnet mask in CHAR16 (e.g. L"255.255.255.0")
  • RemoteAddr: 9P server IPv4 address in CHAR16 (e.g. L"10.0.2.100:564")
  • UName: Access user name in CHAR8 (e.g. "root")
  • AName: Exported directory path in CHAR8 (e.g. "/tmp/9")
# Load 9pfsPkg UEFI driver.
FS0:\> load 9pfs.efi

# Update map.
FS0:\> map -u

# Move to the volume.
FS0:\> fs1:

Proxy Boot

Proxy Boot is one of the 9pfsPkg applications. It is booting from another file system via the 9P server. As an example of Proxy Boot, we use Google Cloud Storage (GCS) for the network boot using gcsfuse.

# Create a GCS bucket and upload boot images.

# Mount the GCS bucket.
$ sudo -E gcsfuse proxy-boot /mnt/gcs
Using mount point: /mnt/gcs
Opening GCS connection...
Opening bucket...
Mounting file system...
File system has been successfully mounted.

The below example boots BitVisor from the GCS bucket.

Shell> fs0:
FS0:\> load 9pfs.efi
FS0:\> map -u
FS0:\> fs1:
FS1:\> loadvmm.efi
Starting BitVisor...
Copyright (c) 2007, 2008 University of Tsukuba
All rights reserved.

License

9pfsPkg is released under the BSD-2-Clause Plus Patent License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].