Search Results: "will"

21 January 2007

Sven Mueller: ATmega16 controller and DOG-M LCD module - can t get it to work right

Well, today I worked on a new little hardware project. It’s supposed to become open source (both schematics/PCB layout and software), but I want to work on it together with a close friend more or less exclusively for now. Anyway what it is going to become is a small controller board with a 2×16 character LCD module (DOG-M162 from lcd-module.de, an Atmel ATmega16, a small serial EEPROM, an IR transceiver, a USB port (featured by an FTDI USB2serial chip) and two relais outputs. The software will use the board as an external controller for Canon EOS* cameras (one output controlling the autofocus trigger, one the shutter trigger) with several “programs” which take a photo every X seconds or opens the shutter for a given amount of time (up to several minutes for night time photos). Anyway, today we worked on the first prototype board and tried to get the LCD to work. First we tried a 3.3V setup for the board - our initial goal - and several software versions later, we used an oscilator and found rather disgusting signal edges, so we switched to 5V (all components used were 5V and 3.3V capable, except that the display needed a slightly different circuit with a capacitor replaced by bare wire and another removed). Now the signal edges looked fine and we tripple checked that all connections were as expected. But even after trying two different initialization routines from the web and writing an own one from the controller specs, we were not successfull. This is quite frustrating, so if anyone would be able to help here, please leave a comment or contact me by email.

Alexander Schmehl: Warning!

Don't install the new supertux in experimental! You might loose contact with your friends, your wife will leave you and you will get fired from your job. But you'll surely have a lot of fun ;) Update: Due to licensing issues, supertux is curently shiped without sound and music files, so it needs to be invoked with supertux --disable-sfx --disable-music from the commandline. Upstream is working on it.

Daniel Baumann: Re: Package Maintenance

My last entry is maybe not so well understandable. In a mail between Alberto Gonzalez Iniesta and me, he put it in much better words than I could:
	Date: Sun, 21 Jan 2007 14:05:29 +0100
	From: Alberto Gonzalez Iniesta <agi@inittab.org>
	To: Daniel Baumann <daniel@debian.org>
	Subject: Re: [late]Thanks for your work
	On Sun, Jan 21, 2007 at 01:08:48PM +0100, Daniel Baumann wrote:
	> Hi agi,
	>
	> the orphaning of some packages wasn't ment as a signal to get 'please
	> thank me' or so, nevertheless, thanks for your mail.
	I know it wasn't meant to be that. But I really appreciate the work of
	some DDs, specially those that do their job, mind their businesses AND
	don't make of it a power position. Those hundreds of DDs or the like,
	that simply like this as is, and don't make of it a power struggle or a
	cabal thing. And you are one of them, as others I could name are.
	> I was taking care about 2 to 5 hours every day and nearly all of the
	> weekends to keep my packages in shape. All I got from this is rants
	> withouth any concrete background like 'look at him, he has so much
	> packages, they can't be good. They must be crap, it's impossible for one
	> person'. Also, some people in Debian do have a problem when people do
	> more than they do themself, and they're hating the others for that.
	Yep, that's what I meant. Those that are looking for competition... In
	a free software community. Morons.
	> Now, I'm just tired of that and went down from ~150 to ~100 packages. I
	> think, I did not point that out very clearly.
However, I am not going MIA now. I still care about my packages, but for a smaller number of them (reducing them in a second orphaning round down to ~50 in a few weeks). And don't worry, there will be no more entries about this topic from me. Thanks Alberto and the few others who replied.

Christian Perrier: 99,51%

This is the current translation ratio for French in unstable, after 4 days of "blitz l10n NMU". Many other languages did benefit from this as well, as shown here (for instance, Czech went over 90% for the first time as far as I can tell). All remaining packages with incomplete or missing French translations have prepared NMUs and we can expect reaching the Grail in the next week. If I have enough courage, I'll probably continue this blitz NMU campaign to kill as many debconf l10n bugs as possible. Of course, if maintainers do it themselves as sugegsted by Javier, it will be quicker.

Jan Wagner: Music and Debian

Today I found a way to combine consuming my favorite Radio Station and using my favorite System Distribution.

On working hours and most of the time at home I’m listening to Frisky Radio, founded by Faisal Sultan. But I’m missing it the 3 hours per day, when I’m traveling between work and home town. I did realize, Frisky Radios provides podcasts, but only one per week and the download history isn’t such long. Some days later, I thought stream ripping could be nice. So I did run:
$ apt-cache search stream ripper
goobox - CD player and ripper for GNOME
kstreamripper - kde frontend for streamripper
streamripper - download online streams into audio files
tunapie - Lists audio and video streams from Shoutcast and Icecast
My decision was to use streamripper in combination with screen.
Streamripper can provide a relay server, where you can listen to and save bandwidth and decide, what should happen with already existing tracks. This all seems very nice and I’ll see how lovely it will work together with my player, which name I will not mention in this context. ,

Steve Kemp: Turn another page at the animal bar

When I moved to Edinburgh and lived in a student flat we decided we needed pets. Gerbils were chosen as they were small, cute, and easy to hide. (Because we weren’t actually allowed to keep pets ..) After a few years of gerbils we graduated to rats. The king of the rodent world. Rats rock: They are small, cute, agile, incredibly soft, very non-bity and highly intelligent. Time passed and I moved out to live alone and then started to move up the food-chain with my own pet cat. (Tigger). Badnesstm happened, and Tigger was “replaced” by Six. I got hit with a year of illness, mostly, and so I decided to do the decent thing and return Six to somewhere where he could be loved and get the attention he deserved. Since then I’ve been petless, and basically afraid to commit to looking after a cat/dog for the 10+ years that they would (hopefully) live. I want to have a cat. I would love to own a Dog, and after talking about things in a circular fashion for many weeks with my girlfriend we decided to compromise. So … tada .. I have rats again. Two beautiful females. Here is a picture of one of them upon my girl’s shoulder.


Click to see full-size. So two rats, Basil for me, and Moptop for Meg. All being well they will live for the next couple of years, and then we might return to the bigger pets.

Daniel Burrows: How to Breathe, Functionally (part 2)

In a previous post, I pointed out some ways that you can acheive the "compute this, now save it and compute this, ..." style of coding in a functional language such as Haskell without going mad. This is a continuation of that post.

There's one other purely syntactic feature of Haskell that I rather like for readability: Haskell lets you define variables after you use them.


GoToTheNextTrickyBit someVal
where someVal = DoThisAndThisAndThat...


Although it isn't always appropriate to do this, there are times when I find it extremely intuitive to define my variables after they're used. For instance, to take a "practical" example, compare


mailTo customer =
let customerName = getCustomerName customer
customerAddr = getCustomerAddr customer
in
makeMailingTo customerName customerAddr


with


mailTo customer = makeMailingTo customerName customerAddr
where
customerName = getCustomerName customer
customerAddr = getCustomerAddr customer


I don't know about anyone else, but when I read the first definition I mentally go "huh. Why are we extracting the customer name?", then skip down to where the name gets used, and finally re-parse the name in that context. The "where" form lets me write the code in the same order that I would read it, giving the code a natural flow. It's very important, of course, to keep the number of auxiliary definitions small; otherwise you leave too many "open questions" for the reader of your code to carry around as she works her way down to the definitions.

But it isn't all roses at the low syntactic level. IMO, the biggest practical problem with writing Haskell code is the syntactically significant indentation.

Python, of course, also has significant whitespace -- but it works mainly because it's extremely simple. Any line ending in a ":" introduces a new block, and statements within a block have the same amount of indentation. In contrast, Haskell's rule...well, just read that link above. You can write code that has the same meaning under any indentation, but it's not idiomatic to do so -- and worse, since the statement terminators are not obligatory, a missed terminator might work fine, might change the meaning of your code, or might fail to compile in an obscure way.

A side effect of the complicated indentation rules in Haskell is that the Emacs Haskell mode doesn't work very well at indenting my code. It usually chooses an indentation that I don't want, and often one that doesn't even compile. I'm sure Emacs could do better, but I would be willing to live with a little more punctuation if it meant that the code was easier for programming tools to process correctly. Functional coding advocates assert, correctly IMO, that side-effects are problematic because even smart programmers will write more bugs in their presence. I think the same logic should apply to syntax: making the language harder for humans and machines to parse has negative overall effects, even if it is possible with sufficient effort to parse it correctly.

I think that conceptually, Haskell is a great language -- the problems I see with it are issues of syntax, tool support, libraries and speed (laziness has a high price). Oh, and also the fact that, as with most programming languages that are pleasant to use, you can't get a real paying job writing in it unless you have a PhD. :-(

Daniel Burrows: How to Breathe, Functionally (part 1)

David Welton writes that the problem with functional languages is that you don't get to mentally "catch your breath" between computations; piling function invocations on function invocations makes it hard to understand what's actually being calculated. He has an amusing summary of how functional code can become unreadable:


Do this with the result of this with what this produces when given this input that is derived from this function which takes the result of this other thing after calculating the result of something that is derived from the output of a function that ...


Indeed, I've seen functional code like this (much of it written by myself). Here's a particular gem:


f splitPoints = map fst $ tail $ scanl (flip ($) . snd) ([], toSplit) $
map splitAt splitPoints


I wrote this code a year ago, and I don't know what it does! It's hard to read and hard to understand. So, however, is imperative code that says


Add 5 to A, now if B is not zero we jump to where we subtract one from B and if C is less than 3 we add 4 to C otherwise we divide C by 2 and then add it to A, then we ...


The reason both pieces of pseudocode are hard to understand is that they don't use the abstraction features built into the language. Good imperative code uses meaningful variable names, uses the structured-programming primitives the language provides, and abstracts complex operations into functions.

My rule of thumb (which is, heh, not always religiously followed) is that a piece of program structure that does more than about 3-6 things is probably too complicated; it seems like that's about as much local context as I can hold in my head comfortably (and the number is more 3 than 6 these days, if you get my drift). As David puts it,


If you'll bear with a poor comparison, sometimes programming is like a song. You do the tricky section, then you go back to an easier section and catch your breath for a bit.


The problem seems to be that people trained on imperative languages, when they're tossed into the ocean of functional coding, can't find the guideposts and landmarks that would help them impose some structure on the water. Should I put this complicated expression inside a "let", or break it out into another function? When do I use a higher-order function to unify two dissimilar pieces of code? Should I write this code in terms of higher-order library functions or directly? It's easy to wander off down a chain of nested invocations of anonymous higher-order functions, or composed partially applied library functions, just "because you can" and end up forgetting what you were trying to do in the first place.

Luckily, some of the basic rules of keeping your code readable remain more or less the same: assign intermediate results to variables with meaningful names, and abstract complicated operations into separate functions. To tackle David's example:


You get sections with DoThisAndThisAndThatWithTheResultsOfSelectThisFromTableXYZ that you have to slow down to think through.

...

GoToTheNextTrickyBit where ManyThingsHappen.

All in all, you wind up with a sort of ebb and flow that works out pretty well if you're in tune with the code being written, going from intense calculations, to a line or two where you do no more than store things in a variable, take a breather, and prepare for the next important stanza.


The way to "take a breath" in a functional language is generally to assign an intermediate result to a variable, or to extract a complicated operation into a function and give it a meaningful name. One Haskell approximation to David's example is


do DoThis
AndThis
results - SelectThisFromTableXYZ
someVal - AndThat results
GoToTheNextTrickyBit someval


If you're writing pure functional code, you might write


let
results = SelectThisFromTableXYZ
someVal = AndThat results
in
GoToTheNextTrickyBit someVal


Of course, this will become unreadable if you write a huge complicated nested "let" expression in place of "AndThat". For a truly dreadful example of this kind of coding, check out the Gnucash Scheme code that generates the "Cash Flow" report (warning: read this in short bursts, or you WILL go blind). This is exactly analogous to writing too many nested loops and conditionals in imperative code, and the fix is the same: find logically distinct bits of code and extract them into separate functions.

I have a few more thoughts, but this post is getting too long, so I'll inflict them on the world in another post. The rule that short things are easier to understand applies to blog posts as well as code. :-)

Daniel Burrows: Via C7: it goes fast AND slow!

The low-powered system I assembled recently is based on a Via Epia board and a C7 CPU. I spent quite a bit of time when I was setting it up trying to get the C7's speed stepping to work. I loaded a number of cpufreq modules without luck; crawling around on the Web only led me to discussions about how the C7 couldn't be speed-stepped in Linux and maybe the centrino cpufreq driver would work.

Well, yesterday I randomly searched again -- and poof! There was a discussion from early January about how maybe the ACPI cpufreq driver would work. I loaded it, set up powernowd, and was rewarded with


daniel@jeeves:~$ cat /proc/cpuinfo
processor : 0
vendor_id : CentaurHauls
cpu family : 6
model : 10
model name : VIA Esther processor 1200MHz
stepping : 9
cpu MHz : 400.000


Sweet. Now all I need is for the Debian kernel folks to package a version with a vt1211 lmsensors driver so I can shut down or slow the fans, and I'll be all set. (I could probably hack it in myself, but according to what I've read on the Web, the next kernel release will have a working driver)

[UPDATE: I disabled cpufreq after only a day or so, because Linux got horribly crashy with CPU scaling turned on. Hopefully the kernel will be fixed sometime in the future :-/ ]

20 January 2007

Erich Schubert: The end of the world 2.0 is near.

I'm convinced the Web 2.0 bubble will impact soon. Granted, some will survive, some will struggle - but some will just blow up. Time to sell for these. There are several reasons why I believe this will happen "soon": Many people have been keeping an hungry eye on YouTube, Rapidshare and others. It's just a matter of time until some of these predators goes for the kill. My predictions for the post-web2.0-bubble time:

Eddy Petri&#537;or: HOWTO test PPPoE without having PPPoE (long)

I don't have an ISP which uses PPPoE or more than a laptop on my desk, but still, thanks to free software, I can test PPPoE installations (to some degree).

I have set up with qemu machines a virtual LAN that is made totally in user space via a TCP socket on port 1234. I needed this in order to test the changes I am working on for the ppp-udeb Debian installer module that supports (or should I say, should support) configuration of PPPoE connections.

These are the tools whose authors and maintainers deserve kudos:


This is the tutorial I followed to configure the PPPoE server http://www.freeantennas.com/PPPoE-Server-HOWTO.html, but until then I had to make the network.

In case someone is interested, here's how I did it (these are Debian centric instructions, but I don't see anything that would stop someone to do the same even on a windows machine).
I won't repeat that tutorial, but now I can create a virtual machine (well, I'll use an existing virtual machine) and test my custom D-I images and test the changes done in ppp-udeb.

Rock on!

Evan Prodromou: 30 Niv se CCXV

I just got the Free Your Phone announcement from the OpenMoKo announce list. Looks like they'll have preview versions of the new Linux-based, Open Source phone platform available Feb 11, generally available March 11, and ready for public distribution September 11 (!). FIC is under a lot of pressure to make this product the Open Source answer to the iPhone, and I think they have a very good story. At this point I think the success of the platform is going to depend on three things. First, FIC's execution in getting developer versions out the door and ready to use. If the OpenMoKo platform stays vapourware for much past the first part of 2007, it won't be able to capitalize on the iPhone hype and current excitement. Second, FIC is going to have to resist the temptation to hold back parts of the OS or the application stack as proprietary software. Credibility in the Free Software fanatic community is going to be key for its first wave of usage, and "free enough" isn't going to be good enough for this product. A good cautionary case would be Trolltech's Qtopia. Trolltech's reputation for holding back parts of its stack has probably been the main reason this platform hasn't been taken up by Linux aficionados. Third, and perhaps most importantly, support from more hardware vendors. "Open Source" is sometimes a synonym for "second source" -- it gives customers and developers the security of knowing that the success of a platform is not tied to the success of a particular company. OpenMoKo can take the Free Software niche in the smartphone OS market -- making a place among Symbian, Pocket PC, and Palm OS that appeals to hackers. I think if they can get the hackers, they can get the kind of UI quality and application availability that will get the rest of the population interested. Firefox is an example of an Open Source project that has done this recently. All in all, I think FIC has a lot of challenges ahead -- mostly internal. But I also think that if this is played right, OpenMoKo or something like it could change smartphones the way Linux and the *BSD family have changed servers. tags:

Hillary's In News bulletin: Hillary's In. She's in to win. She's in to win the Big Spin. She's in up to her chin. She's in and so is her twin. She's in with a grin and a tin of aspirin. Hillary's in by the skin of her shin. She's in with the thin fin of an elfin dolphin. So it begins. tags:

Bernhard R. Link: please add mime-types

Enrico blogged about translating the mime-types of file to a debtags, stating "I&aposm not sure it&aposs a good idea to encode mime types in debtags".

I just want to throw my two cent in here and state that I only once looked into debtooks and gave up because it does not list mime-types but some obscure other specification.

Getting suggested programs that support formats which have the same type of content like the one I want to show, to convert or to create does not help me. I most of the time do not want to edit "a video" or "a spreadsheet", but I first of all have a very specific file I want to do something with, or a specific set of formats I want to create something in. If I have a AbiWord file, Openoffice.org will not help me, and with video or audio formats it is even worse.

So after turning away disappointetly from debtags, I had to do a full mirror scan for /usr/lib/mime/packages/ files and their contents. Having that data cached in debtags would be something that really makes debtags usefull in my eyes. (And the more direct and verbatim the mime-type is encoded, the more useful it would be for me).

Eddy Petri&#537;or: RC bugs, what about important ones?

I was wondering if is right to our users that we are following only the RC bugs before a release. I think not. Don't get me wrong, I don't want important bugs count to be 0, or something similar; that would be insane to have as a goal.

I am thinking that we should (during the freeze) poke more of those important bugs that our and/or others' packages have. If you are like me, you will feel that you can't do anything/too much to improve the quality of the release during the freeze since some of the RC bugs are corner cases, not reproducible on your arch, already taken or you don't have the knowledge to fix them.

Many of the important bugs are broken functionalities that affect the users on a daily basis, and living 2 years with the same set of bugs is a pain. I don't know how that would feel, but I can imagine. I used Woody for only a half an year and after 2 months I started using backports. After 3, I started pulling things from Sarge (at the time it was testing). At the end of that half of year I was using mostly Sarge stuff and decided to go entirely into testing.


So, what do I propose? Maybe we should make some pages in the style of the RC bugs count pages which follow the important bugs.

As a bonus we might see some interesting things like bugs which were downgraded from RC - the RC graph would go down, while the important graph would rise. Of course, that wouldn't mean too much since that would be the product of badly assigned severities or downgraded and judged as non-RC bugs, but it would interesting to follow such tendencies.

Pierre Habouzit: apt-delay, or stop beeing tired waiting for apt beeing so slow !

The discussion about hooks in dpkg able to run some kind of commands (ldconfig, update-menus, ) occured more than once on the list. I've grown tired of many of the packages upgrades that wanted to rebuild my initrd's three time in a round, or to the incessant fc-cache runs, and so on. So I've hacked a tool called apt-delay, that achieves that, through some hacky $PATH manipulations, diverts some commands to very small ones that just record that they have been called, and then an apt DPkg::Post-Invoke command lists all of them, and run them at the end of each dpkg round. Even it may look ugly, it's very small, sloccount says:
   ansic:          548 (91.79%)
   sh:              49 (8.21%)
It now only deals with update-initramfs, ldconfig and update-menus, as a proof of concept. You can try it yourself, you just need to:
   $ git clone git://git.madism.org/apt-delay/
   $ cd apt-delay
   $ debuild # only needs debhelper
   $ sudo dpkg -i ../apt-delay_0.0.1_$ arch .deb
and that's all. You may want to tweak /etc/apt/apt.conf.d/99apt-delay and use /usr/lib/apt-delay/post-invoke -d that will enable some debug output, so that you can see at each apt run what has been delayed or not. Please remember that this is a proof of concept (even if it should not harm your computer, it may have problems, or even be broken sometimes ;P) Comments, thoughs, ideas are obviously welcomed.

19 January 2007

Erich Schubert: Preinstalling Linux

I read today that Ubuntu is working on an "install.exe" for Ubuntu. Which apparently will install an Ubuntu image into C:\UBUNTU so you can boot that. It's not meant to wipe out or replace windows, but live alongside on the existing partition. (I'm curious how well that works with NTFS...) I'm looking forward to that - and crazy people bringing this Ubuntu.exe along on a CD whenever they go into some computer store and install Ubuntu on all the laptops on display. If the manufactures don't preinstall Linux, why shouldn't we help them out? We're not installing a virus there or deleting preinstalled software... Would be fun for a flashmob, too. Go into the shop with a dozen people, a few to distract the employees (asking difficult questions, eventually even buying something; since there is no reason to do any harm to the shop!) and others using CDs to preinstall Ubuntu. Of course it would be even more fun if the laptop booted Ubuntu the next day... All laptops looking different, but welcoming and friendly and with lots of powerful applications. Maybe one or another will think "whoa, did microsoft upgrade them to vista overnight?" :-)

Miriam Ruiz: Backtrace

I found a really nice way to trace back the execution stack inside a program, without the need of a debugger like gdb. I’ve made some test code in C that seems to work all right in my system. I doubt if it will just work in i386 systems, but it’ll do perfect for the debugging of the code I’m currently doing. It’s great.

Adam Rosi-Kessel: Streaming Netflix

Via DRM Watch, Netflix to Offer Streaming Movies Online. My initial reaction: eh.
Netflix’s streaming service will differ from existing online movie services like those from Amazon, Movielink, and Apple iTunes. Those services offer rentals of movies for a fixed time period (e.g., 24 hours) or downloads-to-own, known in Hollywood jargon as ESL for Electronic Sell-Through. In contrast, Netflix will let users pick from a catalog of available films and let users watch any of them for up to a fixed number of hours per month, according to their subscriber level, such as six hours per month for entry-level subscribers. The service will launch with a catalog of about 1,000 titles, the same number as are available on Movielink’s rental service. The video delivery scheme that Netflix is using is a streaming-only technology that senses the user’s Internet bandwidth and adjusts the video quality accordingly; thus it is analogous to RealNetworks’s Rhapsody music service.
Limiting the catalog to 1,000 titles undermines Netflix’s key selling point: enormous selection and a long-tail business model. I could probably find those same 1,000 titles at any Blockbuster Video. So all I’m saving is a trip down the street? In return, I get something I can only watch on my computer (with Windows) for a limited number of hours? Apparently, if I want to watch the same scene a few times, or with the director’s commentary (is that even available?), I’m using up my six hours per month.Even cable movies-on-demand is a better service. Don’t get me wrong — I love Netflix as a DVDs-by-mail service. I also think the Netflix web interface and collaborative filter is pretty great, although the third-party Netflix Queue Manager Bookmarklet is a definite improvement. Based on this initial announcement, I can’t think of a single reason why I would prefer the online streaming version of Netflix. Usually I have the foresight to figure out what I want to say 24 hours in advance (the delivery time for Netflix-by-mail) and having three DVDs at once gives me sufficient options in case I’m unsure. Ultimately, I suspect Netflix just wants to send the message that it’s in the Internet-delivery market, which ultimately of course will decimate its existing business model. I just wish it had a more impressive first offering.

John Goerzen: Everything Update

It's been very busy lately. So here's an update on lots of things.

We move in to the farmhouse this weekend, starting this evening. It's not completely done, but close enough! That's exciting. But I spent 12 hours out there on Tuesday cleaning out the attic (took the day off work to do that). So I'm exhausted, and the moving hasn't even started yet.

The wood floors are all done and looking nice.

Jacob is starting teething. We have discovered that he likes both the taste and effect of infant tylenol. Though he's been better in the past few days.

More pictures of Jacob and the house will be posted once we have a chance to get them assembled.

My MacBook Pro at work finally can suspend to RAM! 2.6.19.2 with the latest mactel patches makes it work with uswsusp.

We'll probably be without Internet at home for a few days -- at least until I get the place wired up and the firewall set up.

One of our neighbors out by the farm died this week. He was out working with his tractor when it slipped off an icy road and landed on him. His wife had just moved from Tennessee last spring when they got married, and has enjoyed working with all their animals. I didn't know either of them very well, and had only met his wife. But she was interested in our house renovation project and stopped by every so often to check on it and chat (their animals are across the road from us). We were looking forward to getting to know them both.

Miriam Ruiz: More about my analysis of usplash

After my post from yesterday, I’ve been able to find out what my problem with usplash is about, although I’m stiill working in a proper solution to it. It seems that when the root filesystem is changed, programs must react accordingly. The proposed sequence for the usage of pivot_root is something like the following: To be able to analyze the exact starting sequence of the system stored in the initrd.img, we must expand its contents to a directory using cpio. Some time ago, initrd.img used to be a filesystem that used cramfs, minix or ext2 filesystems, but not anymore for the newer Debian systems. The script that is responsible for setting up the system at start is called init and is currently a shell program. Having a look at it, I found out that a temporarily environment variable is set, designing the place in which the real root filesystem will be temporarily mounted before switching it to the root filesystem: rootmnt=/root At some point later, /sys and /proc filesystems, that were mounted in their respective directories at the beginning, are moved to $ rootmnt /sys and $ rootmnt /proc to be set in their final destination directories: mount -n -o move /sys $ rootmnt /sys, and later mount -n -o move /proc $ rootmnt /proc At the end of the script, the system switches to the real root filesystem: exec run-init $ rootmnt $ init “$@” $ rootmnt /dev/console >$ rootmnt /dev/console I’ve changed my code so that /proc/… files I used are open from the very beginning, and kept open until the end of the execution of usplash, and it seems to work. I’ve also been able to write a debug log for it, storing it in /dev/.initramfs/, which is a directory that is kept in that place all the time, so that whatever is stored there is available after the soot switch. That is the directory that usplash uses to store its FIFO nodes: usplash_fifo and usplash_outfifo. Maybe I can find a way to store core files there after a SEGFAULT error, setting the proper parameters with ulimit and /proc/sys/kernel/core_pattern. All I need to find out now is how to be able to reach the contents of /etc/… after the final rootsystem is mounted. I’ll tell you when I’ve solved that.

Next.

Previous.