<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>What is Miklos hacking - frugalware</title><link>https://vmiklos.hu/blog/</link><description/><atom:link href="https://vmiklos.hu/blog/feeds/frugalware.rss.xml" rel="self"/><lastBuildDate>Sun, 16 Sep 2012 21:27:14 +0000</lastBuildDate><item><title>Frugalware history</title><link>https://vmiklos.hu/blog/frugalware-history.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="imageblock" style="text-align:center;"&gt;
&lt;div class="content"&gt;
&lt;img src="https://lh5.googleusercontent.com/-72B3Mo4hOQs/UeegcVH4YZI/AAAAAAAADNU/IwX2_lLQt5k/s128/logo-new-big.png" alt="https://lh5.googleusercontent.com/-72B3Mo4hOQs/UeegcVH4YZI/AAAAAAAADNU/IwX2_lLQt5k/s128/logo-new-big.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Given that Frugalware was founded by me, and recently James recently took over
the project leadership, I think it makes sense to look back and summarize the
past 6 years.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_the_beginning"&gt;The beginning&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;It all started with
&lt;a href="http://frugalware.org/pipermail/frugalware-announce/2004-September/000001.html"&gt;this
announcement&lt;/a&gt; about 6 years ago. It was a one-man show before, there was a
&lt;a href="http://ftp.frugalware.org/pub/archive/frugalware-0.1/ChangeLog.txt"&gt;manually
written ChangeLog&lt;/a&gt; but even then there were already quite a few packages, so
don&amp;#8217;t ask me when I started hacking on this. Yes, normally there would be a
first commit in git, but remember this was before git existed, and I hated
centralized CVS so much that we didn&amp;#8217;t use anything.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Looking back, it was all quite lame. :-) I used a mail address called "mamajom"
(English translation could be "momonkey"), tied to an ISP, with a lengthy
signature at the end of every mail I sent and was using my IRC nick instead of
my real one everywhere&amp;#8230; OTOH, I made some decisions I&amp;#8217;m happy about even
today. The first four developers (Ádám Zlehovszky, Krisztián Vasas, Zsolt
Szalai and me) were all Hungarian and despite of this, I forced every code,
test and documentation to be in English, to possibly turn the project into an
international one in the future. And that proved to very, very useful.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;It was between 0.1 and 0.2 that we (Krisztián, Zsolt and me) showed up in a
Hungarian TV (&lt;a href="http://ftp.frugalware.org/pub/other/videos/hu/"&gt;video record&lt;/a&gt;)
explaining Frugalware. This is something never happened later for some reason.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The way we found a free hosting at a university I never attended may be also
interesting. In the grammar school, our IT teacher found my Linux distribution
idea interesting enough to support, and his friend was a teacher at the Eötvös
Loránd University, which is at the same Budapest city where I live. So, with my
friend Botond Balázs (who later was my witness at our wedding) we bought an
ultra-slow old PC (some Pentium 1 with a single HDD) and we were extremely
happy, as the uni offered to host it for free. I remember it ran some Slackware
version, as Frugalware didn&amp;#8217;t support i586&amp;#8230; ;-)&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_early_days"&gt;Early days&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Then some more developers joined and we started to package all the usual free
software which is available in other distributions but I personally didn&amp;#8217;t use.
Think of GNOME, Xfce, OpenOffice.org and so on.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Of course we were still lame, the announcements still were not spellchecked by
someone native and knowledgeable enough, ending up in words like "splitted" or
"optimalization". However, we started to use an SCM (Darcs, which was horribly
slow, but at least not the centralized CVS crap). Another developer I should
mention was Bence Nagy, he came up with the idea of how we should avoid
duplication in FrugalBuilds, leading to the various package templates under
&lt;code&gt;source/include/&lt;/code&gt; in the source tree.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Then we went multiarch, Krisztián Hamar contributed the x86_64 port to the 0.3
release. At the same time, I invented &lt;code&gt;syncpkg&lt;/code&gt;, which avoided having to build
the same package on multiple architectures manually.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;We also got Gábor Lőcsei (later we met IRL and completed several bike marathons
together, resulting in a great friendship) who helped users in general on IRC,
but more importantly, for some time he did quite some bug triaging, leading to
a much better bugzilla (actually it was running Flyspray at that time) state.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The constant questions of László Csécsy (who nowadays mostly hacks
Drupal core and its modules) generated more and more improving documentation.
We first started with a LaTeX documentation, then later turned it to an
asciidoc one, in the hope of attracting more non-math contributors. ;-)&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Then we started to have some beautiful artwork, Viktor Gondor contributed some
really cool wallpapers.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Finally, I think the last two Hungarian guys who spent a hell of a time on the
project was András Vöröskői (we still link his
&lt;a href="http://frugalware.org/docs/getting-involved/en"&gt;getting started HOWTO&lt;/a&gt; for new
contributors) and János Kovács. I remember for a long time I used the
home-hosted server of János when we didn&amp;#8217;t have a fast dedicated i686 build
server and my desktop was still 32bit.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_going_international"&gt;Going international&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Then things started to happen fast. Developers outside Hungary showed up:
Gabriel Craciunescu from Germany and Michel Hermier from France worked a lot on
KDE, Gabriel also hacked a lot of the core OS, like kernel, glibc, etc.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Priyank Gosalia from India started to work on GTK tools like a package manager
frontend. David Kimpe contributed a PPC port years before I got my iBook (which
I used as my primary box for a few years).&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;And needless to say, we still made mistakes. We thought that the development of
the original Pacman package manager slowed down, its rewrite (providing a
separate library and a console frontend, instead of one monolithic binary)
seemed to never complete, and given that we were not Archlinux developers, we
never got access to its CVS. We started to use that library API in the
installer, testcases, GUI tools, while changing the API for them wasn&amp;#8217;t an
issue, since officially it was still unreleased. All this frustration (and
underestimating the cost of maintaining a fork) resulted in our Pacman-G2
project. First it appeared to be shiny, but once Krisztián Hamar left
Frugalware, we constantly lacked manpower and today the consensus is that with
git, maintaining a patchset over pacman.git would be far better, just nobody
did the work of merging the two projects. Pacman-G2 is in maintenance mode
today, and it still well serves its purpose, but it didn&amp;#8217;t see any new major
feature in years.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;We also saw a rewrite of the installer. The original one was written in bash,
then the second was written in C, using libdialog. And currently James works on
a third one, hopefully fixing lots of instability, resulting from the design
errors of the current one. ;-)&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_more_and_more_developers"&gt;More and more developers&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;And then somehow more and more developers came. Gourdin Gaetan (bouleetbil) and
Sébastien Vincent (Baste) worked a lot on the GNOME support, James Buren took
over the base system from me. Paolo Cretaro (Melko) does KDE bumps nowadays and
Marius Cirsta (mcirsta) did heroic work of including OpenJDK 7 into Frugalware.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Abdelmoumene Hamza (Slown) is a guy who volunteered to do a log of boring work.
When you can install a random Perl on Python module from a package, chances
that it was packaged by Slown are high. ;-)&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Regarding infrastructure, Benjamin Nolmans (Xarkam) stepped up, and finally
converted the data from our Flyspray instance to the more mainstream and
maintained Trac format. Regarding architectures Boris Albar (Elentir)
contributed an ARM port. Our press noise was generated by Russell Dickenson
(phayz) for a long time: he wrote newsletters regularly, and these days he
works as a documentation writer for Red Hat.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;For a long time, no more Hungarians joined the project. Then Bagdán Róbert
(kikadf) came, and even if he&amp;#8217;s rarely present on IRC, he still contributes
from time to time, and these small, but valuable contributions are what keep
Frugalware alive. :-)&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Regarding other big upgrades, Daniel Exner (dex) was the guy who stepped up and
finally packaged KDE4 for Frugalware. All KDE4 users meeting him should buy a
beer for him. ;-) Anthony Jorion (pingax) joined in 2010, and since then he
does XFCE updates.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Finally, I should not forget about Daniel Eledut (Devil505), who probably
helped me the most with my "the rest" task: he really helped out in various
areas, and he was a major Frugalware contributor for a long time.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_the_end_of_my_leadership"&gt;The end of my leadership&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Contributing to other projects is something I did regularly, since every time I
got a bugreport for a package, first I created a patch to fix the problem (in
case it could not be worked around in the buildscript), and then of course
tried to upstream it, knowing the maintenance cost of non-upstreamed patches.
Still, these were minor and my main project was Frugalware for years.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The bigger contributions came when I started to complete Google Summer of Code
projects, first SWIG, then git, finally OpenOffice.org&amp;#8201;&amp;#8212;&amp;#8201;which turned into
LibreOffice. The motivation is easy: these were still Free Software hacking,
but given that they are not bash hacking (like most packaging work for
Frugalware), more interesting problem had to be solved, GSoC also provided nice
payments, and needless to say: was useful to many people not using Frugalware.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The idea of passing over my leadership to someone else first came when I
looked back, and I saw that I spend more time on LibreOffice than on
Frugalware, even after the paid GSoC ended (later resulting in joining SUSE to
work on LibreOffice fulltime). My focus somehow just shifted from hacking a
distribution to hacking something that is directly useful for average users as
well. It&amp;#8217;s not worse or better, it&amp;#8217;s just different, and after lots of years, I
wanted to do something different.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;To sum up, I did not reach my expectations as a project leader and I waited for
a candidate I could teach and finally who could become as good as I was in
earlier years, or hopefully even better. And then James came, who first took
over the base system, and we agreed that after 1.7, he&amp;#8217;ll do releases. So it
was not unexpected, but still I was a bit surprised when I saw his
role-changing
&lt;a href="http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=979ada221b2f822f88f4468e6aefc2487fe87e48"&gt;commit&lt;/a&gt;.
But needless to say, when thinking a bit more, it was completely logical, all I
really do these days is fixing things left and right regarding my arm port
needs, and maintaining the LibreOffice package.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_summary"&gt;Summary&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The idea of writing this post is not mine. However, when I thought about how
many individuals helped this project so far, I realized I really need to create
a summary, thanking their work. Reading the above, I hope that in the past
years my leadership to Frugalware were useful and I realize that these days I
have to step back, given a better leader appeared. I honestly wish the project
to see at least as many releases as we already have, now that fresh energy
leads it. :-)&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;I tried to point out all our heroes during the last years, but it&amp;#8217;s possible I
forgot someone. If you think you&amp;#8217;re missing from this post, please leave a
comment. Thanks.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Update: the shutdown of the project was
&lt;a href="https://web.archive.org/web/20251007235917/https://frugalware.org/news/268/"&gt;announced&lt;/a&gt; on
2025-10-03.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Sun, 16 Sep 2012 21:27:14 +0000</pubDate><guid>tag:vmiklos.hu,2012-09-16:/blog/frugalware-history.html</guid><category>frugalware</category><category>en</category></item><item><title>GRUB2 vs. RAID1, cfdisk and serial console</title><link>https://vmiklos.hu/blog/grub2.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Since the Frugalware 1.7 release is near, and it uses GRUB2 by default, I
created a virtual machine, that is similar to the one we use under
&lt;code&gt;genesis.frugalware.org&lt;/code&gt;, which hosts this blog as well.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The relevant details:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
it has two RAID1 arrays with ext3:
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;$ mount|grep /md
/dev/md126 on / type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/md127 on /home/ftp/pub type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
the partition tables are created by cfdisk:
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63  1465144064   732572001   fd  Linux raid autodetect&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
the machine has a serial console configured:
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;# cat /proc/cmdline
root=/dev/disk/by-uuid/7e41c95d-cd73-4043-b0ba-4797af6ddeff ro vga=normal nomodeset console=ttyS1,115200&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Now the question is how does this config deal with the GRUB2 upgrade. First,
don&amp;#8217;t miss the official &lt;a href="http://frugalware.org/docs/upgrade"&gt;upgrade howto&lt;/a&gt;, it
covers most cases. What I want to detail here is how did I avoid starting from
scratch and creating a proper partition table using fdisk.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Here are the steps I needed:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Backup. Yes, I did screw up for the first time, so it&amp;#8217;s really needed.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Resize parts of the / RAID1 (/dev/sda1 and /dev/sdb1) with gparted livecd (resizing ext3 from cmdline parted didn&amp;#8217;t work for me).
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
mdadm re-creation as described in the upgrade howto, from fw install cd, so you&amp;#8217;ll have the required 1.0 metadata.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Reinstall GRUB1 to sda and sdb, since the physical location of GRUB1&amp;#8217;s stage* changed.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Boot back to 1.6, run &lt;code&gt;pacman-g2 -Syu&lt;/code&gt;, and &lt;code&gt;grub-install&lt;/code&gt;&amp;#8201;&amp;#8212;&amp;#8201;again, see the upgrade howto for details.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Now given that serial console needs a custom GRUB config and kernel parameters, you need to modify GRUB2&amp;#8217;s &lt;code&gt;/etc/default/grub&lt;/code&gt;. Here is my diff:
&lt;/p&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;&lt;!-- Generator: GNU source-highlight
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite --&gt;
&lt;pre&gt;&lt;tt&gt;/etc/default# diff -u grub.orig grub
&lt;span style="color: #FF6600"&gt;--- grub.orig   2012-07-19 01:57:20.000000000 +0200&lt;/span&gt;
&lt;span style="color: #009900"&gt;+++ grub        2012-07-29 14:45:50.000000000 +0200&lt;/span&gt;
&lt;span style="color: #0000FF"&gt;@@ -1,11 +1,12 @@&lt;/span&gt;
 GRUB_DEFAULT=0
 GRUB_TIMEOUT=5
 GRUB_DISTRIBUTOR="Frugalware 1.6"
&lt;span style="color: #FF6600"&gt;-GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"&lt;/span&gt;
&lt;span style="color: #009900"&gt;+GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset plymouth.enable=0 console=ttyS0,115200"&lt;/span&gt;
 GRUB_CMDLINE_LINUX=""
 GRUB_PRELOAD_MODULES=""
&lt;span style="color: #FF6600"&gt;-GRUB_TERMINAL_INPUT=console&lt;/span&gt;
&lt;span style="color: #FF6600"&gt;-GRUB_TERMINAL_OUTPUT=gfxterm&lt;/span&gt;
&lt;span style="color: #009900"&gt;+GRUB_TERMINAL_INPUT=serial&lt;/span&gt;
&lt;span style="color: #009900"&gt;+GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x3f8"&lt;/span&gt;
&lt;span style="color: #009900"&gt;+GRUB_TERMINAL_OUTPUT=serial&lt;/span&gt;
 #GRUB_GFXPAYLOAD_LINUX=keep
 GRUB_GFXMODE=auto
 #GRUB_DISABLE_LINUX_UUID=true&lt;/tt&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;(Refer to &lt;a href="https://vmiklos.hu/blog/amtterm.html"&gt;this post&lt;/a&gt; if you don&amp;#8217;t know the needed port number.)&lt;/p&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Finally run &lt;code&gt;grub-mkconfig&lt;/code&gt; to create the real config from the just modified default settings.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Reboot, and GRUB2, the boot process and the login prompt should be accessible over the serial console again.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Sun, 29 Jul 2012 15:46:22 +0000</pubDate><guid>tag:vmiklos.hu,2012-07-29:/blog/grub2.html</guid><category>frugalware</category><category>en</category></item><item><title>mtd-utils</title><link>https://vmiklos.hu/blog/mtd-utils.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Quick node about this useful project I packaged two days ago. It has a
&lt;a href="http://www.linux-mtd.infradead.org/faq/ubi.html"&gt;long FAQ&lt;/a&gt; - I was interested in
how can one access the builtin nand storage on an arm board using it.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;First, check your dmesg, you should see something like:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;Creating 3 MTD partitions on "orion_nand":
0x000000000000-0x000000100000 : "u-boot"
0x000000100000-0x000000500000 : "uImage"
0x000000500000-0x000020000000 : "root"&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;As the names say, the three items here are the bootloader, the kernel and the
root filesystem. To access and mount the last one, you need:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;ubiattach /dev/ubi_ctrl -m 2
mount /dev/ubi0_0 root
... hack hack hack ...
umount root
ubidetach /dev/ubi_ctrl -m 2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Fri, 06 Jan 2012 01:56:18 +0000</pubDate><guid>tag:vmiklos.hu,2012-01-06:/blog/mtd-utils.html</guid><category>frugalware</category><category>en</category></item><item><title>Frugalware arm port install HOWTO</title><link>https://vmiklos.hu/blog/frugalware-arm-install-howto.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;I recently got a &lt;a href="http://en.wikipedia.org/wiki/GuruPlug"&gt;GuruPlug&lt;/a&gt;. It has Debian
by default, and it&amp;#8217;s apt config is set to &lt;code&gt;stable&lt;/code&gt;, while in fact at the moment
what&amp;#8217;s the factory default is considered as &lt;code&gt;oldstable&lt;/code&gt; by upstream. So if you
blindly do a few &lt;code&gt;apt-get install foo&lt;/code&gt;, soon you&amp;#8217;ll have newer userspace than
kernel, and your device will no longer boot (based on true story - and yes,
this is not Debian&amp;#8217;s fault). Moreover, I was interested in how to install
Frugalware on this device, so here is a quick howto.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_install_rootfs"&gt;Install rootfs&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;First you need to bootstrap Frugalware from Debian. It&amp;#8217;s a good idea to install
Frugalware on a USB stick, so you can switch back to Debian in case you messed
up something and start from scratch again.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Partitioning is up to you, you&amp;#8217;re recommended to have a small FAT (type: &lt;code&gt;0x0b&lt;/code&gt;)
partition (32MB for example) at the beginning, we&amp;#8217;ll use that later. The second
can be the rest, ext4 or so.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Format and mount it (your device name may differ!):&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;mkfs.ext4 /dev/sda2
mkdir -p /mnt/sda2
mount /dev/sda2 /mnt/sda2&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Then install our pacman-g2 binary to the Debian system, so you can bootstrap:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;wget http://ftp.frugalware.org/pub/frugalware/frugalware-stable/frugalware-arm/pacman-g2-3.8.3-2mores2-arm.fpm
unxz pacman-g2-3.8.3-2mores2-arm.tar.xz
cd /
tar xf /path/to/pacman-g2-3.8.3-2mores2-arm.tar
rm .CHANGELOG .FILELIST .PKGINFO&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Installing the required packages is a single command, as described
&lt;a href="http://frugalware.org/docs/install#_a_manual_bootstrap"&gt;here&lt;/a&gt;:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;pacman-g2.static --noconfirm -Sy core base -r /mnt/sda2/&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_upgrade_the_bootloader"&gt;Upgrade the bootloader&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Once the rootfs is ready, you need a new bootloader that will be able to boot
our vanilla kernel.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;You need a &lt;a href="http://www.globalscaletechnologies.com/p-28-guruplug-jtag.aspx"&gt;JTAG
Board&lt;/a&gt;, so you can access the serial console. If you connect the USB cable to
you PC, you can use for example&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;screen /dev/ttyUSB0 115200&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;to access the device.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Given that we want to boot a vanilla kernel, we need a vanilla bootloader as
well. Before you mess with the bootloader, it&amp;#8217;s a good idea to make a backup of
its config (there is a 3 second timeout during boot - if you press any key
there, you get the Marvell prompt). Here is my config:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;Marvell&amp;gt;&amp;gt; printenv
bootcmd=${x_bootcmd_ethernet}; ${x_bootcmd_usb}; ${x_bootcmd_kernel}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;
bootdelay=3
baudrate=115200
x_bootcmd_ethernet=ping 192.168.2.1
x_bootcmd_usb=usb start
x_bootcmd_kernel=nand read.e 0x6400000 0x100000 0x400000
x_bootargs=console=ttyS0,115200
x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
ethact=egiga0
bootargs=console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
ipaddr=10.10.10.10
serverip=10.10.10.179
ethaddr=F0:AD:4E:00:CE:C3
stdin=serial
stdout=serial
stderr=serial&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The only semi-unique part is the MAC address of the network interface(s).&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;If you want to update the bootloader, a possible way is to put the new binary
to a pendrive. Given that the default bootloader does not support ext*, we need
a fat filesystem. So format the first small partition we created already (the
device name may be different in your case!):&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;mkdosfs /dev/sda1&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Till Frugalware 1.6 is released, support for GuruPlug is available in
Frugalware -current only, so download the
&lt;a href="http://ftp.frugalware.org/pub/frugalware/frugalware-current/frugalware-arm/u-boot-2011.12-2-arm.fpm"&gt;binary
package&lt;/a&gt; from there, extract the u-boot.kwb file from the guruplug directory,
put it to the new partition. (A few other models are explained
&lt;a href="http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade.html"&gt;here&lt;/a&gt;).&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Before you reboot, copy also &lt;code&gt;/boot/uImage&lt;/code&gt; to the fat partition, you may have
problems problems with reading the kernel from the ext4 partition with u-boot.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Once copying the kernel is done, reboot and in the u-boot shell do:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;usb start
fatload usb 0:1 0x0800000 u-boot.kwb
nand erase 0x0 0x60000
nand write 0x0800000 0x0 0x60000
reset&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;You can verify the updated bootloader with the &lt;code&gt;version&lt;/code&gt; command:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;Marvell&amp;gt;&amp;gt; version

U-Boot 2011.12 (Jan 03 2012 - 16:55:38)
Marvell-GuruPlug
gcc (Frugalware Linux) 4.6.2
GNU ld (GNU Binutils) 2.22&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;If Frugalware is mentioned, that&amp;#8217;s a good sign. :)&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_boot_the_new_rootfs"&gt;Boot the new rootfs&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Now you can boot your new rootfs:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;usb start
fatload usb 0:1 0x00800000 /uImage
setenv bootargs console=ttyS0,115200 root=/dev/sda2 rootdelay=5
bootm 0x00800000&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;If it booted fine, you may want to make this the default:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;setenv bootargs 'console=ttyS0,115200 root=/dev/sda2 rootdelay=5'
setenv bootcmd_usb 'usb start; fatload usb 0:1 0x00800000 /uImage'
setenv bootcmd 'run bootcmd_usb; bootm 0x00800000'
saveenv&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;h2 id="_finalize"&gt;Finalize&lt;/h2&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The rest is up to you:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
setting up a root password
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
setting up network by default using netconfig
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;and so on&amp;#8230; you know this already, nothing arm-specific.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;For the reference, here is the tested CPU and Frugalware version:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;$ cat /proc/cpuinfo
Processor       : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS        : 1191.11
Features        : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant     : 0x2
CPU part        : 0x131
CPU revision    : 1

Hardware        : Marvell GuruPlug Reference Board
Revision        : 0000
Serial          : 0000000000000000
$ cat /etc/frugalware-release
Frugalware 1.5 (Mores)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Wed, 04 Jan 2012 01:29:49 +0000</pubDate><guid>tag:vmiklos.hu,2012-01-04:/blog/frugalware-arm-install-howto.html</guid><category>frugalware</category><category>en</category></item><item><title>Userspace boot speed: less than a second</title><link>https://vmiklos.hu/blog/userspace-boot-speed.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;I did not care about boot speed for a long time, since servers usually
restarted only for kernel upgrades, laptops suspend to ram all the time,
and I have no desktop machine at home for years now.  Though one use
case started to motivate me recently: I use virtual machines a lot, and
waiting for them to boot up is boring.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;So I looked at the &lt;code&gt;systemd-analyze blame&lt;/code&gt; output, and it turned out
that for a base-only install the only service that takes a lot of time
is &lt;code&gt;netconfig&lt;/code&gt;. It&amp;#8217;s because it was a &lt;code&gt;oneshot&lt;/code&gt; service, so the whole
boot process waited for &lt;code&gt;dhcpcd&lt;/code&gt; to get an IP. A much better solution is
to just start netconfig in the background and move on&amp;#8201;&amp;#8212;&amp;#8201;and that&amp;#8217;s
exactly frugalwareutils in git does now.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Before:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;$ systemd-analyze
Startup finished in 2030ms (kernel) + 1166ms (initrd) + 6755ms (userspace) = 9953ms&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;After:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;$ systemd-analyze
Startup finished in 2039ms (kernel) + 1146ms (initrd) + 892ms (userspace) = 4079ms&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="admonitionblock"&gt;
&lt;table&gt;&lt;tr&gt;
&lt;td class="icon"&gt;
&lt;div class="title"&gt;Note&lt;/div&gt;
&lt;/td&gt;
&lt;td class="content"&gt;Again, this is for a virtual machine (where the host has some IO
cache) and for a base-only install.&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Sat, 24 Sep 2011 23:08:57 +0000</pubDate><guid>tag:vmiklos.hu,2011-09-24:/blog/userspace-boot-speed.html</guid><category>frugalware</category><category>en</category></item><item><title>systemd vs. LVM</title><link>https://vmiklos.hu/blog/systemd-vs-lvm.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Yesterday I
&lt;a href="http://frugalware.org/pipermail/frugalware-git/2011-January/056115.html"&gt;enabled&lt;/a&gt;
udev support in our LVM package, and that means LVM volumes under
systemd not work as expected. Thanks to Lennart for the quick
&lt;a href="http://article.gmane.org/gmane.comp.sysutils.systemd.devel/1073"&gt;answer&lt;/a&gt;.
:)&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Tue, 18 Jan 2011 13:22:00 +0000</pubDate><guid>tag:vmiklos.hu,2011-01-18:/blog/systemd-vs-lvm.html</guid><category>frugalware</category><category>en</category></item><item><title>Nationality of currently active Frugalware developers</title><link>https://vmiklos.hu/blog/nationality-of-frugalware-developers.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="imageblock" style="text-align:center;"&gt;
&lt;div class="content"&gt;
&lt;img src="/pic/nationality-of-frugalware-developers.t.png" alt="/pic/nationality-of-frugalware-developers.t.png" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Just a FYI:&lt;/p&gt;&lt;/div&gt;
&lt;div class="listingblock"&gt;
&lt;div class="content"&gt;
&lt;pre&gt;&lt;code&gt;$ ./chkacc --verbose
Accepting active developer 'vmiklos' [hu]
Accepting active developer 'iron' [hu]
Accepting active developer 'voroskoi' [hu]
Accepting active developer 'boobaa' [hu]
Accepting active developer 'crazy' [ro]
Accepting active developer 'priyank' [in]
Accepting active developer 'hermier' [fr]
Accepting active developer 'devil505' [fr]
Accepting active developer 'bouleetbil' [fr]
Accepting active developer 'ryuo' [us]
Accepting active developer 'gholafox' [fr]
Accepting active developer 'phayz' [au]
Accepting active developer 'elentir' [fr]
Accepting active developer 'cedynamix' [fr]
Accepting active developer 'jercel' [fr]
Accepting active developer 'exceed' [fr]
Accepting active developer 'dex' [de]
Accepting active developer 'kooda' [fr]
Accepting active developer 'centuri0' [fr]
Accepting active developer 'kikadf' [hu]
Accepting active developer 'pingax' [fr]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Fri, 14 Jan 2011 01:55:32 +0000</pubDate><guid>tag:vmiklos.hu,2011-01-14:/blog/nationality-of-frugalware-developers.html</guid><category>frugalware</category><category>en</category></item><item><title>Systemd: kernel, bluetooth, bitlbee</title><link>https://vmiklos.hu/blog/systemd-3.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Finally I can run systemd on my desktop, and not in a virtual machine
  only, since there is
  &lt;a href="http://thread.gmane.org/gmane.linux.kernel/1080727"&gt;a patch&lt;/a&gt; for the
  sched/cgroup issue I had. It was not a systemd bug, but systemd
  triggered a kernel issue, which was hidden so far.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
I just
  &lt;a href="http://frugalware.org/pipermail/frugalware-git/2010-December/055098.html"&gt;updated
  our bluez package&lt;/a&gt;, and bus activation works fine. This means bluetoothd
  is not started till somebody connects to it. Given that I sometimes do
  not log in to KDE to use kbluetooth, but just want to do something on
  the console, where having bluetoothd running is totally unnecessary, I
  consider this really nice.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
It came up on &lt;code&gt;#bitlbee&lt;/code&gt; that there is a
  &lt;a href="https://bugzilla.redhat.com/show_bug.cgi?id=662289"&gt;Fedora bug&lt;/a&gt; where
  they ask for systemd unit files for BitlBee. So I
  &lt;a href="http://bugs.bitlbee.org/bitlbee/ticket/738"&gt;created a patch&lt;/a&gt;, and the
  nice thing is that the second iteration now seems to be fine for
  Frugalware/Fedora/Debian, so we managed to build something cross-distro
  here. (I think I mentioned that&amp;#8217;s the #1 feature I like in systemd.)
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Mon, 27 Dec 2010 20:34:11 +0000</pubDate><guid>tag:vmiklos.hu,2010-12-27:/blog/systemd-3.html</guid><category>frugalware</category><category>en</category></item><item><title>Systemd Podcast</title><link>https://vmiklos.hu/blog/systemd-2.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;I just found
&lt;a href="http://media.libsyn.com/media/linuxoutlaws/linuxoutlaws160.ogg"&gt;this&lt;/a&gt;
podcast, it&amp;#8217;s a bit dated since it happened in August and things have
been improved a bit since then, but still I was happy to listen it. (The
interesting part starts at 1:10:50; 17 minutes.)&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;I already had a short &lt;a href="https://vmiklos.hu/blog/systemd.html"&gt;post&lt;/a&gt; about systemd, and I
mentioned the killer feature for me is the compact distro-independent
service file (initscript for sysvinit) format it uses, since even if the
initscript format we use in Frugalware right now is mostly
bullshit-free, it&amp;#8217;s still more bloated than the systemd service files.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Now back to why I began writing this post. :) So there is
&lt;a href="http://0pointer.de/blog/projects/systemd.html"&gt;the post&lt;/a&gt; about systemd,
but it&amp;#8217;s rather long, and it&amp;#8217;s easy to miss the point. Since the
previous post, I think there are a few more killer features in systemd:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Every service is started in a separate control group (cgroup). Do you
  remember the situation when you wanted to know who the hell started a
  given particular process? This is typically a problem if the process is
  running as root. Now this is no longer a problem, systemd-cgls will show
  you if it was started by a user or a given service, etc. (Yes, I
  consider this a security feature.)
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
Upstart already had this "restart if it crashed" feature, but systemd
  does it better: if the daemon supports socket activation, then
  messages sent to the socket are buffered by the kernel, and no message
  will be lost during the restart.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
systemd provides this on-demand feature, which is pretty much like
  inetd, so hopefully we can get rid of inetd, which was a constant
  problem previously. (We inherited a fork of the OpenBSD inetd from
  Slackware, and being a fork it did not improve since years, causing a
  constant problem.)
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Why writing this post today? Because this morning systemd
&lt;a href="http://frugalware.org/packages/103609"&gt;appeared&lt;/a&gt; in -current, so you can
even &lt;a href="http://wiki.frugalware.org/index.php/Systemd#Installation"&gt;try it
out&lt;/a&gt; without installing any unofficial package.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Mon, 20 Dec 2010 19:30:16 +0000</pubDate><guid>tag:vmiklos.hu,2010-12-20:/blog/systemd-2.html</guid><category>frugalware</category><category>en</category></item><item><title>Splashy vs. systemd</title><link>https://vmiklos.hu/blog/splashy-vs-systemd.html</link><description>&lt;div id="preamble"&gt;
&lt;div class="sectionbody"&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;So we have this &lt;a href="http://wiki.frugalware.org/index.php/Systemd"&gt;systemd wip
repo&lt;/a&gt; and one of the remaining todo items was to fix up splashy to work
with systemd.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;First, why doesn&amp;#8217;t it out of the box of systemd is a drop-in
replacement? Because splashy is not a simple init script, it hooks
itself to &lt;code&gt;rc.sysvinit&lt;/code&gt;, so it was specific to sysvinit.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Now given that plymouth was already ported to systemd, it served as a
good example. You may also ask: why don&amp;#8217;t we just switch to plymouth?
Because:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
we don&amp;#8217;t want to introduce multiple changes at the same time
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
it
  &lt;a href="http://fedoraproject.org/wiki/Releases/FeatureBetterStartup#User_Documentation"&gt;requires
  kms&lt;/a&gt;, while Splashy did not require it - so as long as it&amp;#8217;s not true
  that most video cards support kms (think of via or anything else which
  supports vesafb, but not kms), such a switch would be a regression
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Okay, enough anti-Plymouth rant. As you can see, right now the task is to fix Splashy.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The steps I did were:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
updated the Splashy theme to remove the progressbar: given that now we
  start services parallel and on-demand, it does not really make too
  much sense
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
introduced unit files: to start on boot, to stop before getty/xorg, to
  start before kexec/reboot/halt/poweroff
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
added the usual compatibility symlinks to avoid starting the old
  rc.splash (which would happen anyway)
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
added a simple wrapper that fires up splashy and once it&amp;#8217;s ready it
  sends the Booting&amp;#8230;/Rebooting&amp;#8230;/etc text to it
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The last problem is a bit more complex: now that xorg startup wants to
stop splashy, a dependency has to be declared. xorg startup is handled
by &lt;code&gt;prefdm.service&lt;/code&gt;, but in case it depends on &lt;code&gt;splashy-quit.service&lt;/code&gt;,
what will happen if you don&amp;#8217;t have or don&amp;#8217;t want a splash?&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;The solution for now is to declare an &lt;code&gt;After=&lt;/code&gt; relation: that means xorg
startup will happen after the quit of splashy, if it happens at all.&lt;/p&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;This way:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
you can disable the splash, it won&amp;#8217;t cause any dependency errors
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
if you don&amp;#8217;t have &lt;code&gt;prefdm.service&lt;/code&gt; enabled, you can even have splashy
  uninstalled
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
(this one is a bit ugly) you can disable the splash, but if you
  uninstall it and have &lt;code&gt;prefdm.service&lt;/code&gt; enabled, you&amp;#8217;ll get a
  dependency error, as systemd will have no idea what
  &lt;code&gt;splashy-quit.service&lt;/code&gt; is.
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;To test the above:&lt;/p&gt;&lt;/div&gt;
&lt;div class="ulist"&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
you need to enable the systemd wip repo (see the link above)
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
run &lt;code&gt;pacman-g2 -Sy systemd&lt;/code&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
boot with &lt;code&gt;init=/bin/systemd&lt;/code&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="paragraph"&gt;&lt;p&gt;Stay tuned, we still have a few blocker issues before merging the
(disabled by default, as you need that kernel parameter) systemd support
to current.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Miklos Vajna</dc:creator><pubDate>Wed, 15 Dec 2010 23:14:56 +0000</pubDate><guid>tag:vmiklos.hu,2010-12-15:/blog/splashy-vs-systemd.html</guid><category>frugalware</category><category>en</category></item></channel></rss>