Skip to content

kevinvandervlist/jslinuxstorage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.