Skip to content
JavaScript C Shell
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
scripts
simpleblock
storage
.gitignore
.htaccess
COPYING
README
cache.manifest
cpux86-ta.js
cpux86.js
emulator.html
emulator_original_disk.html
index.html
jslinux.js
jslinux_original_disk.js
linuxstart.bin
root.bin
root.ext2
simpleblockdevice-kernel-3-0-4.patch
simpleblockdevice.config
simpleblockdevice.js
storage.js
stringbuilder.js
term.js
vmlinux-3.0.4-simpleblock.bin

README

First of all, only these files in this archive are released under the terms of the GPL. 
The following files, published on the demonstration website, _DO NOT_ fall under 
these terms. I only have permission from Fabrice Bellard to host them.

	cpux86-ta.js
	term.js
	
These files are created and licensed by Fabrice Bellard (http://bellard.org/jslinux).



This project allows the virtual machine to access a persistent block device. This means 
a user can format and partition this device inside it's virtual machine. Because this disk
is then stored in the HTML5 local storage, a return to the emulator's web page allows a 
user to reopen the block device. All data stored on the disk can therefore be read again.

Schematically, the process works in the following way:

A block device driver is added to the Linux kernel. This allows a user to operate with 
a 'device' written in JavaScript. This device is bound to the virtual machine using the 
same I/O ports as a floppy disk. The device driver itself uses a temporary testing major 
device node, id 250. Theoretically, it allows dynamic device node allocation, but I have
not tested this.

On the JavaScript side, a lot of caching occurs because the local storage interface is 
quite slow. I therefore decided to cache the total 'disk' in memory, because it's about
1M anyway. Writes are cached as well, and are 'flushed' once the driver has transferred
a complete sector. 

For more details, see the source code.
Something went wrong with that request. Please try again.