tag:blogger.com,1999:blog-128126322024-03-08T09:53:16.805+05:30CONtroverSial PROSeCons and pros of everything from a controversial perspectiveUnknownnoreply@blogger.comBlogger14125tag:blogger.com,1999:blog-12812632.post-75572410697073673502011-01-30T15:16:00.004+05:302011-01-30T15:53:31.197+05:30Real hackweek, protected hackweek and long hackweekI have been using <a href="http://www.linux-kvm.org/page/Main_Page">KVM</a> a lot, but never took time to understand how kvm works. I used some time from this hackweek to get rid of that regret.<br /><br />Virtual Machine eXtensions instructions allow trap-and-emulate virtualization. And KVM exposes VMX in a convenient way to userspace in Linux. Virtual Machine Monitors(VMM) like <a href="http://wiki.qemu.org/KVM">qemu-kvm</a> use the KVM API exposed by linux to <strike>emulate</strike> virtualize software.<br /><br />x86_64 processors boot in <span style="font-weight: bold;">real-mode</span>. In this mode it can use only 16-bit addresses, ie., upto 1MByte RAM. The execution would begin at physical address 0xFFFFFFF0. Then the software has to switch to <span style="font-weight: bold;">protected mode</span> where protection and paging is possible. Paging is optional, but almost all OSes use demand paging extensively. Now 4 GBytes of linear address space is used. And then CPU can be switched to <span style="font-weight: bold;">long mode</span> i.e., 64-bit mode. Paging should be disabled in 32-bit mode, before switching to long mode. There are also other modes of operation like <span style="font-weight: bold;">virtual-8086 mode</span> to allow executing legacy real-mode software from protected mode, <span style="font-weight: bold;">SMM</span> for OS transparent execution of OEM specific code.<br /><br />I had limited time and very very limited skill at hand. So aiming for the sky was not an option. Hence wrote a very simple <a href="http://gitorious.org/kvm-fun/repo/blobs/master/vmm.c">VMM</a> that directly starts the guest at address 0H, in 32-bit protected mode with paging disabled. And supports only insb and outsb as the only form of interaction possible for the guest. The <a href="http://gitorious.org/kvm-fun/repo/blobs/master/guest.c">guest</a> is a simple static linked 32-bit program that doesn't use any library, and <a href="http://gitorious.org/kvm-fun/repo/blobs/master/guest.lds">linked</a> to start from 0x0. The guest simply reads a byte using insb and sends byte+1 back via outsb. The guest would halt, when it gets the, "<a href="http://en.wikipedia.org/wiki/Answer_to_the_Ultimate_Question_of_Life,_the_Universe,_and_Everything#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe_and_Everything_.2842.29.">Answer to the Ultimate Question of Life, the Universe, and Everything</a>". The VMM reads the byte value to pass to the guest from stdin and prints its response in stdout.<br /><br />The <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob_plain;f=Documentation/kvm/api.txt;hb=HEAD">KVM API</a> is really very easy to understand and use. But some knowledge of the processor was required to make use of it. Intel manuals helped there. I don't have good understanding of things yet, but something is better than nothing.<br /><br />I was occupied by quite a lot of things in life and work in the recent past. So I wasn't really planning to participate and make this a <span style="font-weight: bold;">real hackweek</span>. Also a National holiday for <a href="http://en.wikipedia.org/wiki/Republic_Day_%28India%29">Republic day of India</a>, bang in the middle of the week prevents this hackweek from being a <span style="font-weight: bold;">long hackweek</span>! But seeing videos of my colleagues from various parts of world having fun, I couldn't resist and decided to go for the <span style="font-weight: bold;">virtual hackweek</span>. I thank my employer for giving me this <span style="font-weight: bold;">protected hackweek</span>, and let me learn/do things protected from everyday work.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12812632.post-5594731903407162172010-06-13T16:38:00.013+05:302010-06-13T19:00:40.059+05:30Hackweek V<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzSR4akp7ZsHBYADyrVqe9BHSjbGoXAh6gOT4TGHj26Z-AUppK2KdoQobvjVAaKanCM7SsihkqQFHiMoIpwgz9BQlXvotG590yiMR30c9ofDElGHm6Q2amK48EGTMOb56R-us5/s1600/Hackweek5-logo.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 223px; height: 185px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzSR4akp7ZsHBYADyrVqe9BHSjbGoXAh6gOT4TGHj26Z-AUppK2KdoQobvjVAaKanCM7SsihkqQFHiMoIpwgz9BQlXvotG590yiMR30c9ofDElGHm6Q2amK48EGTMOb56R-us5/s320/Hackweek5-logo.png" alt="" id="BLOGGER_PHOTO_ID_5482222786868753890" border="0" /></a><br />I had been toying with the idea that, to split a file on my hard-disk, I have to read and write to a new file and then truncate the old file. But isn't it lots of unnecessary I/O. I already have all the data on disk. I should be able to change the meta-data alone and mark the file contents after some length as a different file.<br /><br />So during this hackweek, I implemented 2 system calls on Linux, sys_split and sys_join. And added support for these calls to the FAT file-system. <a href="http://lkml.org/lkml/2010/6/9/200">http://lkml.org/lkml/2010/6/9/200</a> With this patch one can split a file into 2 or join 2 files without doing much I/O!<br /><br /><span style="font-weight: bold;">Why FAT?</span><br />Normally creating a new file and then truncating a file approach, needs temporary free space as well. I once had a need to split files when there was no free space available. On advanced filesystems, sparse-file support(i.e., files with holes) helped. But FAT does not support sparse files. Also I wanted these to work on thumb drives which are mostly formatted as FAT32.<br /><br /><span style="font-weight: bold;">SLE11 SP1 release</span><br />This Hackweek was scheduled to follow the release of SLE11 SP1. And all the Bangalore employees, who worked for SLE11 SP1 were given a<a href="http://www.transcendusa.com/products/ModDetail.asp?ModNo=198"> portable 160 hard-drive </a>as a gift in the middle of hackweek. The transcend disk has a one-touch back up button, which works to sync selected folders, using a proprietary software available only on Windows. No support in Linux or Mac.<br /><br /><span style="font-weight: bold;">gnireenignE one-touch button</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbbHwYoVhXZ9HXPdkYHXczm06rhj7p05HMH7ck4oWz5QGxddNbxSqK71pQLhPljPolSHKHg4MpRUTuHYNHJaNWaLwWJxes4atGXbCX1Xagca2s6ziV4EPUVGNm1xG_h-YYaPIM/s1600/IMG_0014.JPG"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbbHwYoVhXZ9HXPdkYHXczm06rhj7p05HMH7ck4oWz5QGxddNbxSqK71pQLhPljPolSHKHg4MpRUTuHYNHJaNWaLwWJxes4atGXbCX1Xagca2s6ziV4EPUVGNm1xG_h-YYaPIM/s320/IMG_0014.JPG" alt="" id="BLOGGER_PHOTO_ID_5482222990077403410" border="0" /></a><br />I thought, if the button press could be detected, I could use it to unmount the disk! So I set out to reverse engineer it. Usbmon + KVM + windows XP. Got the usbmon traces. I was expecting to see a simple Interrupt endpoint. But it was a bulk end-point only interface. And the software was continuously polling to get the button status. It was quite interesting to decipher the USBS and USBC's, but the SCSI/ATAPI payload had an unknown command DFh. And I assumed that by sending the command, if a button had been pressed in between, I would get a different value. And was trying hard for hours. But failed. Then took few more traces using Windows. Tried hard. When I almost gave up, I found couple of return bytes slightly different! Voila. The return value is different, only if the button is held down during the command. Now, I have a <a href="http://docs.google.com/leaf?id=0B7Zdx9Mwd4VKYmFhOTdkOTktOWNhZC00ZTRhLWEzNDEtMzQzOWE5Zjc5MzY5&sort=name&layout=list&num=50">script</a> to sync/unmount with a one-touch button! If you have this device, you can modify the script to do what ever you want it to do. Let your creativity flow freely.Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-12812632.post-63366778041669506592010-04-05T09:23:00.005+05:302010-04-05T09:52:11.990+05:30Who is Linux?Yesterday, I was bored in the afternoon and had a digital camera with me. I thought of making my own <a href="http://en.wikipedia.org/wiki/Steadicam">steadicam</a>, but then when I saw the tux over my TV, this <a href="http://video.linuxfoundation.org/contest/we-are-linux-superbowl-ad-contest">contest</a> came to my mind. And the result is an <a href="http://video.linuxfoundation.org/video/1694">entry</a> to the competition.<br /><br />I spent only few minutes. I think it is quiet OK, given its very low production value. I am not trying to win, but just like I send crappy patches to Linux and waste kernel developers time, I uploaded it to waste 43 seconds of your time.Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-12812632.post-39103480897861325062010-03-22T10:05:00.009+05:302010-03-22T14:00:06.930+05:30Back from National Free Software Conference - 2010I, along with <a href="http://chenthill.wordpress.com/">Chen</a>, the Maintainer of Gnome Evolution project gave a talk in National Free Software Conference - 2010, Bangalore. Our <a href="http://www.nc2010.fsmk.org/content/program">talk</a> was titled "<span style="font-weight: bold;">Developing a Free software, Inside story</span>"<br /><br />I talked about who all are developing Linux Kernel, and how one can get started etc... Then Chen talked from his perspective. It was an inspiring speech, even I felt greatly motivated by him. He started with how he was excited, when he made changes to the software he used and showed it to his friends when he was new to open-source. Later he talked about Gnome and Evolution community. In the end he had lot of fans around him, and it took him nearly an hour to leave the hall after the talk!<br /><br />Before our talk, we attended couple of talks. "<span style="font-style: italic; font-weight: bold;">Free Software Business Model – Software as a service</span>" by someone from CGI. It was the usual corporate talk explaining CGI's business and then what is SaaS, PaaS, IaaS,... There was "<span style="font-style: italic; font-weight: bold;">Debate on Open Standards draft 2.4</span>" by Venkatesh Hariharan, Policy Director, Red Hat and Prabir Purkayastha, Knowledge Commons. It was about Indian government's policies regarding mandating open standards and formats.<br /><br />I came to know about this conference only 2 days ago for the first time. It was hosted by the Free Software Movement of Karnataka(FSMK), co-sponsored by Dept of IT Karnataka, Kerala IT Mission and Govt of West Bangal. The punch-line of the conference was "<span style="font-style: italic; font-weight: bold;">Free Software is the Future... The Future is ours...</span>" I predict in future, Conferences won't provide network as everyone would have mobile Internet themselves. And this conference was ready for tomorrow already!Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12812632.post-52352904317477686862010-03-20T14:59:00.006+05:302010-03-20T15:20:17.045+05:30Weird binary!!I read about weird binary at <a href="http://twitter.com/varunkumar">Varun Kumar</a>'s <a href="http://varunkumar-n.blogspot.com/2010/03/weird-binary.html">blog</a> (<a href="http://varunkumar-n.blogspot.com/2010/03/weird-binary.html">http://varunkumar-n.blogspot.com/2010/03/weird-binary.html</a>)<br /><br /><blockquote>Number system with base as –2 (minus two) is commonly referred to as “Weird Binary”. Like binary number system, weird binary also uses the binary symbols 0, 1. The bit positions in weird binary represent the powers of (-2). For example: 11001 in weird binary represents 9 in decimal system. <a href="http://lh6.ggpht.com/_gJMNFMNmQj8/S6PNb9NbD3I/AAAAAAAANOI/hcE8fZSxDp8/s1600-h/binary_sample%5B9%5D.png"><img style="border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;" title="Weird binary" alt="Weird binary" src="http://lh6.ggpht.com/_gJMNFMNmQj8/S6PNczlbr2I/AAAAAAAANOM/Ovcj8FmyiN8/binary_sample_thumb%5B7%5D.png?imgmax=800" width="577" border="0" height="70" /></a></blockquote>This number system reminds me a saying in <a href="http://en.wikipedia.org/wiki/Tamil_language">Tamil</a> regarding tough situations, "For every foot of climbing, Slipping 2 feet". ஜான் ஏறுனா மொழம் சறுக்குது .<br /><br />So How to convert from decimal to weird-binary(base minus 2)?<br /><br />But I didn't want to check-out others solutions to the problem, before trying it myself. I wanted to find a pen and paper way to calculate it, similar to the one we use to convert from decimal to binary. And found it interesting!<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtSQ4tRBVEDmQ9QK6TA_sBL77Lw6ESTyFcG6VyG8Co2ctexQDz-wG_sWPLpPWkQf9YplCaFVgji8xUJnMXq_eXj5sI9yotfHtsXyq9UW9_nNxrIRQMWSWmC_IELOcPDUsSj3d/s1600-h/crazy-binary.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 283px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQtSQ4tRBVEDmQ9QK6TA_sBL77Lw6ESTyFcG6VyG8Co2ctexQDz-wG_sWPLpPWkQf9YplCaFVgji8xUJnMXq_eXj5sI9yotfHtsXyq9UW9_nNxrIRQMWSWmC_IELOcPDUsSj3d/s400/crazy-binary.jpg" alt="" id="BLOGGER_PHOTO_ID_5450646830410645906" border="0" /></a>Just at every alternate step, instead of going for the maximum multiple of 2 less than previous balance, find the minimum multiple of 2, greater than previous balance.<br />IOW, at alternate steps, if the remainder was 1, add 1 to next balance(quotient).<br /><br />Weird-binary can be used to represent negative numbers without any special sign-bit. But I still couldn't think of any use for this negative two base system. Can you? Is it being used anywhere?Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-12812632.post-31456520036030120892009-07-27T11:15:00.003+05:302009-07-27T11:23:17.134+05:30ullae-veliyae: Live graphs for I/O, CPU...Wrote a small utility to print live graphs of I/O per-process. Find more information <a href="http://lizards.opensuse.org/2009/07/23/ullae-veliyae-hackweek/">here</a>. As a bonus added graphs for CPU as well.<br /><br />RPM can be found here: <a href="http://download.opensuse.org/repositories/home://nikanth/openSUSE_11.1/noarch/">http://download.opensuse.org/repositories/home://nikanth/openSUSE_11.1/noarch/</a>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-12812632.post-71692758075800227662009-07-08T14:46:00.002+05:302009-07-08T15:02:03.958+05:30Atomic gitAs I wrote in <a href="http://nikanth.blogspot.com/2009/07/git-pull-mishap-and-git-clean.html">git-pull-mishap-and-git-clean</a>, the problem with git is that, operations are non-atomic. For example, if a git-pull is interrupted, or fails due to lack of disk space or network problem, the resulting repository will be in an in between state. This is problematic. It would be nice if git operations are atomic, in this sense.<br /><br />A solution could be to have the git repository inside another git repository. For example, have the linux-2.6.git repo inside another git repo, say git-o-git. When you do a pull in linux-2.6.git, and if it succeeds do a `git commit -a` in the outer git-o-git. If it fails for some reason, one can go back to previous version of linux-2.6.git repo by doing a `git clean -d -f` and `git checkout -f` in the outer git-o-git.<br /><br />It should be possible to add wrapper scripts to `git` and do this auto magically. May be it could be called as git WC, as it is built on top of git porcelain, which is built on top of git plumbing commands. ;-)<br /><br />Has anyone tried this already?Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-12812632.post-85812280850462547162009-07-08T11:11:00.003+05:302009-07-08T11:25:02.026+05:30GIT pull mishap and git cleanWhen I was doing a `git pull` from a remote repo, I ran out of disk space, which resulted in errors like<br /><br /><span style="font-size:85%;"><span style="font-family: courier new;">Updating ce8a742..faf80d6 </span><br /><span style="font-family: courier new;">error: git checkout-index: unable to write file drivers/usb/gadget/s3c-hsotg.c</span><br /><span style="font-family: courier new;">error: git checkout-index: unable to write file drivers/usb/gadget/u_audio.c </span><br /><span style="font-family: courier new;">error: git checkout-index: unable to write file drivers/usb/gadget/u_audio.h </span></span><br /><br />Freed some disk space and re-ran the `git-pull`. But it failed saying<br /><br /><span style="font-family: courier new;font-size:85%;" >$ git pull <br />Updating ce8a742..faf80d6 <br />error: Untracked working tree file 'Documentation/ABI/testing/sysfs-bus-pci-devices-cciss' would be overwritten by merge.</span><br /><br />Some of the files were created by the previous pull, but they are considered untracked files as the previous pull failed. <span style="font-weight: bold;">`git pull -f`</span> didnt help as git was reluctant to delete my untracked files.<br /><br />Deleting huge list of files one by one was a pain. I was thinking of doing a git status to get the list of untracked files and deleting them. But <a href="http://www.johnnyjacob.org/">Jony</a> rescued me by telling me about `<span style="font-weight: bold;">git clean</span>` which can delete all the untracked files!<br /><br />But I would really like to see a way to pull/checkout and over-write the untracked files, so that other untracked files, which will not be over-written, need not be deleted. Is there a way to do it?Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12812632.post-36258932887025147152009-05-13T11:43:00.007+05:302009-05-13T14:07:55.125+05:30Cloning multiple git reposMany of the maintainers of linux-kernel maintain a git repository. I usually have clones of various such repositories.<br /><br />For example I have clones of<br />Linus Torvalds's repo:<br /><small>git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git</small><br />Block Maintainer, Jens Axboe's repo:<br /><small>git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git</small><br />...<br /><br />If I do individual clones of all these repositories, it downloads and maintains duplicate copies of same objects wasting disk space, and network bandwidth.<br /><small>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git</small><br /><small>git clone git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git</small><br /><br />So I was looking for a way to share the common objects so that duplicate objects wont waste disk and network. And no surprise, git has a way to do that. Just that I was unaware of a simple option, "--reference".<br /><small>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git</small><br /><small>git clone --reference linux-2.6/ git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git</small><br /><br /><br /><br /><hr /><br /><br />Difference between cloning Jens' git with and without --reference to Linus's git.<br /><br /># git clone git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git<br />Initialized empty Git repository in /home/knikanth/labs-sw/linus/linux-2.6-block/.git/<br />remote: Counting objects: 1180249, done.<br />remote: Compressing objects: 100% (295444/295444), done.<br />remote: Total 1180249 (delta 984716), reused 1073684 (delta 878311)<br />Receiving objects: 100% (1180249/1180249), <span style="font-weight: bold;">289.32 MiB</span> | 496 KiB/s, done.<br />Resolving deltas: 100% (984716/984716), done.<br />Checking out files: 100% (27842/27842), done.<br /># du -sh linux-2.6-block/<br /><span style="font-weight: bold;">714M</span> linux-2.6-block/<br /><br /><br /># git clone<span style="font-weight: bold;"> --reference linux-2.6/</span> git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git <br />Initialized empty Git repository in /home/knikanth/labs-sw/linus/linux-2.6-block/.git/ <br />remote: Counting objects: 111061, done.<br />remote: Compressing objects: 100% (19021/19021), done.<br />remote: Total 100463 (delta 84138), reused 95679 (delta 79959)<br />Receiving objects: 100% (100463/100463), <span style="font-weight: bold;">23.21 MiB</span> | 1209 KiB/s, done.<br />Resolving deltas: 100% (84138/84138), completed with 8189 local objects.<br />Checking out files: 100% (27842/27842), done. <br /># du -sh linux-2.6-block/<br /><span style="font-weight: bold;">468M</span> linux-2.6-block/<br /><br /><hr /><br /><br />--reference automatically sets up .git/objects/info/alternates to obtain objects from the reference repository. Now I wonder whether it is possible to have circular references, multiple references, etc.. The plural file name, "alternates" suggests it should be possible, but "git clone" ignores multiple --reference on the command line!<br /><br />BTW git uses SHA-1 digests to identify objects. I wonder what is the chance of a SHA-1 collision and how git handles it? The SHA-1 digest has 40 Hex-digits == 160 bits.. So at most, only 2<sup>160</sup> objects are possible. :-)Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-12812632.post-79910136097010825172009-04-01T10:17:00.008+05:302009-04-01T11:47:03.495+05:30Type checking macros<pre>#define to_cpumask(bitmap) \<br /> ((struct cpumask *)(1 ? (bitmap) \<br /> : (void *)sizeof(__check_is_bitmap(bitmap))))<br />static inline int __check_is_bitmap(const unsigned long *bitmap)<br />{<br /> return 1;<br />}<br /><br /><span style=";font-family:arial;font-size:100%;" ><br />The above macro is nothing but just<br />#define to_cpumask(bitmap) (struct cpumask *)(bitmap)<br /><br />But it also does a compile-time checking that the parameter passed is of type<br />(const unsigned long *). If it is defined as an function all these ugly magic is not<br />needed. But a function cannot be used as a static initializer. Try declaring a variable,<br /></span><span><span style=";font-family:arial;font-size:100%;" >static int a = printf("ok");<br /></span></span><span style=";font-family:arial;font-size:100%;" >and one would get an error, "Initializer element is not constant".<br /><br />I really wonder whether gcc might one day optimize out your type-checking call to the unused<br />function in tha above macro?! A solution could be providing an official gcc extension to assert types?!<br />Also the above code compiles fine without sizeof constification as well i.e., just return a void * from the<br /></span>__check_is_bitmap() and remove the sizeof and casting<span style=";font-family:arial;font-size:100%;" >.<br /><br />I found the above code in the linux kernel. See <a href="http://lkml.org/lkml/2009/3/25/22">http://lkml.org/lkml/2009/3/25/22</a><br />for the discussion. Even the ubiquitous printf, printk or any vararg code does not check for types. So<br />I wonder whether kernel developers need such tricky^Wugly code just for type checking, given that<br />the callers would likely read the definition of the macro as well. It is not a closed api.<br /><br />Any other project uses such type-checking macros?<br /></span><br /></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-12812632.post-65146639259814698862009-03-10T12:08:00.021+05:302009-03-26T11:03:48.215+05:30Leanux - Running Linux on FAT just for funMost of the flash devices assume that fat is the only file-system. And there are plenty of electronic devices that run linux on fat. So just to know what it is to run linux on vfat, I tried it myself.<br /><br />The openSUSE 11.1 installer wont allow you to partition the root as vfat. So I made 2 partitions, one ext3 and one vfat. Installed on ext3. Copied the whole partition to fat. I copied original files in place of symbolic links. Added vfat filesystem module to initrd . Modified grub boot from the fat partition with init=/bin/bash.<br /><br />FAT's lack of support for posix file-permissions. was easy to overcome by mounting with all permissions to everyone, without users or noexec. It doesn't support symlinks, and special files. <span>mknod will fail</span>. But /dev is a tmpfs and it just copies the persistent files from /dev to the tmpfs on boot, instead of copying I created fresh device files in tmpfs. `mount` failed trying lock the file /etc/mtab. Mounting with -n worked. I guess plenty of things would fail if I try to run a proper desktop on FAT as it is.<br /><br />I booted only to /bin/bash. When I tried doing a "exec init 1", it complained something like cannot remove /var/run/do_confirm. I didn't proceed further. This was a fun way to kill time while getting some insight of the booting process.Unknownnoreply@blogger.com5tag:blogger.com,1999:blog-12812632.post-48229813657943189802009-02-16T12:37:00.008+05:302009-02-16T14:16:12.384+05:30Latest and greatest(untested)?!<span style="font-size:100%;">Linus released<br /></span><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">2.6.24</span> on January 24th 2008,</span></li><li><span style="font-weight: bold;">2.6.26</span> on July 13th, 2008, and</li><li><span style="font-weight: bold;">2.6.27</span> on October 9 2008<br /></li></ul><span style="font-size:100%;"><br />Here is when it reached the users<br /></span><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">Gentoo</span> 2008.0 released on </span><span style="font-size:100%;"> <a href="http://www.gentoo.org/news/20080706-release-2008.0.xml">July 6, 2008</a> has linux 2.6.24 which was ~<span style="font-weight: bold; font-style: italic; color: rgb(51, 51, 255);">5.5 months</span> old.</span></li></ul><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">Ubuntu</span> 8.10 released on<a href="http://www.ubuntu.com/testing/intrepid/beta#Linux%20kernel%202.6.27"> October 30th, 2008</a> has 2.6.27 which was ~<span style="font-weight: bold; font-style: italic; color: rgb(255, 0, 0);">0.6 months</span> old.</span></li></ul><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">Fedora</span> 10 released on <span class="bday"><a href="http://linux.slashdot.org/article.pl?sid=08/11/25/1517233&from=rss">25 November 2008</a> has 2.6.27 which was ~<span style="font-weight: bold; font-style: italic; color: rgb(255, 102, 0);">1.5 months</span> old</span>.</span></li></ul><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">Opensuse</span> 11.1 released on <a href="http://news.opensuse.org/2008/12/18/opensuse-111-released/">December 18th, 2008</a>, has 2.6.27 wihch was roughly ~<span style="font-weight: bold; font-style: italic; color: rgb(0, 153, 0);">2.3 months</span> old.</span></li></ul><ul><li><span style="font-size:100%;"><span style="font-weight: bold;">Debian</span> 5.0 released on<a href="http://www.debian.org/News/2009/20090214"> </a><strong style="font-weight: normal;"><a href="http://www.debian.org/News/2009/20090214">February 14th, 2009</a> has </strong><span>2.6.26</span> which was roughly ~<span style="font-weight: bold; font-style: italic; color: rgb(0, 0, 153);">7 months</span> old.<br /></span></li></ul><br />Distros used by power-users seems to be always running slightly older version compared to the distros aimed at the layman! Yeah, but power users^Wdevelopers use the unstable/development/factory/head version of their favourite distro and not the released stable. But Ubuntu stable(!) is based on debian <span style="font-weight: bold;">unstable</span>! And debian stable is so outdated. opensuse seems to be quiet the latest but not straight from the unstable development snapshot.<br /><br />p.s: I use only opensuse regularly among these distros. So any mis-information and bias is likely. ;)Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-12812632.post-78269971104255408742008-12-22T10:19:00.003+05:302009-02-11T15:50:28.277+05:30openSUSE 11.1 is Out - Novell Bangalore Release Party<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Q-F6DUl1I35g7mQMLu5EzFHL8WR53Lx_qwFVdQmRcaoEw90zbvibyBNLnVcBx5EDMPkNXr8W735i9x8Y8Xl9Auyol6UlRQsuvphbDWwiLy6ZXLxW0O6Upq0u3erkjOFAq9WV/s1600-h/11.1img_0618.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-Q-F6DUl1I35g7mQMLu5EzFHL8WR53Lx_qwFVdQmRcaoEw90zbvibyBNLnVcBx5EDMPkNXr8W735i9x8Y8Xl9Auyol6UlRQsuvphbDWwiLy6ZXLxW0O6Upq0u3erkjOFAq9WV/s400/11.1img_0618.jpg" alt="" id="BLOGGER_PHOTO_ID_5282472726851369346" border="0" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-v0XUOx2smVvnW95qcPpyrDCgMT1aENcaKtOTUcUQcgW5vanWewVJSU0gpT2EMZrBQCRUotD99yj9qsSKq4LGfugYpJo4K31kFq4UwbSBAKu2l4vBGDpefuuUuXA34zXVsitu/s1600-h/11.1img_0609.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-v0XUOx2smVvnW95qcPpyrDCgMT1aENcaKtOTUcUQcgW5vanWewVJSU0gpT2EMZrBQCRUotD99yj9qsSKq4LGfugYpJo4K31kFq4UwbSBAKu2l4vBGDpefuuUuXA34zXVsitu/s400/11.1img_0609.jpg" alt="" id="BLOGGER_PHOTO_ID_5282472605662891698" border="0" /></a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-12812632.post-68018165652531975332008-11-26T17:09:00.003+05:302009-02-11T15:51:45.827+05:30Workout that worked outI have been toying around with this idea of gathering disk access patterns and using device mapper to fool the filesystem to improve I/O performance. And did <a href="http://gitorious.org/projects/disk-sort">try</a> this idea out in a limited fashion. I did a <a href="http://foss.in/2008/register/speakers/talkdetailspub.php?talkid=609">workout session</a> to improve upon this work in foss.in. Despite a cricket match being scheduled on that day, people did turn up. We discussed, hacked together and made friends, which was fun. It was cool to see some well-known kernel hackers turn up for the session and were actively involved. And I also should thank some of colleagues who also participated and helped me through out the session.<br /><br />We improved the performance, found bugs... it was cool. Now really looking forward for the upcoming much more interesting <a href="http://foss.in/2008/schedules/">sessions</a> especially the Linux Kernel Hackers Gathering and the Linux Kernel Workout. You can see the <a href="http://workouts.foss.in/2008/index.php/Speed_up_boot_through_disk_sorting">plan</a> and <a href="http://workouts.foss.in/2008/index.php/Speed_up_boot_through_disk_sorting_Workout_Report">results</a> in the links. Thanks for whoever attended the session and the organizers.Unknownnoreply@blogger.com0