299 lines
14 KiB
HTML
299 lines
14 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="description" content="Minimal Linux Live" />
|
|
<meta name="keywords" content="minimal linux live tutorial kernel busybox cd usb iso image" />
|
|
<meta name="author" content="Ivan Davidov - davidov (dot) i [at] gmail {dot} com" />
|
|
<title>Minimal Linux Live</title>
|
|
<link rel="stylesheet" type="text/css" href="style.css"/>
|
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
|
<script language="JavaScript" type="text/javascript">
|
|
function menuSwap(itemIndex) {
|
|
for(var i = 1; i <= 5; i++) {
|
|
var strItem = "item" + i;
|
|
var objItem = document.getElementById(strItem);
|
|
objItem.style.display = (i == itemIndex) ? "block" : "none";
|
|
}
|
|
}
|
|
|
|
function logSwap(itemIndex, show) {
|
|
for(var i = 1; i <= 2; i++) {
|
|
var showObj = document.getElementById("show" + i);
|
|
var hideObj = document.getElementById("hide" + i);
|
|
var textObj = document.getElementById("text" + i);
|
|
|
|
if(i == itemIndex) {
|
|
if(show == true) {
|
|
showObj.style.display = "none";
|
|
hideObj.style.display = "block";
|
|
textObj.style.display = "block";
|
|
} else {
|
|
showObj.style.display = "block";
|
|
hideObj.style.display = "none";
|
|
textObj.style.display = "none";
|
|
}
|
|
} else if(show == true) {
|
|
showObj.style.display = "block";
|
|
hideObj.style.display = "none";
|
|
textObj.style.display = "none";
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="container">
|
|
<div id="header">
|
|
<a href="/">Minimal Linux Live</a>
|
|
</div>
|
|
<div id="menu">
|
|
<a href="#" onclick="javascript:menuSwap(1); return false;">Home</a>
|
|
<a href="#" onclick="javascript:menuSwap(2); return false;">Changes</a>
|
|
<a href="#" onclick="javascript:menuSwap(3); return false;">About</a>
|
|
<a href="#" onclick="javascript:menuSwap(4); return false;">Tutorial</a>
|
|
<a href="#" onclick="javascript:menuSwap(5); return false;">Download</a>
|
|
</div>
|
|
<div id="main">
|
|
<div id="item1" style="display:block;">
|
|
<div id="text">
|
|
<h2>Home Page</h2>
|
|
<p>
|
|
<b>Minimal Linux Live</b> is a set of Linux shell scripts which automatically build minimal Live
|
|
Linux OS based on <a target="_blank" href="http://kernel.org">Linux kernel</a>
|
|
and <a target="_blank" href="http://busybox.net">BusyBox</a>. All necessary source codes are automatically
|
|
downloaded and all build operations are fully encapsulated in the scripts.
|
|
</p>
|
|
<p>
|
|
If you want to build your own Minimal Linux Live ISO image file, all you need to do is the following:
|
|
</p>
|
|
<p>
|
|
<ul>
|
|
<li>
|
|
Get the latest scripts from the <a href="#" onclick="javascript:menuSwap(5); return false;">download</a> section.
|
|
</li>
|
|
<li>
|
|
Extract the scripts to some folder.
|
|
</li>
|
|
<li>
|
|
Just for convenience, make sure that all scripts are executable (chmod +x *.sh). If you decide to skip this step you
|
|
can still run the scripts like this (example): <i>sh build_minimal_linux_live.sh</i>
|
|
</li>
|
|
<li>
|
|
Depending on which Linux OS you are using, there might be one or more (or none, or even more) build dependencies that you
|
|
need to resolve before you start the build process. If you work with <a target="_blank" href="http://ubuntu.com">Ubuntu</a>,
|
|
the following commands should resolve all necessary build dependencies:
|
|
<ul>
|
|
<li>
|
|
sudo apt-get install wget
|
|
</li>
|
|
<li>
|
|
sudo apt-get install make
|
|
</li>
|
|
<li>
|
|
sudo apt-get install gcc
|
|
</li>
|
|
<li>
|
|
sudo apt-get install bc
|
|
</li>
|
|
<li>
|
|
sudo apt-get install syslinux
|
|
</li>
|
|
<li>
|
|
sudo apt-get install genisoimage
|
|
</li>
|
|
</ul>
|
|
<br />
|
|
</li>
|
|
<li>
|
|
Execute the script <b>build_minimal_linux_live.sh</b> and wait. If you have resolved all build dependencies, the whole
|
|
process should take less than 30 minutes on a modern computer. If the build fails for some reason, most probably there
|
|
are unresolved build dependencies. Several users reported that the <i>build-essential</i> package resolves all unexpected
|
|
build dependencies for Ubuntu. If you are using <a target="_blank" href="http://linuxmint.com">Linux Mint</a> try to
|
|
install the package <i>g++</i> and if you still have troubles then try the <i>build-essential</i> package. On
|
|
<a target="_blank" href="http://fedoraproject.org">Fedora</a> you might need the static 'glibc' package <i>glibc-static</i>.
|
|
<p />
|
|
Please have in mind that the build dependencies can vary a lot depending on the Linux OS which you use and the software
|
|
which you have already installed.
|
|
<p />
|
|
If you still have troubles then examine the failure message and google it. If you are unable to find solution, then you
|
|
can ask someone more experienced Linux guru (if you know any) or as alternative you can contact me. Please, make sure that
|
|
you have researched your problem in advance before you send me your question.
|
|
</li>
|
|
<li>
|
|
When the scripts finish their job you will find newly created <b>minimal_linux_live.iso</b> in the same folder where you
|
|
executed the scripts. You can burn the ISO image file on CD/DVD, install it on USB flash drive via
|
|
<a target="_blank" href="http://www.pendrivelinux.com">Universal USB Installer</a>,
|
|
or run it directly via PC emulator like <a target="_blank" href="http://virtualbox.org">VirtualBox</a>.
|
|
</li>
|
|
</ul>
|
|
</p>
|
|
<p>
|
|
The produced ISO image file contains Linux kernel compiled with default options, BusyBox compiled with default options and very simple
|
|
initramfs. This means that you don't get Windows support out of the box, nor you get any fancy desktop environment. All you
|
|
get is a simple shell console which supports all BusyBox applets and... well, that's all. This is why it's called "minimal".
|
|
</p>
|
|
<p>
|
|
The good news is that even though the OS is small and simple, the build scripts are also very small and very simple. You can
|
|
quite easily learn from the scripts and later modify them to include more stuff (I encourage you to do so). After you learn
|
|
the basics you will have all the necessary tools and skills to create your own fully functional Linux based operating system!
|
|
Entirely from scratch! Isn't it great?! :)
|
|
</p>
|
|
<p>
|
|
The <a href="#" onclick="javascript:menuSwap(4); return false;">tutorial</a> provides more details about the inner structure
|
|
of the scripts and the overall build process. I encourage you to go through this document when you have the time.
|
|
</p>
|
|
<p>
|
|
Below you can find several screenshots which show what the environment looks like when you boot your newly generated
|
|
Minimal Linux Live OS.
|
|
</p>
|
|
<p>
|
|
<img alt="Minimal Linux Live" id="screenshot1" width="100%" height="100%" border="0" src="./images/screen1.png" />
|
|
</p>
|
|
<p>
|
|
<img alt="Minimal Linux Live" id="screenshot2" width="100%" height="100%" border="0" src="./images/screen2.png" />
|
|
</p>
|
|
<p>
|
|
<img alt="Minimal Linux Live" id="screenshot3" width="100%" height="100%" border="0" src="./images/screen3.png" />
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="item2" style="display:none;">
|
|
<div id="text">
|
|
<h2>Change Log</h2>
|
|
<p>
|
|
<div id="show2" style="display:none;">
|
|
<b>25-Aug-2014</b>
|
|
<a href="#" onclick="javascript:logSwap(2, true); return false;">show</a>
|
|
</div>
|
|
<div id="hide2" style="display:block;">
|
|
<b>25-Aug-2014</b>
|
|
<a href="#" onclick="javascript:logSwap(2, false); return false;">hide</a>
|
|
</div>
|
|
<div id="text2" style="display:block;">
|
|
<ul>
|
|
<li>
|
|
<b>Minimal Linux Live</b> is now based on <b>Linux kernel 3.16.1</b> and <b>BusyBox 1.22.1</b>.
|
|
</li>
|
|
<li>
|
|
The boot process is now based on <b>/sbin/init</b> and <b>/etc/inittab</b>. There are four
|
|
available consoles which can be switched with <b>Alt + F1</b> up to <b>Alt + F4</b>.
|
|
</li>
|
|
<li>
|
|
Shell scripts have been updated. Now the downloaded source bundles are stored in separate folder.
|
|
If the download process is interrupted, it will continue the next time the scripts are executed.
|
|
The most notable change is in <b>5_generate_rootfs.sh</b> which now generates root file system with
|
|
structure compatible with <b>/sbin/init</b> and <b>/etc/inittab</b>.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</p>
|
|
<p>
|
|
<div id="show1" style="display:block;">
|
|
<b>28-Jul-2014</b>
|
|
<a href="#" onclick="javascript:logSwap(1, true); return false;">show</a>
|
|
</div>
|
|
<div id="hide1" style="display:none;">
|
|
<b>28-Jul-2014</b>
|
|
<a href="#" onclick="javascript:logSwap(1, false); return false;">hide</a>
|
|
</div>
|
|
<div id="text1" style="display:none;">
|
|
<ul>
|
|
<li>
|
|
<b>Minimal Linux Live</b> is now based on <b>Linux kernel 3.15.6</b> and <b>BusyBox 1.22.1</b>.
|
|
</li>
|
|
<li>
|
|
The boot process is based on simple <b>/init</b> script.
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="item3" style="display:none;">
|
|
<div id="text">
|
|
<h2>About This Project</h2>
|
|
<p>
|
|
My name is <a target="_blank" href="http://linkedin.com/in/ivandavidov">Ivan Davidov</a> and I currently
|
|
live and work in
|
|
<a target="_blank" href="http://en.wikipedia.org/wiki/Sofia">Sofia</a>,
|
|
<a target="_blank" href="http://en.wikipedia.org/wiki/Bulgaria">Bulgaria</a>.
|
|
</p>
|
|
<p>
|
|
I am professional Java software engineer (yes, Java developers tend to know some Linux stuff) and I've
|
|
been trying to create my own Linux OS for a very long time. There are some good tutorials which you
|
|
can find online but almost none of them are simple to follow and almost none of them explain in details
|
|
what has been done and why it's done in this particular way. In most cases the tutorials are incomplete and
|
|
there is high chance that you end up with something broken.
|
|
</p>
|
|
<p>
|
|
Don't get me wrong, you can learn a lot from these tutorials, as I did. In fact the scripts which I created
|
|
(did you take a look at them?) are based on the same information resources which you might have already found.
|
|
The difference is that this site provides you not only with detailed tutorial, but also with fully functional
|
|
set of shell scripts which automatically build fully functional live Linux OS. And the tutorial explains it
|
|
all for you!
|
|
</p>
|
|
<p>
|
|
If you'd like to contact me, my e-mail is: <b>davidov [dot] i (at) gmail {dot} com</b>
|
|
</p>
|
|
<p>
|
|
My LinkedIn profile is here: <a target="_blank" href="http://linkedin.com/in/ivandavidov">http://linkedin.com/in/ivandavidov</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="item4" style="display:none;">
|
|
<div id="text">
|
|
<h2>Minimal Linux Live Tutorial</h2>
|
|
<p>
|
|
Would you like to learn how to build your own minimal live Linux OS?
|
|
</p>
|
|
<p>
|
|
<a target="_blank" href="./the_dao_of_minimal_linux_live.txt">The Dao of Minimal Linux Live</a> explains in details
|
|
what steps are involved in creating simple live Linux OS entirely from scratch, the inner structure of the
|
|
build scripts (I assume you have already downloaded them) and provides you with more information on how to
|
|
improve/upgrade the generated OS with other generic stuff (e.g. users & groups, /etc/inittab).
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div id="item5" style="display:none;">
|
|
<div id="text">
|
|
<h2>Download Section</h2>
|
|
<p>
|
|
The latest stable scripts (25-Aug-2014) can be downloaded as ZIP archive
|
|
<a href="./download/minimal_linux_live_25-Aug-2014_src.zip" title="Minimal Linux Live - shell scripts">here</a>.
|
|
</p>
|
|
<p>
|
|
Pre-built ISO image files generated with the latest stable scripts are available for
|
|
<a href="./download/minimal_linux_live_25-Aug-2014_32-bit.iso" title="Minimal Linux Live - ISO image file for 32-bit CPUs">32-bit</a>
|
|
and
|
|
<a href="./download/minimal_linux_live_25-Aug-2014_64-bit.iso" title="Minimal Linux Live - ISO image file for 64-bit CPUs">64-bit</a>
|
|
CPUs.
|
|
</p>
|
|
<p>
|
|
You can also <a target="_blank" href="./download">browse the download directory</a>.
|
|
</p>
|
|
<p>
|
|
You can take a look at the latest development sources in
|
|
<a target="_blank" href="http://github.com/ivandavidov/minimal">GitHub</a>.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<div id="footer">
|
|
Copyright ©2014
|
|
<span class="separator">|</span>
|
|
<a href="/" title="Minimal Linux Live">Minimal Linux Live</a>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-53254151-1', 'auto');
|
|
ga('send', 'pageview');
|
|
</script>
|
|
</body>
|
|
</html>
|