Giter Site home page Giter Site logo

runtimejs / runtime Goto Github PK

View Code? Open in Web Editor NEW
1.9K 83.0 128.0 112.22 MB

[not maintained] Lightweight JavaScript library operating system for the cloud

Home Page: http://runtimejs.org

License: Apache License 2.0

Shell 0.01% C++ 88.16% JavaScript 10.53% Assembly 1.00% C 0.07% Python 0.21% Dockerfile 0.03%

runtime's Introduction

Project is not maintained, use at your own risk

There is a project at runtimejs-comm/runtime that is looking to continue by maintaining a fork. Visit the repository on Github for more details.

runtime.js

Build Status npm Gem Travis

runtime.js is an open-source library operating system (unikernel) for the cloud that runs JavaScript, can be bundled up with an application and deployed as a lightweight and immutable VM image.

It's built on V8 JavaScript engine and uses event-driven and non-blocking I/O model inspired by Node.js. At the moment KVM is the only supported hypervisor.

It tries to be compatible with npm module ecosystem and supports some of the Node.js API.

WARNING: project is in development and not ready for production use.

Installation

First thing is the command line tool runtime-cli, it will add runtime command to the shell. Type runtime to get full usage help.

npm install runtime-cli -g

Make sure QEMU is installed, it enables running applications locally.

brew install qemu           # OSX
sudo apt-get install qemu   # Ubuntu

Getting Started

Create new project and add index.js entry point file:

mkdir project
cd project
npm init
npm install runtimejs --save
echo "console.log('ok')" > index.js

Run project locally in QEMU:

runtime start

That's it, it should start and print ok in the console.

Optionally you can let it watch directory for changes and restart QEMU automatically:

runtime watch

How does it work?

There are two main components: operating system kernel and a JavaScript library.

The kernel is written in C++ and manages low-level resources like CPU and memory, runs JavaScript using embedded V8 engine. Library drives the entire system and manages hardware devices (usually virtualized by hypervisor).

Docs

API docs

Community

Modules and projects developed by the community for runtime.js

License

Apache License, Version 2.0

runtime's People

Contributors

austinfrey avatar facekapow avatar gitter-badger avatar iefserge avatar kesla avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

runtime's Issues

Inter-isolate streams

Idea: in addition to RPC function calls implement inter-isolate object streams. Useful to implement proper data flow between applications with less overhead than function calls.

Maybe something like this:

Isolate 1

// create stream with 10 object slots
var stream = isolate.createStream({size: 10});
// .. pass stream to other isolate as regular object

// push can throw if stream buffer is full
// when receiver is unable to process data that fast
// so there is a check
if (stream.canPush()) {
  stream.push({a: 'value'});
}

Isolate 2

// read available data from stream buffer (once)
var maxCount = 10; // 0 = all elements
stream.pull(maxCount, function(type, dataArray) { ... })
// or
stream.pull(maxCount).then(function(type, dataArray) { ... })

Type variable one of { 'data', 'error', 'end' }. In case of error dataArray variable contains error object.
When Isolate 2 is ready to receive more data it can call stream.pull() again.

Unable to load /system/startup.js from initrd

I'm getting this error when trying to start

image

jacob-mbp:runtime jacob$ ./qemu.sh
Unable to load /system/startup.js from initrd.
Kernel error: abort() requested

Details

jacob-mbp:runtime jacob$ git rev-parse HEAD
d81f9ec641bb84e6713ae2ad8de29e1e54c65f4d
jacob-mbp:runtime jacob$ docker -v
Docker version 1.0.1, build 990021a

TODO checklist

I'll use this issue as tasks checklist.
Let me know if you want to hack on something from this list or anything else :)

Network stack:

  • Cleanup network stack / architecture
  • Basic virtio-net driver
  • Test virtio-net driver under high load
  • Add sent callbacks
  • Ethernet transfer packet queue
  • Routing table, route program
  • UDP protocol
  • UDP multicast
  • Implement DHCP protocol
  • Zero-copy receive (payload+headers), ArrayBuffer resize
  • Network ARP requests / reply and caching / announce
  • Full IPv4 packet parser
  • Implement TCP protocol
  • Implement ICMP protocol, respond to pings, ping program
  • Define low-level socket API for applications
  • Implement DNS client
  • Implement DNS server
  • Implement IPv4 fragmentation / do not fragment
  • Loopback interface
  • Packet statistics

Timers:

Network tools:

  • HTTP protocol
  • Web server
  • Benchmark DNS server under high load

Build system:

  • Update Dockerfile script gcc version

Threading:

  • Add native threads support (for v8 worker GC sweeper threads)
  • Idle thread should call asm('hlt')
  • Fix CPU usage on KVM
  • CFS scheduler

Tests:

  • Add test framework

runtime.tty.print(): little problem

This is an issue I discovered while working with runtime-node-net. runtime's runtime.tty.print() function only accepts strings. You'd at least expect an error when given something else, but no. I tried printing an integer an nothing happened, no errors, nothing. Calling toString() on the number printed it. So I propose that the function should call toString() on the argument, which i'm believe is what console.log() does.

Kernel APIs

Here is the current version of kernel APIs (global functions available to all programs):

  • runtime.args() - get program arguments. Returns object like
{
  data: { ... }
  env: { ... }
  system: { ... }
}

Includes all data available to program. Where:
data - data provided by parent program
env - environment provided by parent program (usually inherited). For example, standard streams are part of the environment. (env.stdout, env.stderr, env.stdin)
system - environment provided by kernel (according to program access level, system services like filesystem, network, etc). For example, each program is chrooted to directory where it's *.js file is located, so it gets it's own accessor object system.fs.current (not inherited from parent).

  • runtime.exit([value]) - exit program and return optional value to parent program
  • runtime.log([args,...]) - write to kernel log (console.log writes to stdout by default)
  • runtime.version() - get system version

If you have any comments or suggestions, we can discuss it here.

UPDATED (latest version):

  • isolate.data - data provided by parent program
  • isolate.env - environment provided by parent program
  • isolate.system - environment provided by kernel
  • isolate.exit() - exit program
  • isolate.log() - write to kernel log
  • kernel.version() - get system version

VFS filesystem layer

Implement VFS filesystem layer. Provide access to initrd filesystem, mount to /initrd.

IRC Channel?

Is there an IRC channel?

A few js/node-related os channels exist, so you can piggyback if you like, but starting your own would also be good. So far there's:

  • #anarchyos
  • #node-os

Built-In Commands

How about some built-in, necessary shell commands? help (extremely needed), echo (really easy to impl.), ping (like the default 1, but customizable), clear, exit/shutdown/reboot etc...

I've already been able to implement all of these except for clear.

I think they would be useful.

AOT compiling

Would AOT/compilation be planned for runtimejs? I would find it a great feature for an iteration of JS.

Runtimeify: Add extra files?

How do I embed extra, non-js files into the initrd created by runtimeify?
Can I add a folder? If runtimeify can't do this, can I edit the initrd manually and add it myself?

Learning the basics

Hey there,

I'm sorry to ask this, little of topic question, but I'm fascinated by this project, and I would love to contribute (code, documentation, support, whatever), but I don't know how. I'm not capable of developing on such a low level, but I want to learn it (at least try it).

I searched the internet, but I found no good source... So, even though you guys have better things to do, I would like to ask YOU: How to learn so low level things? How to learn the basics of a boot or init system code, to understand the very own code boot (and manage) a system?

I know a lot of things, I think I know a lot of important things as well, but I don't know how to connect it all, and I don't know where to learn it...

I hope you can help me a little out.

Support ARM

It appears the primary reason to only target x86_64 is to use Docker as a development tool. While I've only started digging in it appears the deps can mostly be built for ARM. *ACPCIA Used an x86 specific call (wbinvd) which I just changed to nop

With just the one change to the code I can get about 84% (very scientific finding) of the code to build. The only other changes are to SConstruct and ./deps/SConstruct in regards to target process and some includes.

So guess this is a question of why only target x86_64? This is great for cloud computing but I am personally interested in exploring something like Runtime on mobile.

Inclusion of linux kernel modules

Since it would be extremely difficult to write our own drivers for everything, being able to use the existing linux modules would be really beneficial.

Hypervisor

Hello, sorry for a bit stupid question, I just started to learn runtime.js.

My question is - is it difficult to write hypervisor with runtime.js?
All what I need is convinient "wrapper" for distributed virtualization system and tool which will allow to create in comparatively easy way RDP or VNC-like protocol.

I know that cloud systems is very popular now on server-side, but my idea is to connect mobile devices like smartphones, tablets and laptops in one personal cloud, or personal computing network, which will allow to run different OSes and applications. The main goal - is to combine computing performance of each device and to make one computer from all this stuff with help of network GUI access to each of them from one GUI terminal.

It is also can be usefull for server-side javascript programming, of course, but first I interested in personal application - when each new (actually - old) device like smartphone or tablet can be connected to this personal cloud and increase its computing performance.

I've experimented a bit with Android LinuxDeploy, VNC and few smartphones and tablets - it looks nice. Each VNC session looks just like additional dashboard and all data can be shared via network disks. But it looks a bit like frankenstain, and may be runtime.js can provide suitable tool for creating this system with all it's components on low level with relatively small efforts?

P.S. I know about current ARM limitations - it's not a critical issue because Intel start to promote it's atom platform and there is a particular number of tablets and smartphones with i386 architecture already available.

Reconfigurable hardware platform support

Sorry, if this is an offtopic, i'll move it to maillist if it's so. This is just common suggestions about "full metal runtime.js/nodejs" related to this #42 and this #43 issues.

Besides all features we all like JS because it is dynamic language. We can modify runtime environment during programm execution, create functionality on the fly, modify it, pass functions as parameters to the functions and so on. And now JS-driven technologies comes close to hardware layer of computing systems. Why not to try to combine dynamic software with dynamic hardware? I mean such technologies as FPGA (Field-programmable gate array) and PSoC (Programmable System on a Chip) i.e. Reconfigurable computing.

First I would like to quotate article about Intel experience in using combined server systems with Intel Xeon and FPGA modules: Intel unveils new Xeon chip with integrated FPGA, touts 20x performance boost.

Late yesterday, Intel quietly announced one of the biggest ever changes to its chip lineup: It will soon offer a new type of Xeon CPU with an integrated FPGA. This new Xeon+FPGA chip will fit in the standard E5 LGA2011 socket, but the integrated FPGA will allow each chip to be customized to specific workloads.

What’s the purpose of this new Xeon+FPGA product? In the words of Intel: “The FPGA provides our customers a programmable, high performance coherent acceleration capability to turbo-charge their critical algorithms.” Intel estimates that the Xeon+FPGA will see massive performance boosts in the 20x range (for code executed on the FPGA instead of a conventional x86 CPU — but obviously there will be big overall speedups as bottlenecks are removed. The other advantage is that workloads change — so if your critical algorithms change, or your whole company pivots, the FPGA can be repurposed without having to buy lots of new hardware.

So, for server applications this approach shows very good experimental results. With help of reconfigurable and programmable hardware we can implement device drivers, media codecs, network protocols, OS modules, crytical applications algorythms, additional devices and many other things.

Probably it is possible to make even "full-metal" V8 engine as CPU core, but probably this has no much sense, because hardware processor and dynamic interpreter is quite different things. I've herd about hardware implementations of systems like Forth, for example (it is also programming language, interpreter and operating system in one), when forth interpreter implemented as CPU core, but, looks like this is not very popular application. So it is possible to use all power of programmable MPSoCs in combination with compiled V8 core and additional core and applications modules, implemented programmatically or as a hard logic (as additional PCI devices, for example, or as modules with direct access to builtin CPU cores cache).

Intel used in their combined systems FPGA from Altera. As I can see more suitable for runtime.js system is All Programmable MPSoCs from Xilinx.

image

There are two series of Programmable SoCs form Xilinx: currently available Zynq-7000 AP SoC and newest series - Zynq® UltraScale+™ MPSoC. The short description with architectures schemas of UltraScale can be found in this article - Xilinx Introduces Zynq UltraScale+ MPSoC with Cortex A53 & R5 Cores, Ultrascale FPGA, technical details can be found here Zynq UltraScale+ MPSoC
Product Tables and Product Selection Guide

Here I'll describe in details some Zynq-7000 applications.

Common schema of Xilinx ultrascale architecture:

image

Zynq-7000 All Programmable SoC Overview

A high-level block diagram of the Zynq-7000 AP SoC is shown in Figure:

zynq-7000

Each ARM Cortex-A9 processor has two 32 KB built-in level-1 caches for instructions and data, respectively. Another 512 KB on-chip level-2 cache is shared by the two processors. The snoop control unit (SCU) maintains the coherency of the caches in the two processors. The interconnection between the processor system and programmable logic is achieved through nine distinct AXI ports. The S_AXI_GP slave ports are typically used by the programmable logic that needs to access the processor system peripherals, while the M_AXI_GP master ports are mainly used by the processor system to access the register maps built in the programmable logic. The S_AXI_HP slave ports provide an efficient way for the programmable logic to access an external DDR memory or the 256 KB on-chip memory, while, for latency sensitive applications, the accelerator coherent port S_AXI_ACP offers direct accesses to the caches via the SCU. For a more detailed description of the Zynq-7000 AP SoC.

Wireless Base Station ZUC Block Cipher Implementation on Zynq-7000 AP SoC

This AP SoCs now available as SoM (System on Module) from Avnet - Zynq-7000 All Programmable SoC Systems:

image

From my point of view the most suitable for small cloud-enabled server module for runtime.js is MicroZed:

MicroZed™ is a low-cost System-On-Module, or SOM that is based on the Xilinx Zynq®-7000 All Programmable (AP) SoC. In addition to the Zynq-7000 AP SoC, the module contains the common functions and interfaces required to support the core of most SoC designs, including memory, configuration, Ethernet, USB, and clocks. On the bottom side of the module, MicroZed contains two 100-pin I/O headers that provide connection to two I/O banks on the programmable logic (PL) side of the Zynq-7000 AP SoC device. When plugged onto a user designed baseboard or carrier card, these 100-pin connectors provide connectivity between the Zynq-7000 AP SoC PL I/Os and the user circuits on the carrier card. MicroZed also includes onboard power regulation that can support a single 5 V to 12 V input.

image

Key Features
  • SoC
    • XC7Z010-1CLG400 or XC7Z020-1CLG400
  • Memory
    • 1 GB of DDR3 SDRAM
    • 128 Mb of QSPI Flash
    • Micro SD card interface
  • Communications
    • 10/100/1000 Ethernet
    • USB 2.0
    • USB-UART
  • User I/O (via dual board-to-board connectors)
    • 7Z010 Version: 100 User I/O (50 per connector) Configurable as up to 48 LVDS pairs or 100 single-ended I/O
    • 7Z020 Version: 115 User I/O (58/57 per connector) Configurable as up to 55 LVDS pairs or 115 single-ended I/O
  • Other
    • 2x6 Digilent Pmod® compatible interface providing 8 PS MIO connections for user I/O
    • Xilinx PC4 JTAG configuration port
    • PS JTAG pins accessible via Pmod or I/O headers
    • 33.33 MHz oscillator
    • User LED and push switch
  • Software
    • Linux BSP and reference design
  • Mechanical
    • 4 inches x 2.25 inches (102 mm x 57 mm)

I think this could be very intresting perspective direction of porting runtime.js and nodejs/nodeos, because due to reconfigurable (dynamic) properties of this hardware it is possible to achieve very interesting results in server system performance, similar to Intel's ones.

Zynq-7000 contains Dual-Core 32-bit ARM Cortex-A9, Zynq UltraSCALE carries Quad-Core 64-bit ARM Cortex -A53.

scons error in docker-build.sh

Will take a crack at trying to figure out myself, but thought maybe someone knew how to quickly fix this.

$ ./docker-build.sh

scons: *** No SConstruct file found.
File "/usr/lib/python2.7/site-packages/SCons/Script/Main.py", line 920, in _main

runtime.shell.runCommand(): Not using args in object parameter

When you pass an object as the second parameter to runCommand, the args option in it is not used. I believe the problem is in /js/service/shell/index.js, line 39 (https://github.com/runtimejs/runtime/blob/master/js/service/shell/index.js#L39), where it rests the args parameter. Maybe instead of opts.args = [];, it could be opts.args = opts.args || [];. I'm pretty sure that's the problem, because I changed it (in my clone of the repo) and it worked as it should.

mkinitrd not found?

OK, so, i'm on OSX 10.10.3 and this project seems interesting. I cloned it and brewed up qemu (easy) and installed FASM (reeeeeeeaaaalllyyy hard, long story short, got it installed) and installed scons (easy-ish), but now i'm stumped. It built just fine, except for one little problem. When I run ./qemu.sh with the cloned repo folder as the CWD, this is what I get:
screenshot of terminal
I tried ./makeinitrd-browserify.sh but I get:
screen shot of terminal 2
Tried npm install runtimejs and got illegal instruction: 4 with question marks for the stack trace.

Any ideas? I have a Ubuntu Server at home that I SSH into and mount, so could I copy everything onto there and (since Ubuntu is a Linux distro with initrd) generate the initrd from there?

EDIT: The helloworld example runs just fine, so...

module and "process" loading bikeshed

I don't think we should be bound by the abstractions governing most *nix systems. Specifically the "everything is a file" abstraction, and the process abstraction.

isolates and contexts

Instead of a processes, we have isolates and contexts, since these already exist in v8. Each has features and constraints, and we should probably just embrace them as-is.

  1. isolates can run in parallel, but cannot share heap objects
  2. contexts (in the same isolate) can share heap objects, but cannot preempt one and other.

Sometimes I imagine you will want to boot a new context, and other times you will want a new isolate. It remains to be seen how isolates and contexts will be used to construct a system, but we definitely want both constructs as first-class runtimejs functionality.

modules

I think we should drop files as a first-class concept, rather "everything is a module".

By default, JavaScript code running in v8 has no external access. It cannot access the file system, the network, or make system calls. External access should be passed in via the ES6 module feature.

You gain access to external objects via the ES6 import syntax, e.g.

import {stdout, exit} from "process"

stdout.write("Hello World")
exit(0)

This is very similar to how an executable on linux links against libc headers during compilation, e.g.

#include <stdio.h>

int main(int argc, char** argv)
{
  printf("Hello World");

  return 0;
}

In most implementations, the actual IO code is not contained in the executable file on disk, but the shared library loaded at runtime.

We take this idea to its completion in runtime, where every parent process has full control over what gets passed into a child process. Each parent defines the moduel loader for its child. A parent can re-export its own imports, export a subset, or even provide a new API to its child.

let ctx = new Context()

ctx.load(source)
ctx.setLoader(custom_loader)
ctx.compile()
ctx.run()

Moule linking occurs during compile not run. If a child attempts to import a disallowed or missing module, it will receive an error during the compile step.

libraries

The first context that runs has its module loader defined by the kernel. At this point there is no file system, so the module loader cannot load files from disk, only memory.

The kernel should provide raw device and memory access.

import {mem, dev} from "kernel"

mem.cr3 = // setup the page table

dev.write(deviceAddress, data) // write to a raw device

User code does not want to deal with raw devices but files; kernel modules should import raw device access from the kernel, but export a file-system api.

// kernel module
import {dev} from "kernel"

class fs {
  ...
}

export fs

Children spawned by the kernel module will be handed a working file system implementation.

import {open} from "fs"

let file = open('/home/me/file.txt')
file.read(...)

user space

There is no longer just a kernel space and user space. Contexts run with imports defined by their parent context. A parent may decide to pass privileged functions to their children, provide proxies, or disallow the import altogether.

summary

At the core of runtime, we only need a module system. The kernel must provide the initial module loader, but from then on all subsequent loaders are defined by other modules.

Process model

How would the concept of a "process" fit in with the kernel? How would I start one? And how would a restricted set of functionality be given to a process?

I think it would be useful to have a central process manager; this need not be complicated.

Would processes inherit their parents "environment"? This is an incredibly useful feature on UNIX, as it allows you to configure programs on the fly.

What happend to `/initrd`?

Uh, I see lots of useful Unix-like stuff in /initrd/app and /initrd/driver and /initrd/system?
What happend to it? Is it dead and deprecated? Can it be revived? Because they implement lots of basic system utils.

Reference Error: setImmediate is not defined

I think commit d26617b broke TCP. I tried to use http.get (now that runtimeify supports runtime-net-node and http-node) and it gave the error in the title. I saw it in the commit but didn't see it get defined anywhere in the file. Pretty sure this should be fixed.

Add isolates support

After some research and experiments with contexts and isolates I think we should add isolates support for applications. This way we can put different programs into separate v8 isolates.

Pros:

  • the only way to reliably implement preemption. It's possible to interrupt a context and switch to the other on the same isolate using v8::Unlocker, but it's not supported by engine and often crashes
  • we can still use global event loop and preempt only when application takes too much time
  • separate heap for every application. Lower GC pauses for programs with low memory usage
  • simpler multicore support, we can transfer isolates between cores on the same machine
  • zero copy ArrayBuffers IPC
  • applications can use contexts to separate different components (like web server engine and dynamic pages scripts)

Cons:

  • higher memory usage, every isolate creates it's own heap (i think it's 3 MiB or so). But we can still put trusted programs like drivers into the same isolate (each in it's context)
  • no zero copy JavaScript strings IPC. But we should be able to do only 1 copy using external v8 strings feature (strings outside v8 heap). Basically, we need to use buffers everywhere and convert to strings only when it's required

I think this should solve many multicore/multitasking problems.

Let's kill stderr

Not sure if runtime or NodeOS purpose, but whatever.

stderr is too much unix, it's a gross-grain console level while we have a more fine grained one on the console object (log, info, warning, error, and sometimes also debug and Python logging module has exception). I think it would be better to have only just a stdout stream and no stderr stream at all, so this way all messages go to just one only place. Later this messages can be filtered both "online" by setting the log level as a environment variable instead of redirect the content of stderr (2 > /dev/null) and also "offline" if the console content is output to a file and later filtered, for example if it's added some kind of metadata to the log lines, like a word at beggining or a special invisible character (unicode has several of them). This way it's stored the full log in just one file and in order, but later you can select what messages level you want to read.

Modifier keys

Currently, the terminal input listens for keydown, which is fine, for now. But, for CTRL+C (and etc) to work, the terminal input should listen for keyup. It would require no change in input processing, just a change in listeners (unless you decide to implement modifiers). This is not a current issue, but could be in the future.

make: can't find libunistring.so.2 running docker-prepare.sh

Hi, with Ubuntu 13.10 and 14.04:

$ ./docker-prepare.sh
...
Step 12 : RUN cd home && mkdir build-binutils && cd build-binutils &&     ../binutils-2.24/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --disable-werror &&     make && make install
 ---> Running in a785816147a6
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-pc-elf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /usr/sbin/sed
checking for gawk... gawk
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for version 0.10 of ISL... no
checking for version 0.11 of ISL... no
checking for default BUILD_CONFIG... 
checking for bison... bison -y
checking for bison... bison
checking for gm4... no
checking for gnum4... no
checking for m4... m4
checking for flex... flex
checking for flex... flex
checking for makeinfo... makeinfo
checking for expect... no
checking for runtest... no
checking for ar... ar
checking for as... as
checking for dlltool... no
checking for ld... ld
checking for lipo... no
checking for nm... nm
checking for ranlib... ranlib
checking for strip... strip
checking for windres... no
checking for windmc... no
checking for objcopy... objcopy
checking for objdump... objdump
checking for readelf... readelf
checking for x86_64-elf-cc... no
checking for x86_64-elf-gcc... no
checking for x86_64-elf-c++... no
checking for x86_64-elf-g++... no
checking for x86_64-elf-cxx... no
checking for x86_64-elf-gxx... no
checking for x86_64-elf-gcc... no
checking for x86_64-elf-gcj... no
checking for x86_64-elf-gfortran... no
checking for x86_64-elf-gccgo... no
checking for x86_64-elf-ar... no
checking for x86_64-elf-as... no
checking for x86_64-elf-dlltool... no
checking for x86_64-elf-ld... no
checking for x86_64-elf-lipo... no
checking for x86_64-elf-nm... no
checking for x86_64-elf-objdump... no
checking for x86_64-elf-ranlib... no
checking for x86_64-elf-readelf... no
checking for x86_64-elf-strip... no
checking for x86_64-elf-windres... no
checking for x86_64-elf-windmc... no
checking where to find the target ar... just compiled
checking where to find the target as... just compiled
checking where to find the target cc... pre-installed
checking where to find the target c++... pre-installed
checking where to find the target c++ for libstdc++... pre-installed
checking where to find the target dlltool... just compiled
checking where to find the target gcc... pre-installed
checking where to find the target gcj... pre-installed
checking where to find the target gfortran... pre-installed
checking where to find the target gccgo... pre-installed
checking where to find the target ld... just compiled
checking where to find the target lipo... pre-installed
checking where to find the target nm... just compiled
checking where to find the target objdump... just compiled
checking where to find the target ranlib... just compiled
checking where to find the target readelf... just compiled
checking where to find the target strip... just compiled
checking where to find the target windres... just compiled
checking where to find the target windmc... just compiled
checking whether to enable maintainer-specific portions of Makefiles... no
configure: creating ./config.status
config.status: creating Makefile
make: error while loading shared libraries: libunistring.so.2: cannot open shared object file: No such file or directory
2014/09/26 17:05:19 The command [/bin/sh -c cd home && mkdir build-binutils && cd build-binutils &&     ../binutils-2.24/configure --target=$TARGET --prefix="$PREFIX" --disable-nls --disable-werror &&     make && make install] returned a non-zero code: 127

Parts to the userland?

The initrd should have the ability to run programs on the real root file system and be able to modify files on the real root file system. This will make it possible to cp, mv, rm, rmdir and cd in the root. Also with this possible, the system can tell the kernel to mount other file systems other then root. Also try to nail it with adding a basic login system that is triggered on start up when it is on actual root file system. And you can possibly make a window manager in js by accelerating the ability of "vga.js" to being able to tell the kernel to light up specified pixels on the screen based on simple coordinates. Also try to make it a setting for the program to be isolated in the java script, like isolate("true") on some part of the program, this will make child processes possible.

./docker-prepare.sh errors

I can't seem to get docker-prepare.sh to complete.

Step 0 : FROM base/arch
 ---> a64697d71089
Step 1 : RUN echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
 ---> Using cache
 ---> b8b34b75e372
Step 2 : RUN pacman --quiet -Syy
 ---> Using cache
 ---> 0869ebac01c3
Step 3 : RUN pacman --quiet -S --noconfirm base-devel
 ---> Running in a87326a4e379
:: There are 26 members in group base-devel:
:: Repository core
   1) autoconf  2) automake  3) binutils  4) bison  5) fakeroot  6) file  7) findutils  8) flex  9) gawk  10) gcc  11) gettext  12) grep  13) groff  14) gzip  15) libtool  16) libutil-linux  17) m4  18) make  19) pacman  20) patch  21) pkg-config  22) sed  23) sudo  24) texinfo  25) util-linux  26) which

Enter a selection (default=all): �[91mwarning: �[0m�[91mfile-5.18-1 is up to date -- reinstalling
�[0m�[91mwarning: �[0m�[91mfindutils-4.4.2-5 is up to date -- reinstalling
�[0m�[91mwarning: �[0m�[91mgawk-4.1.0-2 is up to date -- reinstalling
�[0m�[91mwarning: �[0m�[91mgettext-0.18.3.2-1 is up to date -- reinstalling
�[0m�[91mwarning: �[0m�[91mgrep-2.18-1 is up to date -- reinstalling
�[0m�[91mwarning: �[0m
resolving dependencies...
�[91mgzip-1.6-1 is up to date -- reinstalling
warning: libutil-linux-2.24.1-6 is up to date -- reinstalling
warning: pacman-4.1.2-5 is up to date -- reinstalling
warning: sed-4.2.2-3 is up to date -- reinstalling
warning: texinfo-5.2-2 is up to date -- reinstalling
warning: util-linux-2.24.1-6 is up to date -- reinstalling
warning: which-2.20-6 is up to date -- reinstalling
�[0mlooking for inter-conflicts...

Packages (33): cloog-0.18.1-2  gc-7.4.2-1  guile-2.0.11-1  isl-0.12.2-1  libatomic_ops-7.4.2-1  libltdl-2.4.2-12  libmpc-1.0.2-2  autoconf-2.69-1  automake-1.14.1-1  binutils-2.24-2  bison-3.0.2-1  fakeroot-1.20-1  file-5.18-1  findutils-4.4.2-5  flex-2.5.39-1  gawk-4.1.0-2  gcc-4.8.2-8  gettext-0.18.3.2-1  grep-2.18-1  groff-1.22.2-6  gzip-1.6-1  libtool-2.4.2-12  libutil-linux-2.24.1-6  m4-1.4.17-1  make-4.0-2  pacman-4.1.2-5  patch-2.7.1-2  pkg-config-0.28-1  sed-4.2.2-3  sudo-1.8.10.p2-1  texinfo-5.2-2  util-linux-2.24.1-6  which-2.20-6

Total Download Size:    40.42 MiB
Total Installed Size:   170.79 MiB
Net Upgrade Size:       134.08 MiB

:: Proceed with installation? [Y/n] 
:: Retrieving packages ...
�[91merror: �[0m�[91mfailed retrieving file 'gawk-4.1.0-2-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading m4-1.4.17-1-x86_64.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading autoconf-2.69-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
downloading automake-1.14.1-1-any.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'binutils-2.24-2-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading bison-3.0.2-1-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
downloading sed-4.2.2-3-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'libutil-linux-2.24.1-6-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'util-linux-2.24.1-6-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
downloading fakeroot-1.20-1-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'file-5.18-1-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading findutils-4.4.2-5-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading flex-2.5.39-1-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
downloading libmpc-1.0.2-2-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'isl-0.12.2-1-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'cloog-0.18.1-2-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'gcc-4.8.2-8-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'gettext-0.18.3.2-1-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'grep-2.18-1-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading groff-1.22.2-6-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
downloading gzip-1.6-1-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'libltdl-2.4.2-12-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0m�[91merror: �[0m�[91mfailed retrieving file 'libtool-2.4.2-12-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading texinfo-5.2-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
downloading make-4.0-2-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'pacman-4.1.2-5-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading patch-2.7.1-2-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
downloading pkg-config-0.28-1-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed retrieving file 'sudo-1.8.10.p2-1-x86_64.pkg.tar.xz' from mirrors.kernel.org : The requested URL returned error: 404 Not Found
�[0m�[91mwarning: �[0m�[91mfailed to retrieve some files
�[0mdownloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading which-2.20-6-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading libatomic_ops-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading gc-7.4.2-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
downloading guile-2.0.11-1-x86_64.pkg.tar.xz...
�[91merror: �[0m�[91mfailed to commit transaction (unexpected error)
�[0mErrors occurred, no packages were upgraded.
2014/06/29 18:36:41 The command [/bin/sh -c pacman --quiet -S --noconfirm base-devel] returned a non-zero code: 1

crypto.randomBytes: not support by this browser

I know there are a lot of things that runtime needs to be able to do that it can't, so I understand if this is set aside for later, but i'll continue with my problem anyway. When using crypto.randomBytes or crypto.pseudoRandomBytes, I get an error saying that it's not supported by this browser. I know Node.js uses OpenSSL to provide the function. Could I maybe compile OpenSSL with Emscripten and use the function from it?

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

Trying to build on OSX. Do i need to go install these, or did I mis-configure it?

export PATH=/Users/jacob/Projects/NodeOS/runtime/cross/bin:/Users/jacob/Projects/NodeOS/runtime/cross/fasm:$PATH
export PREFIX=/Users/jacob/Projects/NodeOS/runtime/cross
export TARGET=x86_64-elf
mkdir -p build-gcc && cd build-gcc && \
        ../gcc-4.9.0/configure --target=x86_64-elf --prefix="/Users/jacob/Projects/NodeOS/runtime/cross" --disable-nls --enable-languages=c,c++ --without-headers && \
            make all-gcc && make all-target-libgcc && make install-gcc && make install-target-libgcc
checking build system type... x86_64-apple-darwin13.2.0
checking host system type... x86_64-apple-darwin13.2.0
checking target system type... x86_64-pc-elf
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking for libatomic support... no
checking for libcilkrts support... no
checking for libitm support... no
checking for libsanitizer support... no
checking for libvtv support... no
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... 
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... no
checking for gnatbind... no
checking for gnatmake... no
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2
checking for objdir... .libs
checking for the correct version of gmp.h... yes
checking for the correct version of mpfr.h... no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations.  Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
http://gcc.gnu.org/install/prerequisites.html for additional info.  If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files.  They may be located in separate packages.
make: *** [build-gcc] Error 1

qemu-net "Kernel error: Assertion failed: buf (src/kernel/initrd.cc: Init: 22)"

Not sure whether this is really a bug, but: qemu-kvm works fine, qemu-net fails with:

Memory map addr 36864, len 120
RANGE 32 MB - 508 MB
Detected available 478 MiB of memory.
T0 ident pages : 16, loc 1 = 2000000, loc 2 = 1a00000
CR3 value = 0x1a00000
Kernel error: Assertion failed: buf (src/kernel/initrd.cc: Init: 22)

If I add "-enable-kvm" to the boot args in qemu-net.sh, it works.

node.js compatibility

If an os built with runtimeJS could use npm or npmd as a package manager it would inherit a significant ecosystem of highly usable code. To do so it would need some degree of node.js compatibility. This issue could be a discussion thread for the idea.

/cc @dominictarr @juliangruber @feross

Process exit status

(Another thing that maybe comes here, or it's userspace)

Poxis systems allow to set a status variable to show if the command exited correctly or not, being this a char integer where zero is "all was right". On the other hand, Plan9 expand this allowing to set a string instead up to 255 bytes length where the "all was right" value is done by setting it to null. This later one allow to set messages easier to interpret by a human instead of by another program, specially when programmers are not using correctly the exit status variable to show a code for each error and only return '1' as oposition to zero - "all was right".

We can do better: based on Plan9 way, we can set the exit status to be an Error object, where the error message field would be the same as the error message intended on Plan9, but also this Error object can have a code field "a-la" Poxis but it can have other interesting fields like the stack-trace, specially when the process exits due to unhandled exceptions (and the exit status field it's the exception itself :-) ).

Comments? Suggestions?

First Runtime Hangout

I would like to propose we do a runtimejs Google hangout.

We can do it on-air, meaning it's archived afterwards, or just privately if people are shy.

If @iefserge is willing to walk us through some of the architecture, I'm sure many of us would love to just learn how operating systems are put together at the lowest levels.

There are a lot of time-zones here:

  1. @iefserge is UTC+2
  2. San Francisco is UTC-8
  3. @hij1nx is UTC-5

Using scheduleonce it seems like the best time range is 9am PST - 1pm PST (or 7pm - 11pm Ukraine). Date can be determined according to schedules.

Real hardware

According to discussion at #42 seems we are pretty close to be capable to run runtime.js on real hardware, being only a matter or drivers (we only support virtio). We could start supporting the same hardware offered by QEmu for PC platform:

  • i440FX host PCI bridge and PIIX3 PCI to ISA bridge
  • Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA extensions (hardware level, including all non standard modes).
  • PS/2 mouse and keyboard
  • 2 PCI IDE interfaces with hard disk and CD-ROM support
  • Floppy disk
  • PCI and ISA network adapters
  • Serial ports
  • Creative SoundBlaster 16 sound card
  • ENSONIQ AudioPCI ES1370 sound card
  • Intel 82801AA AC97 Audio compatible sound card
  • Adlib(OPL2) - Yamaha YM3812 compatible chip
  • Gravis Ultrasound GF1 sound card
  • CS4231A compatible sound card
  • PCI UHCI USB controller and a virtual USB hub.

The network cards it support are virtio, i82551, i82557b, i82559er, ne2k_pci, ne2k_isa, pcnet, rtl8139, e1000, smc91c111, lance and mcf_fec, being the e1000 the default one for PC platform, so we should add support for it first.

After that, we can move to other well-constrained boards like Raspberry Pi. We can (and should!) left for the future some other not so basic components like advance graphic or sound cards so we can start having servers in real world.

Get input from user + run commands

I need a way of getting input from the user in my shell command (for a JS REPL), and it wouldn't hurt to run commands, too (when the eval fails).
EDIT: I have created a pull request (#60) that adds this functionality. I need this to use it in runtime-shell.

Virtual terminals

I think it would be useful to separate the terminal (program that works with video and keyboard) and the program that runs inside it. This would allow for systems such as SSH to function, and provides the architecture to run shells.

Is this too UNIX-y?

fasm: command not found

Not really sure how to download this. Found fast assembler I'm not really sure what to do next.

jacob-mbp:runtime jacob$ PATH=/Users/jacob/xcc/bin:$PATH scons
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
fasm src/ap_startup.asm src/ap_startup.asm_o >/dev/null
sh: fasm: command not found
fasm src/startup.asm src/startup.asm_o >/dev/null
sh: fasm: command not found
fasm src/kernel/x64/irq-vectors-x64.asm src/kernel/x64/irq-vectors-x64.asm_o >/dev/null
sh: fasm: command not found
scons: *** [src/ap_startup.asm_o] Error 127
[host] Build test/hostcc/test-host.host
scons: *** [src/startup.asm_o] Error 127
scons: *** [src/kernel/x64/irq-vectors-x64.asm_o] Error 127
scons: building terminated because of errors.
jacob-mbp:runtime jacob$ 

Node.js compatibility

There's some of the internal modules published on npm and seems it's the way to go, so the core will be minimal and probably it's mostly a matter of having a require() function and delegate everything to modules as @groundwater proposed. Later one of those modules could provide an environment and API layer that a Node.js app would expect. I know runtime.js will try first to allow to exec single Javascript apps, but that single app could be a Node.js emulator similar to what diferent libOS libraries do on the exokernels, isn't it? :-)

(And yes, I'm asking for this to exec NodeOS on runtime.js ;-) )

System library documentation

Currently, the only documentation I can see is the page that gives an overview of the architecture. I think that writing down exactly how programs will interact with the kernel will 1. make it easier for people to contribute to the project, and 2. well, this has to be done.

Start on the github wiki, or something separate?

Multicore

Will userland JavaScript all run in a single thread and therefore only be able to run on a single core of (say) an eight core system?

Execution of third-party binaries

No, I'm not trolling :-)

In the technical details it says that it's the intention to have all the OS running on ring 0 in the same memory space and left to the Javascript VM to sandbox the applications, so there's no penalties by context switching and allow IPC by just sharing a pointer to an ArrayBuffer, but what happens if I need to run a binary application? If I had the sources I could try to compile it to Javascript so it gets sandboxed, but what happens if I don't have the sources? Running in ring 0 they could be able to write in memory address, so we wold be back to Windows 3.11... Worst than this, compiled modules have the same problem :-/

I was thinking that in a mid-term this binaries could be run on ring 3 in their own memory space and do normal IPC like in other OSes, so this way they could be sandboxed in a different way (Chrome inspired?).

telnetd?

Hi, any interest in adding a telnetd so you can log in to a runtimejs host remotely? If so, I'd be happy to have a stab at it, any suggestions on how it ought to work? Thanks!

runtime in qemu is very slow (linux)

@hij1nx helped me get runtime running on my computer yesterday, but inside runtime is was unbearably slow.

I havn't solved the problem, but I have figured out what the problem was - qemu wasn't running in kvm mode,
so it was being entirely emulated, and not taking advantage of any of the virtualization support that my hardware uses. I'm running archlinux on a thinkpad x220, so I have virtualization capable hardware, but it seems I need to enable some kernel modules.

Just leaving this issue here incase anyone else has this issue, and I'll update as I progress and then add this to the wiki.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.