Initial commit, based on prev work in https://github.com/humphd/next
This commit is contained in:
parent
06c54ce9b4
commit
93c360f79b
|
@ -0,0 +1,5 @@
|
||||||
|
dist/*
|
||||||
|
|
||||||
|
.gitignore
|
||||||
|
LICENSE
|
||||||
|
README.md
|
|
@ -0,0 +1 @@
|
||||||
|
dist/
|
|
@ -0,0 +1,51 @@
|
||||||
|
FROM rastasheep/ubuntu-sshd:18.04
|
||||||
|
|
||||||
|
# Buildroot version to use
|
||||||
|
ARG BUILD_ROOT_RELEASE=2018.02
|
||||||
|
# Root password for SSH
|
||||||
|
ARG ROOT_PASSWORD=browser-vm
|
||||||
|
|
||||||
|
# Copy v86 buildroot board config into image.
|
||||||
|
# NOTE: if you want to override this later to play with
|
||||||
|
# the config (e.g., run `make menuconfig`), mount a volume:
|
||||||
|
# docker run ... -v $PWD/buildroot-v86:/buildroot-v86 ...
|
||||||
|
COPY ./buildroot-v86 /buildroot-v86
|
||||||
|
|
||||||
|
# Setup SSH (for Windows users) and prepare apt-get
|
||||||
|
RUN echo 'root:${ROOT_PASSWORD}' | chpasswd; \
|
||||||
|
# Install all Buildroot deps
|
||||||
|
sed -i 's|deb http://us.archive.ubuntu.com/ubuntu/|deb mirror://mirrors.ubuntu.com/mirrors.txt|g' /etc/apt/sources.list; \
|
||||||
|
dpkg --add-architecture i386; \
|
||||||
|
rm -rf /var/lib/apt/lists/*; \
|
||||||
|
apt-get -q update;
|
||||||
|
|
||||||
|
# Install all Buildroot deps and prepare buildroot
|
||||||
|
WORKDIR /root
|
||||||
|
RUN apt-get -q -y install \
|
||||||
|
bc \
|
||||||
|
build-essential \
|
||||||
|
bzr \
|
||||||
|
cpio \
|
||||||
|
cvs \
|
||||||
|
git \
|
||||||
|
unzip \
|
||||||
|
wget \
|
||||||
|
libc6:i386 \
|
||||||
|
libncurses5-dev \
|
||||||
|
libssl-dev \
|
||||||
|
rsync; \
|
||||||
|
wget -c http://buildroot.org/downloads/buildroot-${BUILD_ROOT_RELEASE}.tar.gz; \
|
||||||
|
tar axf buildroot-${BUILD_ROOT_RELEASE}.tar.gz;
|
||||||
|
|
||||||
|
# configure the locales
|
||||||
|
ENV LANG='C' \
|
||||||
|
LANGUAGE='en_US:en' \
|
||||||
|
LC_ALL='C' \
|
||||||
|
NOTVISIBLE="in users profile" \
|
||||||
|
TERM=xterm
|
||||||
|
|
||||||
|
# Buildroot will place built artifacts here at the end.
|
||||||
|
VOLUME /build
|
||||||
|
|
||||||
|
WORKDIR /root/buildroot-${BUILD_ROOT_RELEASE}
|
||||||
|
ENTRYPOINT ["/buildroot-v86/build-v86.sh"]
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 David Humphrey
|
Copyright (c) 2018-2019 David Humphrey
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
202
README.md
202
README.md
|
@ -1,2 +1,200 @@
|
||||||
# browser-vm
|
# Browser VM
|
||||||
A small Linux x86 VM meant for use in the browser
|
|
||||||
|
A custom [Buildroot](https://buildroot.org/) config for a Linux x86 VM, meant to
|
||||||
|
be run in the browser. The resulting Linux ISO is meant to be run under
|
||||||
|
emulation in the browser via [v86](https://github.com/copy/v86), and includes:
|
||||||
|
|
||||||
|
* a custom Linux 4.15 kernel, which strips out many unnecessary drivers, modules, etc. and adds [Plan 9 filesystem](https://www.kernel.org/doc/Documentation/filesystems/9p.txt) sharing
|
||||||
|
* a root filesystem and Unix commands via [BusyBox](https://busybox.net/)
|
||||||
|
* an ISO-based bootloader (i.e., we create a "DVD" that is booted by v86)
|
||||||
|
|
||||||
|
Following the [Buildroot customization docs](https://buildroot.org/downloads/manual/manual.html#customize)
|
||||||
|
we create a folder `buildroot-v86/` with all the necessary config files,
|
||||||
|
filesystem overlay, and scripts necessary to build our distribution.
|
||||||
|
|
||||||
|
## Running via Docker
|
||||||
|
|
||||||
|
To build the Docker image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker build -t buildroot .
|
||||||
|
```
|
||||||
|
|
||||||
|
And then to run the build:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker run \
|
||||||
|
--rm \
|
||||||
|
--name build-v86 \
|
||||||
|
-v $PWD/dist:/build \
|
||||||
|
-v $PWD/buildroot-v86/:/buildroot-v86 \
|
||||||
|
buildroot
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: we define two [volumes](https://docs.docker.com/engine/reference/builder/#volume) to
|
||||||
|
allow the container to access the v86 config, and also to write the ISO once complete. In the
|
||||||
|
above I've used `$PWD`, but you can use any absolute path.
|
||||||
|
|
||||||
|
When the build completes, an ISO file will be places in `./dist/v86-linux.iso`
|
||||||
|
in your source tree (i.e., outside the container).
|
||||||
|
|
||||||
|
If you need to re-configure things, instead of just running the build, do the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker run \
|
||||||
|
--rm \
|
||||||
|
--name build-v86 \
|
||||||
|
-v $PWD/dist:/build \
|
||||||
|
-v $PWD/buildroot-v86/:/buildroot-v86 \
|
||||||
|
-ti \
|
||||||
|
--entrypoint "bash" \
|
||||||
|
buildroot
|
||||||
|
```
|
||||||
|
|
||||||
|
Now in the resulting bash terminal, you can run `make menuconfig` and [other make commands](https://buildroot.org/downloads/manual/manual.html#make-tips).
|
||||||
|
|
||||||
|
## `buildroot-v86/` Layout
|
||||||
|
|
||||||
|
We define a `v86` buildroot "board" via the following files and directories:
|
||||||
|
|
||||||
|
```
|
||||||
|
+-- board/
|
||||||
|
+-- v86
|
||||||
|
+-- linux.config # our custom Linux kernel config (make linux-menuconfig)
|
||||||
|
+-- post_build.sh # script to copy ISO file out of docker container
|
||||||
|
+-- rootfs_overlay/ # overrides for files in the root filesystem
|
||||||
|
+-- etc/
|
||||||
|
+-- inittab # we setup a ttyS0 console terminal to auto-login
|
||||||
|
+-- fstab # we auto-mount the Plan 9 Filer filesystem to /mnt
|
||||||
|
+-- configs/
|
||||||
|
+-- v86_defconfig # our custom buildroot config (make menuconfig)
|
||||||
|
+-- Config.in # empty, but required https://buildroot.org/downloads/manual/manual.html#outside-br-custom
|
||||||
|
+-- external.mk # empty, but required https://buildroot.org/downloads/manual/manual.html#outside-br-custom
|
||||||
|
+-- external.desc # our v86 board config for make
|
||||||
|
+-- build-v86.sh # entrypoint for Docker to run our build
|
||||||
|
```
|
||||||
|
|
||||||
|
If you need or want to update these config files, do the following:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make BR2_EXTERNAL=/buildroot-v86 v86_defconfig
|
||||||
|
$ make menuconfig
|
||||||
|
...
|
||||||
|
$ make savedefconfig
|
||||||
|
$ make linux-menuconfig
|
||||||
|
...
|
||||||
|
$ make linux-savedefconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration Notes
|
||||||
|
|
||||||
|
These are the options I set when configuring buildroot for v86. I'm only
|
||||||
|
specifying the things I set.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cd buildroot-2018.02
|
||||||
|
$ make menucofing
|
||||||
|
```
|
||||||
|
|
||||||
|
Then follow these config steps in the buildroot config menu (NOTE: these docs
|
||||||
|
may have drifted from the actual config in the source, so consult that first):
|
||||||
|
|
||||||
|
### Target options
|
||||||
|
|
||||||
|
* Target Architecture: i386
|
||||||
|
* Target Architecture Variant: pentium mobile (Pentium with MMX, SSE)
|
||||||
|
|
||||||
|
### Build options
|
||||||
|
|
||||||
|
* Enable compiler cache (not strictly necessary, but helps with rebuilds)
|
||||||
|
|
||||||
|
### Toolchain
|
||||||
|
|
||||||
|
* C library: uLibc-ng (I'd like to experiment with musl too)
|
||||||
|
|
||||||
|
### System configuration
|
||||||
|
|
||||||
|
* remount root filesystem read-write during boot (I think this is unnecessary)
|
||||||
|
* Root filesystem overlay directories: /build/overlay-fs (for etc/inittab)
|
||||||
|
|
||||||
|
### Kernel
|
||||||
|
|
||||||
|
* Linux Kernel: true
|
||||||
|
* Defconfig name: i386
|
||||||
|
* Kernel binary format: bzImage (vmlinux seemed to break on boot)
|
||||||
|
|
||||||
|
### Target packages
|
||||||
|
|
||||||
|
Need to figure this out. I tried adding imagemagik, git, uemacs, but they
|
||||||
|
are all adding too much size to the image.
|
||||||
|
|
||||||
|
### Filesystem images
|
||||||
|
|
||||||
|
* cpio the root filesystem (for use as an initial RAM filesystem)
|
||||||
|
* initial RAM filesystem linked into the linux kernel (not sure I need this, trying without...)
|
||||||
|
* iso image
|
||||||
|
* Use initrd
|
||||||
|
* tar the root filesystem Compression method (no compression)
|
||||||
|
|
||||||
|
### Bootloaders
|
||||||
|
|
||||||
|
* syslinux
|
||||||
|
* install isolinux
|
||||||
|
|
||||||
|
## Linux configuration
|
||||||
|
|
||||||
|
Now configure the Linux Kernel:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make linux-menuconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
And set the following options to accomplish this:
|
||||||
|
|
||||||
|
```
|
||||||
|
CONFIG_NET_9P=y
|
||||||
|
CONFIG_NET_9P_VIRTIO=y
|
||||||
|
CONFIG_9P_FS=y
|
||||||
|
CONFIG_9P_FS_POSIX_ACL=y
|
||||||
|
CONFIG_PCI=y
|
||||||
|
CONFIG_VIRTIO_PCI=y
|
||||||
|
CONFIG_PCI=y
|
||||||
|
CONFIG_VIRTIO_PCI=y
|
||||||
|
```
|
||||||
|
|
||||||
|
# Processor type and features
|
||||||
|
|
||||||
|
* Processor family (Pentium-Pro) also tried Pentium M before.
|
||||||
|
|
||||||
|
# Bus options (PCI, etc.)
|
||||||
|
|
||||||
|
* PCI Debugging: true (I want to see what's happening with PCI errors, normally not needed)
|
||||||
|
|
||||||
|
# Networking support
|
||||||
|
|
||||||
|
* Plan 9 Resource Sharing Support (9P2000) (built into kernel * vs. M)
|
||||||
|
* 9P Virtio Transport (* - make this is on, it won't exist if virtio is off)
|
||||||
|
* Debug information (* - optional)
|
||||||
|
|
||||||
|
# Device Drivers
|
||||||
|
|
||||||
|
* Virtio drivers
|
||||||
|
* PCI driver for virtio devices (built into kernel * vs. M)
|
||||||
|
* Support for legacy virtio draft 0.9.X and older devices (New)
|
||||||
|
* Platform bus driver for memory mapped virtio devices (* vs. M) - not sure I need this...
|
||||||
|
* Memory mapped virtio devices parameter parsing - or this...
|
||||||
|
|
||||||
|
# Filesystems
|
||||||
|
|
||||||
|
* Caches
|
||||||
|
* General filesystem local caching manager (*)
|
||||||
|
* Filesystem caching on files (*)
|
||||||
|
|
||||||
|
* Network File Systems
|
||||||
|
* Plan 9 Resource Sharing Support (9P2000) (*)
|
||||||
|
* Enable 9P client caching support
|
||||||
|
* 9P Posic Access Control Lists
|
||||||
|
|
||||||
|
Now run `make`
|
||||||
|
|
||||||
|
When it finishes, the built image is in `./output/images`.
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
source "$BR2_EXTERNAL_v86_PATH/package/nled/Config.in"
|
|
@ -0,0 +1,263 @@
|
||||||
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_POSIX_MQUEUE=y
|
||||||
|
CONFIG_AUDIT=y
|
||||||
|
CONFIG_NO_HZ=y
|
||||||
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
|
CONFIG_TASKSTATS=y
|
||||||
|
CONFIG_TASK_DELAY_ACCT=y
|
||||||
|
CONFIG_TASK_XACCT=y
|
||||||
|
CONFIG_TASK_IO_ACCOUNTING=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=18
|
||||||
|
CONFIG_CGROUPS=y
|
||||||
|
CONFIG_CGROUP_SCHED=y
|
||||||
|
CONFIG_CGROUP_FREEZER=y
|
||||||
|
CONFIG_CGROUP_CPUACCT=y
|
||||||
|
CONFIG_NAMESPACES=y
|
||||||
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
|
CONFIG_INITRAMFS_SOURCE="${BR_BINARIES_DIR}/rootfs.cpio"
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
# CONFIG_PCSPKR_PLATFORM is not set
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
# CONFIG_COMPAT_BRK is not set
|
||||||
|
CONFIG_PROFILING=y
|
||||||
|
CONFIG_KPROBES=y
|
||||||
|
CONFIG_JUMP_LABEL=y
|
||||||
|
CONFIG_MODULES=y
|
||||||
|
CONFIG_MODULE_UNLOAD=y
|
||||||
|
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||||
|
CONFIG_PARTITION_ADVANCED=y
|
||||||
|
CONFIG_OSF_PARTITION=y
|
||||||
|
CONFIG_AMIGA_PARTITION=y
|
||||||
|
CONFIG_MAC_PARTITION=y
|
||||||
|
CONFIG_BSD_DISKLABEL=y
|
||||||
|
CONFIG_MINIX_SUBPARTITION=y
|
||||||
|
CONFIG_SOLARIS_X86_PARTITION=y
|
||||||
|
CONFIG_UNIXWARE_DISKLABEL=y
|
||||||
|
CONFIG_SGI_PARTITION=y
|
||||||
|
CONFIG_SUN_PARTITION=y
|
||||||
|
CONFIG_KARMA_PARTITION=y
|
||||||
|
# CONFIG_X86_EXTENDED_PLATFORM is not set
|
||||||
|
CONFIG_M686=y
|
||||||
|
CONFIG_X86_GENERIC=y
|
||||||
|
CONFIG_HPET_TIMER=y
|
||||||
|
CONFIG_PREEMPT_VOLUNTARY=y
|
||||||
|
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
|
||||||
|
CONFIG_X86_REBOOTFIXUPS=y
|
||||||
|
CONFIG_MICROCODE_AMD=y
|
||||||
|
CONFIG_X86_MSR=y
|
||||||
|
CONFIG_X86_CPUID=y
|
||||||
|
CONFIG_HIGHPTE=y
|
||||||
|
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
|
||||||
|
# CONFIG_MTRR_SANITIZER is not set
|
||||||
|
CONFIG_EFI=y
|
||||||
|
CONFIG_HZ_100=y
|
||||||
|
CONFIG_KEXEC=y
|
||||||
|
CONFIG_CRASH_DUMP=y
|
||||||
|
CONFIG_HIBERNATION=y
|
||||||
|
CONFIG_PM_DEBUG=y
|
||||||
|
CONFIG_PM_TRACE_RTC=y
|
||||||
|
CONFIG_ACPI_DOCK=y
|
||||||
|
CONFIG_ACPI_CONTAINER=y
|
||||||
|
CONFIG_CPU_FREQ=y
|
||||||
|
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||||
|
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||||
|
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||||
|
CONFIG_X86_INTEL_PSTATE=y
|
||||||
|
CONFIG_X86_ACPI_CPUFREQ=y
|
||||||
|
CONFIG_PCIEPORTBUS=y
|
||||||
|
CONFIG_PCI_MSI=y
|
||||||
|
CONFIG_PCI_DEBUG=y
|
||||||
|
CONFIG_HOTPLUG_PCI=y
|
||||||
|
CONFIG_PCCARD=y
|
||||||
|
CONFIG_YENTA=y
|
||||||
|
CONFIG_BINFMT_MISC=y
|
||||||
|
CONFIG_NET=y
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_XFRM_USER=y
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_MULTICAST=y
|
||||||
|
CONFIG_IP_ADVANCED_ROUTER=y
|
||||||
|
CONFIG_IP_MULTIPLE_TABLES=y
|
||||||
|
CONFIG_IP_ROUTE_MULTIPATH=y
|
||||||
|
CONFIG_IP_ROUTE_VERBOSE=y
|
||||||
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
CONFIG_IP_PNP_RARP=y
|
||||||
|
CONFIG_IP_MROUTE=y
|
||||||
|
CONFIG_IP_PIMSM_V1=y
|
||||||
|
CONFIG_IP_PIMSM_V2=y
|
||||||
|
CONFIG_SYN_COOKIES=y
|
||||||
|
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||||
|
# CONFIG_INET_DIAG is not set
|
||||||
|
CONFIG_TCP_CONG_ADVANCED=y
|
||||||
|
# CONFIG_TCP_CONG_BIC is not set
|
||||||
|
# CONFIG_TCP_CONG_WESTWOOD is not set
|
||||||
|
# CONFIG_TCP_CONG_HTCP is not set
|
||||||
|
CONFIG_TCP_MD5SIG=y
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
CONFIG_NETWORK_SECMARK=y
|
||||||
|
CONFIG_NET_SCHED=y
|
||||||
|
CONFIG_NET_EMATCH=y
|
||||||
|
CONFIG_NET_CLS_ACT=y
|
||||||
|
CONFIG_DNS_RESOLVER=y
|
||||||
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_NET_9P=y
|
||||||
|
CONFIG_NET_9P_VIRTIO=y
|
||||||
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
|
CONFIG_DEBUG_DEVRES=y
|
||||||
|
CONFIG_CONNECTOR=y
|
||||||
|
# CONFIG_PNP_DEBUG_MESSAGES is not set
|
||||||
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
CONFIG_SCSI_SPI_ATTRS=y
|
||||||
|
# CONFIG_SCSI_LOWLEVEL is not set
|
||||||
|
CONFIG_ATA=y
|
||||||
|
# CONFIG_ATA_VERBOSE_ERROR is not set
|
||||||
|
CONFIG_SATA_AHCI=y
|
||||||
|
CONFIG_ATA_PIIX=y
|
||||||
|
CONFIG_PATA_AMD=y
|
||||||
|
CONFIG_PATA_OLDPIIX=y
|
||||||
|
CONFIG_PATA_SCH=y
|
||||||
|
CONFIG_PATA_MPIIX=y
|
||||||
|
CONFIG_ATA_GENERIC=y
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
CONFIG_NETCONSOLE=y
|
||||||
|
CONFIG_VIRTIO_NET=y
|
||||||
|
# CONFIG_ETHERNET is not set
|
||||||
|
CONFIG_PHYLIB=y
|
||||||
|
# CONFIG_WLAN is not set
|
||||||
|
CONFIG_INPUT_POLLDEV=y
|
||||||
|
CONFIG_INPUT_SPARSEKMAP=y
|
||||||
|
CONFIG_INPUT_EVDEV=y
|
||||||
|
CONFIG_INPUT_JOYSTICK=y
|
||||||
|
CONFIG_INPUT_TABLET=y
|
||||||
|
CONFIG_INPUT_TOUCHSCREEN=y
|
||||||
|
CONFIG_INPUT_MISC=y
|
||||||
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
CONFIG_SERIAL_NONSTANDARD=y
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_8250_NR_UARTS=32
|
||||||
|
CONFIG_SERIAL_8250_EXTENDED=y
|
||||||
|
CONFIG_SERIAL_8250_MANY_PORTS=y
|
||||||
|
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
|
CONFIG_SERIAL_8250_DETECT_IRQ=y
|
||||||
|
CONFIG_SERIAL_8250_RSA=y
|
||||||
|
CONFIG_HW_RANDOM=y
|
||||||
|
CONFIG_NVRAM=y
|
||||||
|
CONFIG_HPET=y
|
||||||
|
# CONFIG_HPET_MMAP is not set
|
||||||
|
CONFIG_I2C_I801=y
|
||||||
|
CONFIG_PTP_1588_CLOCK=y
|
||||||
|
CONFIG_WATCHDOG=y
|
||||||
|
CONFIG_AGP=y
|
||||||
|
CONFIG_AGP_AMD64=y
|
||||||
|
CONFIG_AGP_INTEL=y
|
||||||
|
CONFIG_DRM=y
|
||||||
|
CONFIG_DRM_I915=y
|
||||||
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
|
CONFIG_FB_TILEBLITTING=y
|
||||||
|
CONFIG_FB_EFI=y
|
||||||
|
# CONFIG_LCD_CLASS_DEVICE is not set
|
||||||
|
CONFIG_VGACON_SOFT_SCROLLBACK=y
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
CONFIG_LOGO=y
|
||||||
|
# CONFIG_LOGO_LINUX_MONO is not set
|
||||||
|
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||||
|
CONFIG_HIDRAW=y
|
||||||
|
CONFIG_HID_A4TECH=y
|
||||||
|
CONFIG_HID_APPLE=y
|
||||||
|
CONFIG_HID_BELKIN=y
|
||||||
|
CONFIG_HID_CHERRY=y
|
||||||
|
CONFIG_HID_CHICONY=y
|
||||||
|
CONFIG_HID_CYPRESS=y
|
||||||
|
CONFIG_HID_EZKEY=y
|
||||||
|
CONFIG_HID_GYRATION=y
|
||||||
|
CONFIG_HID_ITE=y
|
||||||
|
CONFIG_HID_KENSINGTON=y
|
||||||
|
CONFIG_HID_LOGITECH=y
|
||||||
|
CONFIG_LOGITECH_FF=y
|
||||||
|
CONFIG_HID_MICROSOFT=y
|
||||||
|
CONFIG_HID_MONTEREY=y
|
||||||
|
CONFIG_HID_PANTHERLORD=y
|
||||||
|
CONFIG_PANTHERLORD_FF=y
|
||||||
|
CONFIG_HID_PETALYNX=y
|
||||||
|
CONFIG_HID_SAMSUNG=y
|
||||||
|
CONFIG_HID_SUNPLUS=y
|
||||||
|
CONFIG_HID_TOPSEED=y
|
||||||
|
# CONFIG_USB_SUPPORT is not set
|
||||||
|
CONFIG_NEW_LEDS=y
|
||||||
|
CONFIG_LEDS_CLASS=y
|
||||||
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
|
CONFIG_EDAC=y
|
||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
# CONFIG_RTC_HCTOSYS is not set
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_VIRTIO_PCI=y
|
||||||
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
|
||||||
|
# CONFIG_X86_PLATFORM_DEVICES is not set
|
||||||
|
CONFIG_DAX=y
|
||||||
|
CONFIG_EFI_VARS=y
|
||||||
|
CONFIG_AUTOFS4_FS=y
|
||||||
|
CONFIG_FSCACHE=y
|
||||||
|
CONFIG_CACHEFILES=y
|
||||||
|
CONFIG_ISO9660_FS=y
|
||||||
|
CONFIG_JOLIET=y
|
||||||
|
CONFIG_ZISOFS=y
|
||||||
|
# CONFIG_PROC_VMCORE is not set
|
||||||
|
CONFIG_TMPFS_POSIX_ACL=y
|
||||||
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
|
CONFIG_9P_FS=y
|
||||||
|
CONFIG_9P_FSCACHE=y
|
||||||
|
CONFIG_9P_FS_POSIX_ACL=y
|
||||||
|
CONFIG_NLS_DEFAULT="utf8"
|
||||||
|
CONFIG_NLS_CODEPAGE_437=y
|
||||||
|
CONFIG_NLS_ASCII=y
|
||||||
|
CONFIG_NLS_ISO8859_1=y
|
||||||
|
CONFIG_NLS_UTF8=y
|
||||||
|
CONFIG_PRINTK_TIME=y
|
||||||
|
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||||
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
|
CONFIG_DEBUG_STACK_USAGE=y
|
||||||
|
CONFIG_DEBUG_STACKOVERFLOW=y
|
||||||
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
CONFIG_SCHEDSTATS=y
|
||||||
|
CONFIG_RCU_TRACE=y
|
||||||
|
CONFIG_BLK_DEV_IO_TRACE=y
|
||||||
|
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
|
||||||
|
CONFIG_EARLY_PRINTK_DBGP=y
|
||||||
|
CONFIG_DEBUG_BOOT_PARAMS=y
|
||||||
|
CONFIG_OPTIMIZE_INLINING=y
|
||||||
|
CONFIG_KEYS=y
|
||||||
|
CONFIG_SECURITY=y
|
||||||
|
CONFIG_SECURITY_NETWORK=y
|
||||||
|
CONFIG_CRYPTO_RSA=y
|
||||||
|
CONFIG_CRYPTO_AUTHENC=y
|
||||||
|
CONFIG_CRYPTO_CCM=y
|
||||||
|
CONFIG_CRYPTO_GCM=y
|
||||||
|
CONFIG_CRYPTO_ECHAINIV=y
|
||||||
|
CONFIG_CRYPTO_CBC=y
|
||||||
|
CONFIG_CRYPTO_CMAC=y
|
||||||
|
CONFIG_CRYPTO_CRC32C=y
|
||||||
|
CONFIG_CRYPTO_SHA1=y
|
||||||
|
CONFIG_CRYPTO_AES_586=y
|
||||||
|
CONFIG_CRYPTO_ARC4=y
|
||||||
|
CONFIG_CRYPTO_DES=y
|
||||||
|
CONFIG_ASYMMETRIC_KEY_TYPE=y
|
||||||
|
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
|
||||||
|
CONFIG_X509_CERTIFICATE_PARSER=y
|
||||||
|
CONFIG_PKCS7_MESSAGE_PARSER=y
|
||||||
|
CONFIG_SYSTEM_TRUSTED_KEYRING=y
|
||||||
|
# CONFIG_VIRTUALIZATION is not set
|
||||||
|
CONFIG_CRC_CCITT=y
|
||||||
|
CONFIG_CRC16=y
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Run after buildroot has built the image, and path to the built
|
||||||
|
# output/image dir is passed as first arg. We copy the built ISO
|
||||||
|
# out of the container.
|
||||||
|
cp ${BINARIES_DIR}/rootfs.iso9660 /build/v86-linux.iso
|
||||||
|
echo "Created v86-linux.iso."
|
||||||
|
|
||||||
|
# Prepare license info. Start with Seabios, then buildroot's
|
||||||
|
wget https://raw.githubusercontent.com/coreboot/seabios/master/COPYING.LESSER \
|
||||||
|
-O ${BASE_DIR}/SeaBIOS_COPYING.LESSER
|
||||||
|
tar czvf /build/licenses.tar.gz \
|
||||||
|
${BASE_DIR}/SeaBIOS_COPYING.LESSER \
|
||||||
|
${BASE_DIR}/legal-info/buildroot.config \
|
||||||
|
${BASE_DIR}/legal-info/host-licenses \
|
||||||
|
${BASE_DIR}/legal-info/licenses
|
||||||
|
echo "Created licenses.tar.gz"
|
|
@ -0,0 +1,10 @@
|
||||||
|
# <file system> <mount pt> <type> <options> <dump> <pass>
|
||||||
|
/dev/root / ext2 rw,noauto 0 1
|
||||||
|
proc /proc proc defaults 0 0
|
||||||
|
devpts /dev/pts devpts defaults,gid=5,mode=620,ptmxmode=0666 0 0
|
||||||
|
tmpfs /dev/shm tmpfs mode=0777 0 0
|
||||||
|
tmpfs /tmp tmpfs mode=1777 0 0
|
||||||
|
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
|
||||||
|
sysfs /sys sysfs defaults 0 0
|
||||||
|
# Plan 9 Filer/IndexedDB browser filesystem on /mount
|
||||||
|
host9p /mnt 9p trans=virtio,version=9p2000.L,rw 0 0
|
|
@ -0,0 +1,40 @@
|
||||||
|
# XXX: updated to add ttyS0 terminal and autologin.
|
||||||
|
#
|
||||||
|
# /etc/inittab
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
|
||||||
|
#
|
||||||
|
# Note: BusyBox init doesn't support runlevels. The runlevels field is
|
||||||
|
# completely ignored by BusyBox init. If you want runlevels, use
|
||||||
|
# sysvinit.
|
||||||
|
#
|
||||||
|
# Format for each entry: <id>:<runlevels>:<action>:<process>
|
||||||
|
#
|
||||||
|
# id == tty to run on, or empty for /dev/console
|
||||||
|
# runlevels == ignored
|
||||||
|
# action == one of sysinit, respawn, askfirst, wait, and once
|
||||||
|
# process == program to run
|
||||||
|
|
||||||
|
# Startup the system
|
||||||
|
::sysinit:/bin/mount -t proc proc /proc
|
||||||
|
::sysinit:/bin/mount -o remount,rw /
|
||||||
|
::sysinit:/bin/mkdir -p /dev/pts
|
||||||
|
::sysinit:/bin/mkdir -p /dev/shm
|
||||||
|
::sysinit:/bin/mount -a
|
||||||
|
::sysinit:/bin/hostname -F /etc/hostname
|
||||||
|
# now run any rc scripts
|
||||||
|
::sysinit:/etc/init.d/rcS
|
||||||
|
|
||||||
|
# Put a getty on the serial port
|
||||||
|
console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
|
||||||
|
|
||||||
|
# Auto-login as root on ttyS0
|
||||||
|
::respawn:/sbin/getty ttyS0 38400 xterm -n -l /bin/sh
|
||||||
|
|
||||||
|
# Stuff to do for the 3-finger salute
|
||||||
|
#::ctrlaltdel:/sbin/reboot
|
||||||
|
|
||||||
|
# Stuff to do before rebooting
|
||||||
|
::shutdown:/etc/init.d/rcK
|
||||||
|
::shutdown:/sbin/swapoff -a
|
||||||
|
::shutdown:/bin/umount -a -r
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Build our v86 defconfig along with license files.
|
||||||
|
echo $PWD
|
||||||
|
make BR2_EXTERNAL=/buildroot-v86 v86_defconfig \
|
||||||
|
&& make legal-info \
|
||||||
|
&& make
|
|
@ -0,0 +1,15 @@
|
||||||
|
BR2_x86_pentiumpro=y
|
||||||
|
BR2_CCACHE=y
|
||||||
|
BR2_KERNEL_HEADERS_4_15=y
|
||||||
|
BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_v86_PATH)/board/v86/rootfs_overlay/"
|
||||||
|
BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_v86_PATH)/board/v86/post-image.sh"
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_v86_PATH)/board/v86/linux.config"
|
||||||
|
BR2_TARGET_ROOTFS_INITRAMFS=y
|
||||||
|
BR2_TARGET_ROOTFS_ISO9660=y
|
||||||
|
BR2_TARGET_SYSLINUX=y
|
||||||
|
|
||||||
|
# If you want to add the nled editor, uncomment NLED + NCURSES
|
||||||
|
#BR2_PACKAGE_NCURSES=y
|
||||||
|
#BR2_PACKAGE_NLED=y
|
|
@ -0,0 +1,2 @@
|
||||||
|
name: v86
|
||||||
|
desc: Customized image for running in browser with v86
|
|
@ -0,0 +1 @@
|
||||||
|
include $(sort $(wildcard $(BR2_EXTERNAL_v86_PATH)/package/*/*.mk))
|
|
@ -0,0 +1,5 @@
|
||||||
|
config BR2_PACKAGE_NLED
|
||||||
|
bool "nled"
|
||||||
|
select BR2_PACKAGE_NCURSES
|
||||||
|
help
|
||||||
|
The Neat Little Editor (NLED) https://cdot.senecacollege.ca/software/nled/
|
|
@ -0,0 +1 @@
|
||||||
|
sha256 cf0f95edc8d399e883e38baf51f6a0cea9516761be36e75e8f14943667f7af29 nled_2_52_src.tgz
|
|
@ -0,0 +1,36 @@
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# nled
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
NLED_VERSION = 2.52
|
||||||
|
NLED_SITE = https://cdot.senecacollege.ca/software/nled
|
||||||
|
NLED_SOURCE = nled_2_52_src.tgz
|
||||||
|
NLED_LICENSE = GPL-2.0+
|
||||||
|
NLED_INSTALL_STAGING = YES
|
||||||
|
NLED_DEPENDENCIES = ncurses
|
||||||
|
|
||||||
|
# We need to override the C compiler used in the Makefile to
|
||||||
|
# use buildroot's cross-compiler instead of cc. Switch cc to $(CC)
|
||||||
|
# so we can override the variable via env vars.
|
||||||
|
define NLED_MAKEFILE_FIXUP
|
||||||
|
$(SED) 's/cc $$(CCOPTIONS)/$$(CC) -static $$(CPPFLAGS) $$(CFLAGS) -c/g' $(@D)/Makefile
|
||||||
|
$(SED) 's/cc -o/$$(CC) $$(LDFLAGS) -o/g' $(@D)/Makefile
|
||||||
|
endef
|
||||||
|
|
||||||
|
NLED_PRE_BUILD_HOOKS += NLED_MAKEFILE_FIXUP
|
||||||
|
|
||||||
|
define NLED_BUILD_CMDS
|
||||||
|
$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) LDOPTIONS="-lncurses" LIBS="$(TARGET_CFLAGS) -lncurses"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define NLED_INSTALL_TARGET_CMDS
|
||||||
|
$(INSTALL) -D -m 0755 $(@D)/nled $(TARGET_DIR)/usr/bin/nled
|
||||||
|
endef
|
||||||
|
|
||||||
|
define NLED_INSTALL_STAGING_CMDS
|
||||||
|
$(INSTALL) -D -m 0755 $(@D)/nled $(STAGING_DIR)/usr/bin/nled
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(generic-package))
|
Loading…
Reference in New Issue