Initial commit, based on prev work in https://github.com/humphd/next
This commit is contained in:
		
							parent
							
								
									06c54ce9b4
								
							
						
					
					
						commit
						93c360f79b
					
				
					 17 changed files with 657 additions and 3 deletions
				
			
		
							
								
								
									
										5
									
								
								.dockerignore
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.dockerignore
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
dist/*
 | 
			
		||||
 | 
			
		||||
.gitignore
 | 
			
		||||
LICENSE
 | 
			
		||||
README.md
 | 
			
		||||
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
dist/
 | 
			
		||||
							
								
								
									
										51
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								Dockerfile
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2019 David Humphrey
 | 
			
		||||
Copyright (c) 2018-2019 David Humphrey
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										202
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										202
									
								
								README.md
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,2 +1,200 @@
 | 
			
		|||
# browser-vm
 | 
			
		||||
A small Linux x86 VM meant for use in the browser
 | 
			
		||||
# Browser VM
 | 
			
		||||
 | 
			
		||||
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`.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								buildroot-v86/Config.in
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								buildroot-v86/Config.in
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
source "$BR2_EXTERNAL_v86_PATH/package/nled/Config.in"
 | 
			
		||||
							
								
								
									
										263
									
								
								buildroot-v86/board/v86/linux.config
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								buildroot-v86/board/v86/linux.config
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										17
									
								
								buildroot-v86/board/v86/post-image.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								buildroot-v86/board/v86/post-image.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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"
 | 
			
		||||
							
								
								
									
										10
									
								
								buildroot-v86/board/v86/rootfs_overlay/etc/fstab
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								buildroot-v86/board/v86/rootfs_overlay/etc/fstab
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										40
									
								
								buildroot-v86/board/v86/rootfs_overlay/etc/inittab
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								buildroot-v86/board/v86/rootfs_overlay/etc/inittab
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										8
									
								
								buildroot-v86/build-v86.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								buildroot-v86/build-v86.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										15
									
								
								buildroot-v86/configs/v86_defconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								buildroot-v86/configs/v86_defconfig
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
							
								
								
									
										2
									
								
								buildroot-v86/external.desc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								buildroot-v86/external.desc
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,2 @@
 | 
			
		|||
name: v86
 | 
			
		||||
desc: Customized image for running in browser with v86
 | 
			
		||||
							
								
								
									
										1
									
								
								buildroot-v86/external.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								buildroot-v86/external.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
include $(sort $(wildcard $(BR2_EXTERNAL_v86_PATH)/package/*/*.mk))
 | 
			
		||||
							
								
								
									
										5
									
								
								buildroot-v86/package/nled/Config.in
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								buildroot-v86/package/nled/Config.in
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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/
 | 
			
		||||
							
								
								
									
										1
									
								
								buildroot-v86/package/nled/nled.hash
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								buildroot-v86/package/nled/nled.hash
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
sha256 cf0f95edc8d399e883e38baf51f6a0cea9516761be36e75e8f14943667f7af29 nled_2_52_src.tgz
 | 
			
		||||
							
								
								
									
										36
									
								
								buildroot-v86/package/nled/nled.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								buildroot-v86/package/nled/nled.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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…
	
	Add table
		
		Reference in a new issue