
Linux 0.01 ported to gcc4 Linux 0.01 0.01 is the first version of linux (also called freax ;) ), released on september 1991 by linus. You can download the original version here You can't do too much with this os, exept learning how os work. So don't try to run X application on it :) If you want more information then read this Linux-0.01 is realy too old, so you can't build it in your modern computer . If you really want, then you will have to : - install an old version of minix with Bruce Evan's patch. Linux 0.01 - remake The main goal of this project is : - to build linux 0.1 from modern linux (I use debian etch for bootstrap) - to use gcc-4.x - to run binary in userland. ( I use elf format because I had some problem with a.out with gcc-4.x - more inportant : learning lot of things about OS dev. For now the kernel can be executed. Note : - I have not yet tested it on real hardware ! hdd userland program Ok it"s cool to run the kernel alone, but it's better to run on it some "userland" program :) screenshot
CS510 Advanced Operating Systems This is an advanced graduate course focussed on synchronization-related topics in operating systems. The course is based on research papers, and will involve a lot of reading and assimilation of ideas. The reading list has been carefully selected from classical and recent research papers in order to introduce and develop the key concepts and developments in synchronization and shared memory multiprocessor operating system design. These concepts include various uses of locking in OS kernels, synchronization in interrupt and process contexts, issues in the design of scalable spin locks, scalable reader-writer locking, lock-free and non-blocking synchronization, software transactional memory, hazard pointers, read copy update, memory consistency models and their implications for the performance and correctness of synchronization, tools and techniques for checking for bugs in synchronization-related kernel code.
Jasager | Karma on the Fon - Home Welcome to Jasager - Karma on the Fon. Jasager is an implementation of Karma designed to run on OpenWrt on the Fon. It will probably run on most APs with Atheros wifi cards but it was designed with the Fon in mind as it is a nice small AP which gives it a lot of scope for use in penetration tests and other related fun. A quick highlight of features: Web interface showing currently connected clients with their MAC address, IP address (if assigned) and the SSID they associated with The web interface allows control of all Karma features and can either run fully featured through AJAX enabled browsers or just as well through lynx Auto-run scripts on both association and IP assignment Full logging for later review Pluggable module system for easy extensibility Basic command line interface so you don't have to remember the different iwpriv commands Please give your feedback, bug reports, comments, praise, etc either through jasager@digininja.org or on the Hak5 forums.
Sizing memory in Protected Mode By Robert R. Collins The Concepts of Sizing Memory To determine the actual size of RAM, we need to detect how many address lines are connected to the RAM chip. Consider the 11 address lines on our 4 MB RAM chip socket. To determine how many banks of memory are in the computer, we test the existence of RAM for each bank. By repeating this RAM sizing algorithm for each bank of memory, we can determine how much RAM is installed in the computer. To summarize: knowing the relationship between CPU addresses, RAM row and column addresses, and bank selection addresses is essential to determining RAM size and quantity. Sizing RAM under program control is accomplished differently than it was during the power-on sequence. Back to Books and Articles
Real-time systems development Partitioning Your Hard Drive During A Linux Install When you install Linux for the first time, you will need to partition your hard drive during the install process. If you’re using one of the more friendly distros such as Ubuntu it will by default partition your hard drive in a logical manner (this is called guided partitioning). However the partitioning it does is very basic, if you want to get more power from your Linux install, you will need to manually partition your hard drive during the installation. Most people shy away from this thinking that it is too difficult to know what part of the file system should get it’s own partition and what the partition size should be. Things, however, are not as difficult as you might believe and I will attempt to give a quick guide to how you can manually partition your hard drive to get more out of your Linux installation (I use Ubuntu so everything will be biased towards that distro). Ubuntu Guided Partitioning Manually Partitioning Your Drive /tmp – this one is pretty self explanatory.
Writing Your Own Toy OS (Part I) "Linux Gazette...making Linux just a little more fun!" By Krishnakumar R. This article is a hands-on tutorial for building a small boot sector. 1. 1.1 The Fancy Dress The microprocessor controls the computer. 1.2 Our Role Initially, control is in the hands of the BIOS. 1.3 The Plan First write a small program in 8086 assembly (don't be frightened; I will teach you how to write it), and copy it to the boot sector of the floppy. 2. as86 This is an assembler. ld86 This is the linker. gcc The C compiler. A free floppy A floppy will be used to store our operating system. Good Old Linux box You know what this is for. as86 and ld86 will be in most of the standard distributions. 3. 1, 2, 3, Start! 3.1 The Boot Sector Grab your favourite editor and type in these few lines. entry start start: mov ax,#0xb800 mov es,ax seg es mov [0],#0x41 seg es mov [1],#0x1f loop1: jmp loop1 This is an assembly language that as86 will understand. 0xb800 is the address of the video memory. mov ax,#0xb800 3.3 Let's Do It All .
from small one page howto to huge articles all in one place poll results Last additions: May 25th. 2007: April, 26th. 2006: You are here: SystemVarious pieces of information about kernel activity are available in the/proc/stat file.All of the numbers reported in this file are aggregates since the system first booted. For a quick look, simply cat the file: > cat /proc/statcpu 2255 34 2290 22625563 6290 127 456cpu0 1132 34 1441 11311718 3675 127 438cpu1 1123 0 849 11313845 2614 0 18intr 114930548 113199788 3 0 5 263 0 4 [... lots more numbers ...]ctxt 1990473btime 1062191376processes 2915procs_running 1procs_blocked 0 The very first "cpu" line aggregates the numbers in all of the other "cpuN" lines. These numbers identify the amount of time the CPU has spent performing different kinds of work. The meanings of the columns are as follows, from left to right: The "intr" line gives counts of interrupts serviced since boot time, for eachof the possible system interrupts. Other free services
House Haskell User's Operating System and Environment Note: Kenny Graunke has made available a a newer version of House, ported to GHC 6.8.2 (October 2008) House is a demo of software written in Haskell, running in a standalone environment. It is a system than can serve as a platform for exploring various ideas relating to low-level and system-level programming in a high-level functional language. House is based on hOp (older version) by Sébastien Carlier and Jérémy Bobbio - a variant of the Haskell compiler GHC and its run-time system, adapted to produce code that can run in a standalone environment. There is also work in progress on implementing an L4 compatible microkernel based on this platform (Rebekah Leslie and Mark P Jones). Files to download The table below lists files available for download. Bootable floppy images for testing house These are 1.44MB floppy images that can be used for testing House. Source code House Applications The following applications are available in the House demo:
Performance Monitoring Tools for Linux To get a good idea of how a system is performing, watch key system resources over a period of time to see how their usage and availability changes depending upon what's running on the system. The following categories of system resources are ones I wished to track. CPU Utilization: The central processing unit, as viewed from Linux, is always in one of the following states: idle: available for work, waitinguser: high-level functions, data movement, math, etc.system: performing kernel functions, I/O and other hardware interactionnice: like user, a job with low priority will yield the CPU to another task with a higher priority By noting the percentage of time spent in each state, we can discover overloading of one state or another. Too much idle means nothing is being done; too much system time indicates a need for faster I/O or additional devices to spread the load. Interrupts: Most I/O devices use interrupts to signal the CPU when there is work for it to do.
OS Development Skeptically OS Development Skeptically This document has been written to address certain questions of the OS development that often arise when attempting to make a homebrew operating system. The document is probably of no use to those, who are professionals in the area. So, if youre an expert in OS dev and you know the thing from inside out, dont waste time reading this document. This document is aimed at newbies, wannabies, and other unprofessional coders, who want to make their own OS and have already faced (or are yet to face) a lot of trouble down the way. The document shall give some ideas and hints as to how to do certain things and how not to do them. Right, why developing an OS at first place? Well, there are several reasons for making an OS. Im a fucking cool coder, much better than those kiddies from the next block. Those, who can put their sign next to items 4, 5 or 6 of the list, should read the document with attention. Just like I said, it depends. Just how hard is it? - Some smart guy
Wiki maintained by as group of operating system developers. Contains good information by kaspervandenberg Jan 24