Tuesday, June 19, 2012

Arch Linux on a WM8650 netbook (II)

UPDATE 20th November 2012: Due to recent changes in the Arch Linux boot process, this tutorial is no longer valid. You can still download an old pre-built image and install it, as I explain below. But with this old image, updating the distro (with pacman -Syu) will most likely throw some errors and maybe even break the system. Also installing applications without updating the distro (with pacman -S application_name) will likely fail because of the not updated dependencies.

In my previous post, we learned about these cheap ARM netbooks, and how to install a base Arch Linux system in one of them. If you are interested in this topic, and haven't read it, be sure to give it a look.

In this post, I'll show you how to install and configure LXDE desktop environment and the network manager daemon. If you're too impatient, too busy or too lazy, just grab the full system image (319 MiB) here or here. Then follow the first two steps I wrote in my previous post, and untar the downloaded file, by running (as root):

tar -xjf alarm-wm8650-2012.06.19.tar.bz2 -C /run/media/doragasu/ARCH_SYS/

Make sure you replace "/run/media/doragasu/ARCH_SYS/" with the directory where the Arch Linux system partition is mounted. Insert the SD card in your netbook and power it on. Arch Linux should boot as shown in this video:


You can login as the root user (login: root, password: root), and you can also login as a non privileged (but included in the sudoers) user (login: user, password: user). Remember to edit rc.conf to at least set the timezone, or you'll get the wrong time.

If you want to do it the long way, and you are an Arch Linux newbie, just follow me (or search in the essential Arch Linux Wiki). If you are an Arch Linux hardcore user, just skip this post, what I'm going to tell you is 100% standard Arch Linux, you don't need to do weird tricks or hacks like we did while installing the base system.

Desktop Environment Installation

Click to watch LXDE in all its glory
  1. Let's start installing the X-Window system. Start your netbook and login as root. If you have configured the network, I recommend loging in through SSH, to be able to easily copy and paste the commands from this post. It's also recommended to update the entire system before starting (pacman -Syu). Once you are logged in and the system is updated, start installing packages:
pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils xf86-video-fbdev
  1. If you did not add dbus to the daemons list, do it now. Edit /etc/rc.conf and add it. The daemons list should look like this:
DAEMONS=(hwclock syslog-ng network crond sshd dbus)
  1. Install the desktop environment. Here you have to choose among all the available. The most used are Gnome, KDE, XFCE and LXDE. I will detail how to install LXDE. I chose LXDE because it has a great advantage over KDE and Gnome: it may not look as eye candy as them, but requires a lot less resources. XFCE is also a good choice for machines low on resources, but I'll not detail how to install it. If you want to give XFCE a try, read its wiki page. Let's continue installing LXDE:
pacman -S lxde gamin
  1. Configure the desktop environment for the current user. You'll have to repeat this step for every user you want to be able to start a LXDE session:
mkdir -p ~/.config/openbox
cp /etc/xdg/openbox/menu.xml /etc/xdg/openbox/rc.xml /etc/xdg/openbox/autostart ~/.config/openbox
  1. Configure the session start for each user. Create a .xinitrc file in the home of each user, with the following contents:
#!/bin/sh
exec startlxde
  1. make sure .xinitrc is executable:
chmod +x .xinitrc
  1. Manually start the X session:
startx
  1. So far, the desktop environment should be working. You should see the XFCE desktop with its bottom panel. Everything should work, but... text rendering looks like crap, right? No problem, you can solve it by typing two commands:
pacman -S ttf-bitstream-vera ttf-dejavu ttf-droid ttf-freefont
fc-cache -vf
  1. You can install some commonly used programs:
pacman -S leafpad epdfview galculator abiword
PCManFM and AbiWord
  1. If you want to use a graphical login manager, you can install for example SLiM:
pacman -S slim
  1. To make slim start each boot, edit /etc/rc.conf and add slim to the daemons list, after dbus. This list should look like:
DAEMONS=(hwclock syslog-ng network crond sshd dbus slim)

Reboot and you should be greeted by the login screen! Remember you have to repeat steps 4, 5 and 6 for each user you want to be able to use LXDE.

Network Manager daemon

Network manager applet in action
If you are going to use a desktop environment, it's highly recommended to replace the network daemon with networkmanager one. This will ease a lot network configuration.
  1. Install networkmanager, the applet for the desktop panel, and gnome-keyring to store passwords for the wireless networks:
pacman -S networkmanager network-manager-applet xfce4-notifyd hicolor-icon-theme gnome-icon-theme gnome-keyring
  1. Replace network daemon with networkmanager. Make sure networkmanager is placed after dbus. The daemons list should look like this:
DAEMONS=(hwclock syslog-ng crond sshd dbus networkmanager slim)
Now if you reboot and enable WiFi (gpio 1:6:d8110040:d8110080:d81100c0), you should be able to select a wireless network and connect to it using the network manager applet, to the right of the bottom panel.
  1. You want to surf the net, right? Unfortunately, this netbook is extremely low on RAM (256 MiB). Most commonly used browsers (Firefox and Chromium) eat lots of RAM, so it's recommended to use lighter browsers, like Midori and Links. Links is very fast and has a very low memory footprint. Unfortunately, it's extremely non Acid3 test friendly: it doesn't support javascript and will not render properly most web pages (though most of them will be usable). Midori is a full featured browser, slower than Links, but can display most webpages failing in Links. To install these browsers, type:
pacman -S links midori

Links browser. Ugly but functional
Midori browser running fullscreen
Of course you can install a lot more network related stuff. Do you want to connect to the IRC? install irssi. Do you want to chat using gtalk, MSN, AIM, etc? install pidgin. Do you want to connect to a remote VNC desktop? install tightvnc, etc.
This concludes today's post. I hope you enjoyed Arch Linux the same as I do. It's a great distro and can make these cheap and tiny netbooks useful for lots of interesting projects!

42 comments:

  1. You can also try netsurf. It does not support javascript either, but looks much nicer than links and still has very low memory footprint.

    ReplyDelete
    Replies
    1. Somebody suggested me also using dillo browser, and it also runs fine, it looks like the missing link between Links and Midori. I'll try netsurf when I have some time.

      Thanks for the suggestion!

      Delete
    2. I know it's late to answer, but, well, XXXterm is a lightweight Webkit browser that is many times faster than Chrome.

      Delete
    3. Thanks for the suggestion. Maybe I should write an entry about lightweight web browsers for this laptops. Until now we have Lynx, Links, Midori, Netsurf, Dillo and XXXterm...

      Delete
    4. Just another question, sorry. The SD card must be formatted as EXT3 or does the Linux kernel from the u-boot able to boot from another filesystems like JFS?

      JFS is a very lightweightjournaled FS which relies on very low CPU usage. Don't worry, it's pretty known on Linux community since 2002 or so.

      https://wiki.archlinux.org/index.php/JFS_Filesystem

      And thanks for the tutorial, it's awesome to have a low cost ARM netbook with Arch, now I could play Slashem and DCSS anywhere.

      Delete
  2. Although a Linux newbie, I do believe I understand your very well-written instructions. One thing that is not completely apparent to me: does Arch run off the SD card leaving win ce x (7 in my case) undisturbed so that one could pop out the SD card and return to CE? Thanks for your exceptional effort.

    ReplyDelete
    Replies
    1. I just read the original post you referenced by John Williams where it says the flash memory is overwritten so I would assume that one cannot return simply to the win ce program by just removing the SD card. If possible, would you confirm this conclusion? Again my thanks for your exceptionally lucid explanation of the process, especially considering that English does not appear to be your native language.

      Delete
  3. As you can see in the video, the computer boots Android when the sd card is not inserted, and GNU Linux when I insert the SD card. I have not tested WinCE, but I suppose it should be the same.

    My default bootscript doesn't overwrite anything in the internal flash. I have an alternative script that overwrites some boot variables, but even with that script there should be no problem.

    ReplyDelete
    Replies
    1. Thanks for your reply. Perhaps you might be interested in a progress report from a newbie trying to use your "all in one" installation. First a note on my machine: 800 MHz wm8650, 2 GB "disk", 512 MB memory, unknown WiFi chip, win ce7, 2800 mAh battery. After I inserted the SD card with the needed BOOT and ARCH_SYSTEM files loaded, my machine booted linux (wow!) just fine, but when it got to the login I keep getting a low battery message which prevents the login, so at that point I cannot proceed. If an easy fix is possible, that would be great; otherwise I will go back and try to follow your original step-by-step procedure.

      Delete
    2. There must be a problem with the kernel. I'll try to post an updated kernel that can maybe solve some problems with the battery readings, Ethernet and Wifi, but now I'm on holiday, 1700 km away from my computer :-).

      Unfortunately I can't warrant I can solve the problems with your netbook unless it has exactly the same hardware as mine, or I get a netbook exactly the same as yours to play with.

      Delete
    3. Have a great vacation (I guess that's US-speak for holiday) and thanks so much for your response.

      Delete
  4. My WiFi will not work on GUI. What do I have to do?

    ReplyDelete
    Replies
    1. The most probable reason is the WiFi dongle inside your netbook is not RT8188 based, and the default kernel I supplied doesn't have drivers for other chipsets.

      You can try with the latest kernel I have built: http://kernelhacks.blogspot.com.es/2012/09/arch-linux-for-wm8650-kernelmodules.html

      Delete
    2. Tried the latest kernel and modules -> LAN works, Wifi not. Tried your "experimental" driver for the newest chipset and it works very good. Thanks for your work mate.
      But the CPU is always on 90%, any idea? The problem occurs after wifi on. Must I fix something? udev must be fixed in the first part of the tut. I downloaded your image and installed it, udev is fixed already i think.
      Your support is freaking good :)

      Delete
    3. Glad to hear the driver works, thanks for confirming :-)

      Do you know what process is eating the CPU? Open a terminal and use "top" command.

      I had also some problems with "mandb" eating all the CPU, due to a bug that causes it to keep restarting forever. To fix it, kill mandb with the command "killall mandb"

      Delete
    4. It is rtmpcmdqtask that eats 50-60% of cpu.

      Delete
    5. Disabled WiFi, it is the WiFi which is blasting the cpu up.

      Delete
    6. I have never heard about that process. It must be a process related to the WiFi driver. Unfortunately I'm afraid I don't know why it's eating the CPU. It might be a configuration problem. Maybe something can be touched in /etc/Wireless/RT2870STA/RT2870STA.dat, but I don't know what most of the parameters are for, and I have neither the hardware nor the time needed to dig in that file :-(.

      Delete
    7. Really weird... Disabled wifi and edited the driver dat on localsettings and the cpu works fine again.

      Delete
  5. First of all, thanks for the excellent instructions!

    I just have one question -- my smartbook is only using ~200MB of RAM under Arch (even though it has 512MB total). Would you happen to know why this is happening, and how I might be able to fix this?

    ReplyDelete
    Replies
    1. The amount of memory is specied in the boot script, and for these 256 MB netbooks is set for around 212 MB IIRC.

      There was another user with the same problem. I uploaded for him a boot script with a greater amount of RAM configured. I can't remember if he got it working with all the memory, if you dig in the comments you might find it.

      Delete
    2. I actually made my own scriptcmd with an increased amount of RAM -- I did something like mem=490m and when trying to boot, the screen would whack out and go crazy with colors before freezing. The model of my smartbook is a Sylvania SYNET07WICV. The manufacturer of the smartbook offers a WinCE7 smartbook update on their website, and I dug through their scriptcmd's and saw that they have their max-mem set to 212M as well. So I wonder if what they list is misleading, or if the extra RAM is being used for something else?

      I know you've got other projects you'd like to work on, but if anyone else is interested in what I'm talking about, the link is http://www.sylvaniacomputers.com/product.php?id_product=45 under the updates/fixes heading. If anything, what they post could serve as a "backup" in case anyone wants to try and put Arch (or any linux) onto the NAND.

      Delete
    3. Have you tried with lower memory amounts? Like for example mem=400m

      Delete
    4. Yes -- I tried with 490, 400, 300, and 256. The only one that works without messing up is 212M.

      Delete
  6. Hi, I tried using the full system image and everything seems to go fine. I get the login screen then when I login all I get is a X on the screen. When I'm doing the manual install I can't seem to get the wifi working. I tried iwconfig and it dosen't recognise the command. I'd like to get your premade image working. I feel like I'm missing something

    ReplyDelete
  7. hi i looking for the scheme wondermedia mini netbook 7 inch, do you know where i can find it , i apreciate your help tnx

    ReplyDelete
  8. Hello, I have installed the system according to your instructions on my wm8650 netbook. I started from he image : alarm-wm8650-2012.06.19.tar.bz2. Netbook boots and network are working. Unfortunately when I try to update the system (pacman -Syu) I have trouble with pacman and glibc installed versions (glibc 2.15 installed, 2.16 required). I have search on the web bur no solution solved the problem. Do you have any idea? Thanks.

    ReplyDelete
    Replies
    1. Unfortunately that image is very old, and cannot be updated without getting your hands dirty. What is happening when you try to update the system is a known problem that appeared when Arch migrated /lib contents to /usr/lib. More about it here:
      https://www.archlinux.org/news/the-lib-directory-becomes-a-symlink/

      You'll also have problems with the latest update that changes initscripts to systemd for booting. I'm very busy ATM and I have no time to do it myself, but it looks like other user has done it successfully. Have a look to the comments of this post:
      http://kernelhacks.blogspot.com.es/2012/09/arch-linux-for-wm8650-kernelmodules.html

      Delete
  9. Those trying to use the part I guide will run into problems due to the recent changes (as far as I can tell) in the archlinux root filesystem tarball to do with /sbin/init being changed to /usr/lib/systemd/systemd... the boot process using the part I guide's BOOT filesystem will fail to load init after mounting the ext3 root filesystem if a current Archlinux tarball is used. I tried passing init=/usr/lib/systemd/systemd in a new wmt_script but to no avail.

    The tarball 2012-06-19 linked to above does indeed work - I just managed to boot into LXDE on a WM8650 netbook bought on ebay in the last week or two on a Patriot brand 16GB class 10 SD card. Good work doragasu!!!!

    ReplyDelete
    Replies
    1. Too bad I have no time to try getting latest Arch to run in these netbooks. I'll add a warning at the beginning of the tutorials with this information.

      Delete
  10. For those wishing to update the system, you'll need to work around the glibc /lib -> /usr/lib migration.

    The following approach has achieved a system upgrade on doragasu's 2012-06-19 tarball ARCH_SYS filesystem, and allowed installation of the gcc toolchain, with a view to kernel and module building. YMMV, and the instructions stop at the point of building and installing a new kernel and modules.

    Simply using:

    pacman -Syu

    won't work with the tarball filesystem, owing to recent changes in the /lib -> usr/lib changes.

    try this approach:

    http://allanmcrae.com/2012/07/updating-arch-linux-from-a-core-install/

    but use myplugbox.com/pkg for the glibc source, i.e.

    pacman -Sy
    rm -rf /var/run /var/lock && pacman -Sf filesystem
    pacman -S tzdata
    pacman -U http://myplugbox.com/pkg/glibc-2.16.0-1-arm.pkg.tar.xz
    rm /etc/profile.d/locale.sh

    and at this point, multiple font symlinks need to be removed from the /etc/fonts/conf.d directory, as per:

    https://www.archlinux.org/news/fontconfig-2101-update-manual-intervention-required/

    you will then need to remove packages with leftover files in /lib

    pacman -R linux
    pacman -R linux-headers
    pacman -R pcmcia-utils

    mv /lib/modules /usr/lib/modules (not sure if this will kill it on reboot, but I am about to try building a new kernel and modules anyway - you have been warned)

    pacman -Su --ignore glibc
    pacman -Su

    if you still get glibc errors, look for further clues with the following command

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

    which will show any remaining files in /lib, not owned by glibc, still needing removal

    then again try

    pacman -Su

    which should then work without complaints

    followed by this, to install the gcc toolchain bits and pieces

    pacman -S base-devel

    then replace what was removed

    pacman -S linux
    pacman -S linux-headers

    pcmcia-utils is outdated and no longer available, so won't need replacement on a WM8650 netbook.

    Now, off to build a kernel......

    ReplyDelete
    Replies
    1. Great work, thanks for sharing!

      Delete
    2. Hello every one,

      I followed doragasu guide and updated via the guide erich posted. At the moment I have a fully updated arch linux os on my mini laptop that originally had windows ce. I am very happy and excited to have this new os to play around with. Many thanks to doragaus and erich for the helpful guides. Also, after updating i noticed that midori would no longer run. To fix this I did the command
      pacman -S webkitgtk2
      which I believe replaced a out dated package

      p.s.
      I used the command
      pacman -R pcmciautils
      Instead of the
      pacman -R pcmcia-utils
      since pcmcia-utils was not recognized

      Also, i was wondering how I would go about installing these packages into arch linux arm?

      Firefox, Flash, Java, And Minecraft.

      Thanks for all the help hope to have all my favorite apps up and running soon.

      Sincerly,
      I happy customer

      Delete
  11. A hint for those attempting large builds from source.

    While trying to build fldigi I found that gcc was running out of memory, causing processes to be killed, and then the make process failed. This was happening even though running it from a virtual terminal without even logging into X windows to save memory.

    The easiest way to fix this is to add a swap partition to the SD card, for use just in case memory runs low.

    Use gparted on another machine to

    1) shrink the ARCH_SYS partition on the SD card by somewhere between 200MB and 512MB, by removing the Megabytes from the tail end, unused part of it.

    2) add a 3rd partition to the SD card, labelled "swap", and of type "linux-swap". BOOT is mmcblk0p1, ARCH_SYS is mmvblk0p2, and swap will be mmcblk0p3

    having done this, go to the ARCH_SYS partition, and into /etc/ directory and edit the fstab file

    and add the following line to the end of it


    /dev/mmcblk0p3 none swap defaults 0 0


    when the laptop reboots, there will be swap in reserve while attempting big software builds.


    Cheers,

    Erich

    ReplyDelete
    Replies
    1. Thanks for the tip.

      I was able to build the kernel from a LXDE terminal without using swap, but maybe other memory hungry applications need that.

      Delete
  12. This comment has been removed by the author.

    ReplyDelete
  13. I followed doragasu guide and updated via the guide erich. Now I have a fully updated arch linux os on my netbook.

    @erich
    I have not understood last line of your post

    [ Now, off to build a kernel...... ]

    please tell me what does it mean?

    In this step I just restarted my netbook.

    I have wifi and battery issue, I decided to work on it after some days, rather I need my USB 3G modem & USB to serial converter (pl2303: Prolific PL2303 USB to serial adapter) working right now.

    I have installed usbutils usb_modswitch wvdial

    but unfortunately I am not getting any ttyUSBx port for both USB 3G modem & USB to serial converter.

    Any help????

    I tried to install flashplayer plugin

    pacman -S flashplugin but not found

    Can anybody tell me how to install flashplayer plugin on my netbook arch linux?

    regards
    jags

    ReplyDelete
    Replies
    1. finally my 3G dongle is running. I need to run modprobe ppp_aync manualy before wvdial.
      can anybody tell me how to load ppp_aync module automatically.

      jags

      Delete
  14. after updating doragasu's arch image my netbook is not mounting usb disk automatically also no pop up file manager is coming. Can anybody help me how to fix this problem???

    regards
    jags

    ReplyDelete
  15. hi, great guide, i follow it but something has not work ? i cant make mysmartbook boot into grpahical mode, with your guide i do get a blank screen and cursor blinking like loading but it stays there. can you please explain more? thanks
    Santiago

    ReplyDelete
  16. Hi,

    Old post, but thanks for your work :)
    I installed your kernel on my SD : everything work fine, no problem. Boot seems ok too, but after the log screen : I had just a black screen with my curser (crow form). I can't run commands or anything.

    Can you help me please ?

    ReplyDelete