Latest Entries »

Since I am fsck’ing my hard disks (with -f parameter, so it may take a while) a little intermezzo.

I recently wrote a posts about other ARM boards, and I have ordered a Cubieboard. As I mentioned, the Allwinner A10 SoC seems a quite interesting SoC.

I have also mentioned my interest in MIPS based systems. Thursday I had a discussion about them at Stack, the student computer association. It was about weather the Loongson was a 32 or 64 bit chip. It turned out to be a 64 bit MIPS. I was confused with yet another MIPS CPU, the XBurst, which I also have been reading about a while ago,

One of the systems based on this SoC is the Ben NaNote. I have read about this one in the past. Interesting to see this is open hardware.

Qi Hardware is sharing hardware.

We document all steps necessary to build hardware so anyone may join us or reproduce our hardware.

However, looking this is a 336 MHz CPU… sounds a little low for today’s standards. The website mentions it’s a JZ4720, but according to wikipedia, the 336 MHz version is JZ4730.
But I guess, this formfactor, a PocketPC, it’s a forgotten formfactor… and with all the “smart” phones nowadays…

The JZ4770, running at 1 GHz sounds more interesting, right? It’s used in the Novo7 tablets. These tablets where the ones that got me into the XBurst CPU series, as it was advertised as the $99 MIPS tablet on OSNEWS. I was interested in such a tablet, but they asked $50 shipping. 50% of the product price for shipping? I don’t think so. I am not really into tablets, and just the fact it was a MIPS got my attention.

I am more into hackable devices (The Allwinner A10 SoC is really promoting itself as such, so that’s where I’ve got the term from). A development board, or otherwise a device which makes it possible to access all I/O and install custom operating systems. This JZ4770 seems interesting just to play around with. However, the Ben NaNote, even for being slow, it might be also energy saving, as it appears to be using mobile phone batteries… but to pay $150 for a device with such low specs, I don’t think so. That tablet with much better specs is cheaper…. (buuuut… the NaNote is *open* hardware…)

But that’s the world of 32 bit MIPS, on 64 bit MIPS, we have the Lemote Loongson. We see their mini-pc, netbook, and all-in one. Besides that, we see motherboards and CPU’s. They have an online store on AliExpress, which only sells their computers but no motherboards/cpus. I mean, just a board would of course me more interesting… however, it doesn’t seem to be available. The pricing US $189.47 + $65.75 shipping… I don’t think I wish to pay that much for shipping.

Enough about pricing and stuff, let’s see what we can run on such a device. As you might have noticed, I am an ArchLinux fan. I have noticed an ArchLinux-based project, Parabola GNU/Linux, a libre distro based on Arch, have a port to the Loongson 2F (mips64el) CPU.

Debian supports both mips (big-endian modus) and mipsel (little-endian modus). I suppose this means they’re 32-bit ports. If it is about a Linux distro with many ports, then Debian is the distro to look at, but I prefer rolling distros like ArchLinux. Perhaps I should take a look at Gentoo? However, having to compile everything locally on a slow machine isn’t really what I had in mind either. But it would be a solution for a rare hardware platform. I’m thinking about Alpha, as Debian has dropped its support for this architecture.

I don’t have any of this hardware… I am just… looking what is out there,

Now, let’s get started with NFS, right? Well… first things first… this configuration is supposed to replace the BeagleBoard. As mentioned, I have occidentally overwritten its SD card. This also means I cannot access its current configuration.

I cannot login to the device anymore over ssh or serial connection due incorrect content of the root filesystem. However the NFS server is still serving perfectly fine. Since I cannot login, I cannot gracefully unmount the filesystems. The point is, I am listening to music. The music is on the USB hard disks connected to the BeagleBoard, which I will have to shut down in order to connect them to the Raspberry Pi to configure the mount points. If I could access the old configureation, I could just copy over the entries in /etc/fstab.

I will be using UUIDs to identify the partition to mount, as, when using USB, I cannot predict which device name it will have. I mean, if I disconnect, and reconnect the hard disks on a different USB port, I wish not to have to change the configuration. Therefore I will use UUIDs so no matter what device name it gets, it will work. So, let’s delay configuring the mount points to a later point. We will configure the mount points (same as currently on the BeagleBoard):

/mnt/1000 : 1000 GB USB HARD DISK, DATA
/mnt/1500 : 1500 GB USB HARD DISK, DATA
/home : 250 GB USB HARD DISK, HOME PARTITION

If I just create the directories, the rest of the procedure should work, and the actual hard disks can be added later. Let’s install the NFS software. Also… let’s install vim, the editor I am used to, as it isn’t installed by default in an ArchLinux installation (vi and nano are)

# pacman -S nfs-utils vim

For security reasons, we will set up an nfs root

# mkdir /srv/nfs4
# mkdir /srv/nfs4/1000
# mkdir /srv/nfs4/1500
# mkdir /srv/nfs4/andre

and add the following to /etc/fstab

/mnt/1000 /srv/nfs4/1000 none bind 0 0
/mnt/1500 /srv/nfs4/1500 none bind 0 0
/home/andre /srv/nfs4/andre none bind 0 0

and set up the exports in /etc/exports

/srv/nfs4/ 192.168.178.1/24(rw,fsid=0,no_subtree_check)
/srv/nfs4/1000 192.168.178.1/24(rw,no_subtree_check,nohide)
/srv/nfs4/1500 192.168.178.1/24(rw,no_subtree_check,nohide)
/srv/nfs4/andre 192.168.178.1/24(rw,no_subtree_check,nohide)

To start the nfs server, just now

# systemctl start nfsd.service rpc-idmapd.service rpc-mountd.service rpcbind.service

Verifying the exports from my desktop machine:

$ showmount -e 192.168.178.49
Export list for 192.168.178.49:
/srv/nfs4/andre 192.168.178.1/24
/srv/nfs4/1500 192.168.178.1/24
/srv/nfs4/1000 192.168.178.1/24
/srv/nfs4 192.168.178.1/24

Since this looks fine, I can enable startup during boot using

# systemctl enable nfsd.service rpc-idmapd.service rpc-mountd.service rpcbind.service

This is the new way of configuring services at boot, as compared to the old /etc/rc.conf method.

So, I guess it’s about time to shut down the BeagleBoard and replace it by the Raspberry Pi. Even though there are some more services to be configured, such as my IPv6 tunnel, printer server, scanner server, and so on. As I am unable to gracefully shut the BeagleBoard down, and due its instability, I guess I’d better fsck all the external hard disks before putting them online in the new configuration.

One thing to verify before proceeding is to verify the Raspberry Pi boots up headless, and I’ve heard this might be an issue. However, the system comes up perfectly fine.

In order to listen some music while these operations are in progress, I will revert to vinyl. The real way to listen to music ;)
PS. I bought this record last wednesday. It’s awesome to see new music appear on vinyl only ;)

So, let’s continue configuring that Raspberry Pi, right? First, I would like to observe some weird behaviour. Please note I have attached a monitor, keyboard and screen to the Raspberry Pi, so I am not using a serial console, as I did when I configured my BeagleBoard.

The Raspberry Pi supports my monitors resolution 1280×1024, while the BeagleBoard does not (at a refresh rate high enough to be accepted by the monitor…. details) Another difference is that it works “out-of-the-box” on the Raspberry Pi. Just plug the monitor in and power it on. It will find out what resolution to use by itself, while the BeagleBoard required it as a kernel parameter.

The BeagleBoard is advertised as a developer board, while the Raspberry Pi aims at being a teaching tool. Another difference between those boards is that the BeagleBoard has a mounted RS-232 connector, while the Raspberry Pi only has the UART to pins on the expansion header, which is 3.3 Volt level. Therefore some level converters are required to be able to use this thing. I have ordererd this one on DX.com. The name says TTL, but in the specs it says “VCC: 3V / 5V”, therefore I think this one will do the trick. But I guess I will have to verify the voltage, as the Raspberry is *not* 5V tolerant.

DX.com, the chinese webshop, selling all kinds of stuff. I have ordered stuff there before. Free shipping, it may take a while to get it, but it’s for free. Not all my orders there have been without problems, but their customer services are good. If there are any problems, they offer replacement of refund. No difficult questions asked.

Anyways, why did I even start talking about the monitor being connected stuff, well, it’s because I am unable to log in (as root, I haven’t created users yet) on tty2, tty5 and tty6. But it works on tty1, tty3 and tty4. Looking at /var/log/auth.log

Nov 17 10:15:54 rpi-server login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
Nov 17 10:15:54 rpi-server systemd-logind[98]: New session c1 of user root.
Nov 17 10:15:54 rpi-server login: ROOT LOGIN ON tty1
Nov 17 10:16:04 rpi-server login: pam_securetty(login:auth): access denied: tty ‘tty2’ is not secure !
Nov 17 10:16:12 rpi-server login: FAILED LOGIN 1 FROM tty2 FOR root, Authentication failure

So, we see a successful login and an unsuccessful one. They’re similar for the other tty’s mentioned. Asking this question go Google gives me securetty. /etc/securetty is a text file which lists the tty’s where root is allowed to login. The content of this file agrees with the observed behaviour.

Still the question remains, why was it preconfigured with this content in the /etc/securetty file? One can assume it has been made for testing purposed, forgot about it, and ended in the image. Or is there a Raspberry Pi specific reason for doing this? Anyhow. I was planning to use this Raspberry Pi headless, so it doesn’t matter at this moment. However I am thinking about using a second Pi as desktop machine.

Well… the mystery has been solved. Let’s continue configuring this thing. Setting it up as NFS server… I am not sure if I have described this before when I’ve set this up on my BeagleBoard. However, due the conversion of ArchLinux to systemd, it would be outdated anyways.

Anyhow, since I’ve typed quite a lot already, the NFS configuration will go to yet another post. I have written two posts and the only thing I’ve done yet is booted it up, set root password and hostname.

PS: I’ve found an interesting link:Small Linux PCs overview

So… time to install ArchLinuxARM on my Raspberry Pi.

I will be using the ArchLinux image for the Pi released on 18 September 2012. I believe this is the first release using the new ARMv6 repo. This is an full image of a 2 GB SD card, so just a simple # dd bs=1M if=archlinux-hf-2012-09-18.img of=/dev/mmcblk0 will do the trick, given you enter this command as root, on the right machine, as stupid me entered this command on the BeagleBoard in stead of the laptop.

Since I am using a 16 GB SD Card, I will have to resize the partition to use the full card. However, I am planning to do this as final step, so I can create an 2 GB image of the configured system.

Given above steps went correctly, just insert the SD card into the Raspberry Pi and power it on. ArchLinux boots up. At this point, the /boot partition still contains the old-style bootloader. The new bootloader is however in the repository. As a first step I am planning to do an upgrade anyways. The default login is username/password root, which of course has to be changed. Anyhow… about upgrading the system, on ArchLinux:

# pacman -Syu

However, this gives an error less then 1024 bytes per second transferred the last 10 seconds. The default repository is set to a GeoIP/load balancer. It appears this sends me to the Chinese mirror. When pinging it I have a ping of ~450 ms. So, editing the /etc/pacman.d/mirrorlist. commenting the “load balancer” out, and removing the # from the Dutch mirror solves the problem, and the upgrades, including a new bootloader in the /boot partition, have been installed.

So… some basic tasks that need to be executed now, such as setting up root password, hostname etc. On ArchLinux, this used to go to /etc/rc.conf by setting HOSTNAME=, however, this method of setting up the hostname is deprecated. ArchLinux has switched to systemd recently. I have mentioned before, on my other machines, this switch required some changes. Merely the init= boot parameter, as there is some backwards compatibility with old configuration. However, it means I have to look at the new way of configuring stuff. (Yeah… I have been lazy for my old installations, not changing the configuration files to new style.) Please note that I can recommend setting the hostname first, before installing anything else, since some daemons may use it, and otherwise they’ll use the default.

# hostnamectl set-hostname rpi

However this gives an error: Failed to issue method call: org.freedesktop.PolicyKit1 was not provided my any .services files Apparently, for this to work, you need to install polkit and reboot first.

More ARM

Well…. the Raspberry Pi Spawns Competitors, so says the article on OSNews. I have been looking at the ArchLinuxARM website for a while, and I have noticed the number of supported boards to rise. One particular SoC that drew my attention was the Allwinner A10. The specs of this SoC seem nice, and so I was considering buying a device based on this SoC. An example of this was the Mele A1000. Another variant of this is the Mele A2000. Another interesting fact these devices have a SATA HD dock. The Mele A1000 is cheaper on DX.com. Also note the shipping on AliExpress appears to be pretty expensive, while DX.com has free shipping.

This device is sold as a media player, but are advertised as “hackable device”, so it seem cool to play around with. Interesting fact is this media player has a VGA output, something which both the BeagleBoard and the Raspberry Pi lack. Then I read the OSNews article, mentioned above. In one of the comments, a link to the Cubieboard. So, it’s sold as just a board, like the BeagleBoard and the Raspberry Pi. Interesting fact is this board has 1 GB of RAM, compared to 512 MB of the Mele A1000/A2000. There is no VGA connector on the Cubieboard, but on the I/O header there is a VGA output. It also offers a SATA port. Sooo… it looks like an interesting board. Also note this board is funded though crowd funding.

Another chip I have my interest in is the Loongson. This is not an ARM chip, but a MIPS chip. I just have my love for exotic hardware. Lemote sells laptops and PC’s based on their CPU. I know only about one webshop selling them, the earlier mentioned AliExpress. However, it mentions only one model, while their sites mentions four models of the Mini-pc.

So, the Raspberry Pi is a British computer. It is ARM-based. Since we’re using UK hardware, let’s use some UK software as well. I am thinking about the operating system RISCOS.

RISC OS is a computer operating system designed in Cambridge, England by Acorn. First released in 1987, its origins can be traced back to the original team that developed the ARM microprocessor.

So, one could say, this is *the* OS that *should* run on ARM-based machines, like the Raspberry Pi. And since both are from the UK… do I need to say more?
Installing…. well… just download and extract the image and write it to the SD card. It’s a quite trivial task, right? Well…. I did something stupid there, well, with the ArchLinux image. I wrote it to the wrong SD card….. the SD card in my BeagleBoard in stead of my laptops SD card. Oops.

However, that’s out of scope regarding to this post. RISCOS, so, just writing the image, put it in the Pi and turn it on. On first boot, the font cache is being built, which may take a while. Also note a little configuration is required. The screen for example, the right resolution has to be chosen. On first boot, it looked like “letterboxed” and a rather low res. The screen type was set to “auto”, which apparently doesn’t have the desired effect. The dropdown boxes for choosing resolution etc. are grayed out. One has to select the monitor mpdel (I am using Generic) then the colours (I love to see UK spelling for that word in software) (“16 million), and then resolution and frame rate (refresh rate) can be chosen.

Another thing to note is the fact the network is disabled per default. One got to enable it before one can use the internet. After clicking to enable the internet, the system got to reboot. I must say the browser shipped with it, NetSurf, cannot handle some websites. It appears to be lacking JavaScript support, and for some reason I am unable to log in to this blog using that browser.

In the software repository, available through the package manager “Packman”, I have found a firefox port. However, it’s rather outdated (Bon Echo) and it is very slow. I must say, except for that firefox port, the system feels pretty responsive. But that firefox port is so slow it’s unusable.

I still need to play around with it some more, get to know the operating system, as it is different from what I am used to. This OS is around since 1987, one of the surviving operating systems from those days… less known… not running on x86 hardware. Interesting part here… it’s source has been released under a “shared source” license. “shared source”, as in, not an approved open source license. This is due a rather remarkable condition, the OS is only allowed to run on ARM hardware. It may not be ported to other architectures.

Well… I guess I will report some more about it later, but for now, I should get ready for class. Also, the Raspberry Pi, I should get ArchLinux running on there, and configured. This Raspberry Pi was going to replace my BeagleBoard anyways… and since I accidently overwrote the BeagleBoards SD card… I need to get the Raspberry Pi running… (especially since the BeagleBoard is unstable… and will not be able to reboot since I overwrote its SD card)

Just a fun fact, from wikipedia: RISCOS line endings are LF+CR (as compared to DOS/Windows CR+LF) Also… I am still looking for a way to get screenshots out of there… I don’t know what software can handle it’s file format for storing images. At least there is an NFS server for RISCOS.

So, as mentioned before, time to fix the ArchLinux installation on my desktop “Blaatkonijn”. The problem is a broken initramfs, so it doesn’t boot up. As the initramfs is system-specific, just copying a working initramfs from a different machine doesn’t work. Therefore, my idea is to install another ArchLinux on the same machine, and use its initramfs to boot my old installation.

I have tried that approach a while ago. Back then I did not succeed. Well… the installation of ArchLinux did not succeed. There were some problems upgrading the installation. ArchLinux has gone through a couple of changes lately. The guide I wrote for installing ArchLinux on my laptop… well… none of it applied anymore, that I can tell you. I guess, I have used that same cd for that attempt, but I am not sure. Anyhow…. it appears the cd was old compared to the repository, requiring some manual action to let it upgrade. For just creating an initramfs… too much touble.

So… today I downloaded and burned the current installation image. It was fresh, released this month. Cool! But everything has changed. No more installer! Just a tool to create a root fs. So, the installation is just, install root fs, install boot loader, done! (ok, over-simplified…. you do have to set passwords etc.)

There is also a command arch-chroot. Which does a chroot, but also automatically mounts the API file systems. This is to be used during the installation. However, it appeared my old installation was too old for this tool to work with. Creating the initramfs is also a part of the installation procedure. So, I just created the initramfs, and copied the content of /boot over to my old installation, and ran grub-install on the partition of the old installation. (The old installation did not have a separate /boot partition) Also, I copied the content of /usr/lib/modules to the old installation, as the new kernel of course needs the corresponding modules.

Please note, grub2 is now the default boot loader, no longer grub1. It even appears grub1 has been removed from the repository. I am used to grub1 installations. Also note the previous attempt used grub1 in a dedicated boot partition. It seems, a dedicated boot partition is no longer an option in the current ArchLinux installation procedure. With the installer, one could define a separate boot partition. Of course this can be done manually, but that’s now out of scope of this post.

So, on the new installation, after installing the root fs, I had to install the boot loader, so, grub2. This installer created an example config file. As I am copying it over to the old installation I have to change the partition to boot. The config file uses the parition UUID to identify the partition. using the command blkid one can determine the UUIDs for the partitions. Changing this made the system boot.

Upgrading the system…. as the system was out of operating for a few months, there are off course many many updates available. Please note, removing the copied modules again, otherwise the kernel upgrade will fail over the file conflict, as it will attempt to install those. Other errors, which I have met the recent months, such as the /etc/font/conf.d/* exists, resolved my renaming that directory, also appeared again.

Another problem appeared when trying to upgrade glibc. As I have been attempting to resolve the problem, I do not have the exact error message anymore. Something like not overwriting dir lib with file. Therefore, I figure this is caused by the changed in the filesystem, changing the directory /lib to a symlink /usr/lib. Doing this on a live system required calling ld-2.16.so manually, as, after renaming the /lib, running dynamically linked binaries, of course, fail.

[root@blaatkonijn /]# mv lib lib_
[root@blaatkonijn /]# /usr/lib/ld-2.16.so /bin/ln -s /usr/lib /lib

After this, the glibc package installs…. and after waiting for over 500 packages to install, we’re done. Rebooting the system… which succeeds… however, I see a text login, my graphical login doesn’t start. But this is another known issue, which I was still to report about.

The problem is rather simple… and if one would read all the messages during the upgrades, one would have noticed. However… when a lot of packages are being installed, such a notice is snowed under quickly. As mentioned, many things have changed in the ArchLinux world. The sysvinit has been replaced by systemd. To boot correctly, one is supposed to add systemd to the init= kernel parameter. From the pacman logs on my laptop:

[2012-09-04 18:09] :: Append 'init=/bin/systemd' to your kernel command line in your
[2012-09-04 18:09] bootloader to replace sysvinit with systemd

So… now, the system is working correctly again. I should add that sound card again and verify it works with ArchLinux, so I can say for sure Windows sucks!.

First of all, I have a confession to make. I occasionally use Microsoft products. On my desktop computer I have installed various Operating Systems, including Microsoft Windows XP SP3.

My ArchLinux installation on this system is broken after a kernel upgrade. During kernel upgrades, a new initramfs is being built as well. There is something wrong in my installation causing the resulting initramfs to be broken. So, I decided to use Windows XP in stead.

When I attempted to boot Windows XP, I encountered a BSOD during boot. The message was INERNAL_POWER_ERROR. I have not encountered this BSOD before. After looking around on DuckDuckGo, it appears to be related to the power managemant subsystem. Even booting in safe mode resulted in the same error.

BSOD: INTERNAL_POWER_ERROR

So, what was the cause of this problem? Well… before I continue, I wish to show the answer Microsoft showed after I was able to boot the system again.

HP Memories Disc Creator. This has been installed with either my printer or my scanner. However… a program to burn a CD with photos, how can it cause a BSOD. Looking at the functionality, it should be a userspace application, and so it should not be able to cause an BSOD, especially when this application was not running at all! Is Hewlett-Packard doing something fishy behind my back? Or did Microsoft fail at pointing out the cause of the problem? And how is updating Windows going to help with a problem caused by a third-party product?

Well…. let me disclose some more details on the cause of the problem. I recently added a sound card to the system. This sound card appeared to operate fine on other Operating Systems. (Even though, I haven’t checked if it actually functioned. I hadn’t connected the cables yet) However, this sound card, or rather, its driver, seemed to be the cause of the INTERNAL_POWER_ERROR.

The sound card, a Creative Labs ES1370, an old sound card I still had lying around somewhere, is supposed to work out-of-the-box on Windows XP, but somehow, its driver causes the BSOD. I have verified it by renaming the driver file, and Windows booted fine. Putting the file back, and activating the device caused Windows to freeze, to BSOD again on next boot. Therefore I have removed the card.

Besides, there are some more computer problems I should write about…. and I should have written about them right after they happened, as I am forgetting the details about the problems…

But some questions remain? Is the sound card broken, or is this a pure driver issue? Perhaps it used to work fine under xp gold, but due some kernel changed it stopped functioning… I have seen this before with some driver. Or perhaps there is really a problem with this HP stuff, causing a conflict with the sound driver, even though…. that would be rather weird, wouldn’t it? Another possibility is that this driver doesn’t play nice with other sound card drivers….

Still…. it remains a strange error for a faulty sound card driver…. however, hibernation is only working when all drivers on the system support it. Once an NT4 driver is installed, or the video runs in VESA mode, Windows XP will disable hibernation. Therefore, I suppose every driver must have some interfaces to the power subsystem. If this driver was reporting some faulty data to the power subsystem it might have caused the error.

 

 

Lieve mensen, als ik zo op Facebook kijk zie ik al enkele mensen die niet gaan stemmen. Daarom deze oproep, voor de mensen die nog niet besloten hebben, om toch te gaan stemmen.

Verandering is een traag proces, zo traag, dat je het nauwelijks merkt. Daarom kan het lijken alsof je stem geen zin heeft, maar, kijk eens naar de wereld in een groter perspectief. Je stem zal morgen geen betere wereld op leveren, maar kijk naar de langere termijn.

Voor degene die een nieuw systeem willen, ook dit zal een traag proces zijn, en door het huidige systeem te boycotten door niet te gaan stemmen help je dit proces niet. We hebben 12 nieuwe partijen in ons land. Zegt dat niet genoeg? Er zijn ook politici die de gevestigde orde zat zijn! Geef een nieuwe partij een kans, zoals de PiratenPartij, Mens en Spirit, Partij van de Toekomst, SOPN.

Zelf stem ik op de PiratenPartij. Dit is een partij van de Nieuwe Politiek. De PiratenPartij heeft een deel op de site, LQFB, waarmee de leden kunnen meediscussiëren over het beleid. Op deze manier blijft de burger invloed hebben, heel de regeerperiode lang. Naar mijn weten hebben/willen de SOPN en de PvdT een soortgelijk systeem waarbij de burger heel de periode lang inspraak blijft hebben, in plaats van een keer per vier jaar* in de stembus,

As I also have to upgrade the packages on my server, and the /lib exist problem, when forcing installation, caused some mess on my desktop machine, I really have to do something different on my server when upgrading the packages there.

http://www.linuxquestions.org/questions/linux-newbie-8/arch-pacman-su-error-glibc-lib-exists-in-filesystem-4175418135/ gave me some solution:

$ grep '^lib/' /var/lib/pacman/local/*/files

To remove all packages except glibc which install in /lib. In the case of the server, these were gcc-multilib libtool-multilib and lib32-glibc. In other words, the 32 bit support parts.

So, in order to revert the system to 64 bit, we use:

# pacman -S -d gcc-libs

To use only the 64 bit versions of the gcc-libs. The option -d is added to not check for dependencies. Please note I have switched to using pacman directly in stead of using yaourt. This feels a little safer when doing operations that could destroy the system.

# pacman -R lib32-gcc-libs lib32-libltdl lib32-glibc

However upgrading the system still fails due the existance of /lib. I have removed all packages that exist in /lib, thus this was not the problem. It seems, the problem was the existance of the directory /lib/yaourt. Moving this directory temporary outside /lib makes the upgrade work. So, when it’s finished, the services that are affected are restarted, the removed packages have been restored, I can move the yaourt directory back where it belongs.

So, now, we know the solution for the /lib exists problem which has been appearing on the internet on many places, just move the yaourt directory (temporary) elsewhere and perform the upgrade through pacman directly.

After the upgrade, it seems the /lib/yaourt directory has been recreated.