User talk:Skinwalker

From Lunar Linux
Jump to: navigation, search

Contents

Background

Before I begin talking about my experience in loading Lunar on my EEE, I would like to say a few words about my background. I am going to follow Engelsman's model in filing this user report. I am professionally a Doctoral student from the University of Stuttgart, Germany, with a background in Chemical Engineering. I am no linux expert by any means, and just consider myself as a longtime user, with some knowledge about *nix in general. Due to my research area, and my interest in mathematical modeling, I am used to coding, debugging etc. According to my opinion, *nix provides the best platform for such endeavors. My first foray into *nix was eight years ago, when I used Sun Solaris on SPARC for my modeling and simulation work, as part of my Bachelor thesis. Though it was intimidating in the beginning, gradually I got used to it that by the time I had the opportunity to own a computer (an ancient relic from a rich friend of mine by the way), I started to look into Linux as my OS of choice. And since then I have never looked back. Started out with RedHat, then migrated to Suse for sometime, and then changed my loyalties to Gentoo. The affair lasted for at least a couple of years. But due to repeated problems with Gentoo, decided to go for a binary distribution again. Debian was my first choice. Used Debian for a long time. Then tried Ubuntu, and its variants, and once Arch became stable, it became my primary Linux distro.

Exposure to Lunar

I was always missing out on the fun of configure, make, make install. So I thought I should use the source again. Went distro hunting, and Distrowatch led me to Lunar. I have to admit, the badass rockhopper logo just got me hooked. After reading some basics, realized, that it would be fun to try Lunar out. So started out with one of my desks at home, and I must say my first install went without a hitch. All the features were recognized, and though to get the system running took a while, it was worth the wait, and I could build the system totally according to my needs. And also, my machine's responsiveness improved dramatically. Finally I migrated to Lunar on my other desk at home as well. So Lunar has become my Linux distribution of choice. Apart from FreeBSD, which powers a couple of my old machines, it has been Lunar all the way.

EEE PC and Lunar

I got a brand new EEE PC 1000H a few days before Christmas last year, and promptly loaded Ubuntu on it, with the modified EEE kernel, popularly known as Adam's kernel. Just to get the system running quickly, so that I can get used to it initially. And I must admit, it worked very well. After a few days I just felt that it would be a lot of fun to get Lunar running on this little gem of a machine as well. Finally managed to give it a shot a few days ago, and it was great. The machine boots pretty fast right now and I am totally done distro hopping for this little baby.

Now I will talk about my experiences in getting Lunar running on this EEE Model. I will be as detailed as possible. Also, it is higly likely, that I might be taking a tortuous route in getting something to work, and a much easier, elegant solution might exist, but as I mentioned earlier, I am no Linux expert, and hence most of what I did are merely the end effect of reading some manpages and google. So if there is a better solution for some issues, I would totally glad to have a look into it. One more thing, I am no native English speaker. So if there are lots of mistakes, I am sorry. OK let's begin.

The Machine

First off, some machine specs. My model is EEEPC100H, Intel Atom N270 processor, 1.6GHz, 1GB RAM. Resolution is WSVGA 1024x600 (Intel945 chipset). Integrated Bluetooth and WLAN 802.11b/g/n, 1.3 Megapixel Webcam, and 6cell battery. Mine is a HDD model, with 160GB. It came loaded with Windows XP Home. Of course, when I installed Ubuntu, I did away with Windows. Anyway more detailed lspci -v will be posted a little later.

Installation Medium

There are two ways to install obviously. USB, or an external CD/DVD drive. Since I don't have an external CD/DVD drive, opted for the usb boot option. The preparation of the usb bootable disk was no problem at all. All I had to do was follow the No CD Installation entry on Howto Articles section on Lunar Linux documentation page. The procedure to prepare the disk has been explained very clearly in that page, so one can blindly follow the instructions and easily make a bootable usb.

Booting

Here's where I felt like I was a shining example of Darwin's theory at work. Once the machine was switched on, pressing Alt+F2 took me to the BIOS screen, and i checked the boot settings and set up the boot device priority for external usb. Once I saved the settings, rebooted and saw that the usb was being read but it went straight to grub, to boot from my hard disk. This happened three to four times, and the I decided to check the usb disk again. Formatted it and prepared the disk once more, no success. Waited for a while, and tried again. But this time, just decided to press Esc continuously, and boom, comes an option, where you can choose to boot from the usb disk. Stupid me! So don't forget to press Esc when you switch on your machine with Lunar usb plugged in.

Primary Installation

Then the Lunar install screen came up. From then on, it's the usual thing. I did nothing different than what is mentioned in the installation manual. No new tweaks, nothing. So at this point, just have a look at Installation Manual for everything. Keep in mind, the EEE is not a very powerful machine. So it will take quite some time to build theedge, lunar, and configuring and recompiling gcc, and glibc for example. The Lunar update will take some more time. Once I got theedge and lunar installed and fetched the moonbase, I started the gcc recompilation by late night and went to sleep. By the time I woke up in the morning, it was done and before I went for work in the morning, started lunar update and in the evening when i was home, it was finished, without any errors.

Couple of pointers here:

Ethernet: Don' worry. It got detected fine and no extra effort is needed. So the installation can be carried out smoothly

Kernel: I used the stock 2.6.27.10 kernel as such, and did not use a custom kernel or anything.

Configuring X

Ok, the next thing is obviously X. So built XOrg7. And after it was done, time to check it out. startx worked fine. Great! But the resolution was horribly wrong. But the touchpad worked right out of the box, which was great, because I had to tweak some stuff to get the touchpad of my Lenovo laptop working properly with Lunar. Then I realized, that I hadn't installed xfree86-video-intel yet (which is necessary since the model comes with an Intel945 chipset). Built the same and once it got installed it was time to set the resolution right by manually editing the resolution in xorg.conf. Hence I created xorg.conf using Xorg -configure and had a look. First thing to change was Device setting. The Driver was vesa by default, so changed it to intel. Then I added this entry to the Monitor Section:

          Modeline "1024x600" 48.96 1024 1064 1168 1312 600 601 604 622 -HSync +VSync # 60 Hz

Saved it as xorg.conf at /etc/X11/ Exit to the console and startx again. And this time, it was the right resolution, 1024x600. One issue resolved.

Time for some more post installation configuration. Went without a hitch. Once the system got up and running completely, it was time to look at other aspects, the foremost of that being Wireless. But briefly before that, I checked sound, which worked absolutely fine, and the usb ports, which also worked flawlessly.

Wireless

Obviously it was not working. The reason is that EEE 1000H model comes with the Ralink Device Wireless Network Controller, and there is no native support for it in 2.6.27 kernel. But the linux driver is available over at ralink's website, and hence the first thing to do was download the driver and then try building it. So I downloaded the latest device driver, and it is called RT2860_Linux_STA, the current version being 1.8.0.0 This can be downloaded at ralink support page, or using wget to fetch the same.

         wget http://www.ralinktech.com.tw/data/drivers/2008-0918_RT2860_Linux_STA_v1.8.0.0.tar.bz2
         (Link DonĀ“t work, go here http://www.ralinktech.com/ralink/Home/Support/Linux.html (RT2860PCI/mPCI))

Of course we need the firmware for the same as well. You can also get it from their support page, or using wget.

         wget http://www.ralinktech.com.tw/data/drivers/RT2860_Firmware_V11.zip

Then extracted the archives. Then changed to the firmware directory, and moved the file rt2860.bin using root to /lib/firmware. Now it was time to build and install the driver. But before that a config file needs editing. The driver also comes with its own configuration capabilities, to define SSID, password and all, but if you are used to other tools to configure your wireless, like gnome network manager, wicd, or like in my case the wpa_supplicant.conf directly, then two settings need to be activated first. The file is called config.mk which resides in the extracted driver directory.

Must be

         2008-0918_RT2860_Linux_STA_v1.8.0.0/os/linux/config.mk

The third option and the fourth option have to do with the availability of wpa_supplicant and network manager. By default the options would be n. I changed them to y (for yes of course).

         # Support Wpa_Supplicant
         HAS_WPA_SUPPLICANT=y
         # Support Native WpaSupplicant for Network Maganger
         HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

Saved the file. and then changed to the driver root directory and as root ran make && make install.

         cd 2008-0918_RT2860_Linux_STA_v1.8.0.0/
         make && make install

That was it. It compiled and installed fine. Next thing was obviously to load the driver.

Here are the commands I issued in order.

         depmod -ae
         modprobe rt2860sta   (rt2860sta is the driver name. Now it will create the wireless device node, called ra0)
         iwconfig             (ra0 status came up. so good.)
         iwlist ra0 scan      (gave me the available access points, which was right.)

I wanted to load the module during reboot every time rather than having to do it manually.

         echo rt2860sta >> /etc/modules   (Now this is taken care of.)

Next, I had to add my router's SSID and passphrase in my wpa_supplicant.conf and see if i get connected properly. Once that was done, time for another command,

         wpa_supplicant -Dwext -ira0 -c /etc/wpa_supplicant.conf &

This resulted in confirming the ssid and passphrase and establishing connection to the router.

And the final step is obviously using the dhcp client to get request an ip from the router. Hence,

         dhcpcd ra0

Took a few seconds, and the details were presented.

Tried to ping google.com. And it worked flawlessly. The driver is pretty efficient as well. I haven't had any connection issues so far.

Pending Issues

I haven't looked into EEE hotkeys yet. But I am aware of the existence of kernel modules for the same. This is exactly what I will be working on in the next few days.

Summary of Device Support

usb ports - out of the box support

ethernet - out of the box support

touchpad - out of the box support

screen resolution - xfree86-video-intel driver (manual edit of xorg.conf needed for right resolution)

camera - video4linux, works fine

sound - out of the box, snd-hda-intel

Wireless - No native support. rt2860sta driver build and install activates wireless

Bluetooth - Haven't checked yet

HotKeys - Still pending

Obligatory Screenshot

Just a screenshot of Lunar in action on my EEEPC. Window manager is dwm.Apps in action are Mplayer, xterm, ncmpcpp, vim. .Xdeaults and other configs can be found in my dotfiles page. But Engelsman recently suggested that I can probably add my configs right here as Appendices as well. So you can find the configs pertaining to this screenshot right here.

Conclusions

So if anyone is thinking about trying Lunar on EEE, I would say, just go ahead. The boot time is 17 seconds on this machine, compared to around 50-60 seconds on a lean Adam's Linux kernel based ubuntu. Besides, I can have complete control on what I need on my system, nothing more, nothing less!

Appendix I

My Xdefaults. I change the colors quite often. But I am pretty happy with the current setup!

             Xft.dpi:                    96
             Xft.antialias:           true
             Xft.hinting:              full
             Xft.hintstyle:           hintslight     
             Xft.rgba:                  rgb
             c64*font:                xft:Adore64:autohint=false:antialias=false:size=7
             c64*background:          #3a319c
             c64*foreground:          #7b71d6
             xterm*title:             Terminal
             xterm*faceName:          terminus:pixelsize=7
             !xterm*faceName:          Pragmata:bold
             !xterm*faceSize:          7.5
             xterm*geometry:          120x40
             xterm*boldMode:          false
             xterm*cutNewline:        false
             xterm*on4Clicks:         group
             xterm*on5Clicks:         page
             xterm*internalBorder:    1
             !xterm*background:        #222222
             !xterm*foreground:        #ddccbb
             xterm*metaSendsEscape:   true
             xterm*colorBD:           #ffffff
             xterm*colorBDMode:       true
             xterm*cursorBlink:       false
             xterm*cursorColor:       #ff9900
             xterm*veryBoldColors:    14
             xterm*dynamiccolors: true
             xterm*utf8: 1
             xterm*loginShell:        true
             xterm*charClass:         33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48,35:48,58:48,63:48,61:48,44:48,38:48,59:48
             xterm*jumpScroll:        true
             xterm*multiScroll:       true
             xterm*saveLines:         512
             *background:       #222222
             *foreground:       #cacaca
             !black
             *color0:           #080808
             *color8:           #505050
             !red
             *color1:           #b04020
             *color9:           #dd4010
             !green
             *color2:           #afd700
             *color10:          #daff30
             !yellow
             *color3:           #f7cf0a
             *color11:          #fce70d
             !blue
             *color4:           #3060aa
             *color12:          #6099dd
             !magenta
             *color5:           #d6156c
             *color13:          #fe4365
             !cyan
             *color6:           #a0c2de
             *color14:          #c9dee8
             !white
             *color7:           #808080
             *color15:          #b0b0b0
             xclock*hourColor:     rgb:0/0/0
             xclock*minuteColor:   rgb:8/8/8
             xclock*secondColor:   rgb:b/b/b
             xclock*majorColor:    rgb:0/0/0
             xclock*minorColor:    rgb:6/6/6


Appendix II

I use dwm5.4.1, and here is my config.h. mostly it is default, except minor things, and colors to match my .Xdefaults colors

             /* See LICENSE file for copyright and license details. */
             /* appearance */
             static const char font[] = "-adobe-helvetica-medium-r-*-*-10-*-*-*-*-*-iso8859-*";
             static const char normbordercolor[] = "#554444";
             static const char normbgcolor[] = "#222222";
             static const char normfgcolor[] = "#f7cf0a";
             static const char selbordercolor[] = "#d6156c";
             static const char selbgcolor[] = "#222222";
             static const char selfgcolor[] = "#d6156c";
             static unsigned int borderpx = 1; /* border pixel of windows */
             static unsigned int snap = 12; /* snap pixel */
             static Bool showbar = True; /* False means no bar */
             static Bool topbar = True; /* False means bottom bar */
             static Bool readin = True; /* False means do not read stdin */
             static Bool usegrab = False; /* True means grabbing the X server
                                                  during mouse-based resizals */
             /* tagging */
             static const char tags[][MAXTAGLEN] = { "main", "code", "www", "sim", "music" };
             static unsigned int tagset[] = {1, 1}; /* after start, first tag is selected */
             static Rule rules[] = {
             /* class instance title tags mask isfloating */
             { "Gimp", NULL, NULL, 0, True },
             /*  { "Firefox", NULL, NULL, 1 << 2, True }, */
             { "MPlayer", NULL, NULL, 1 << 8, True },
             { "xine", NULL, NULL, 1 << 8, True },
             { "PyBurn", NULL, NULL, 1 << 4, True },
             };
             /* layout(s) */
             static float mfact = 0.55; /* factor of master area size [0.05..0.95] */
             static Bool resizehints = True; /* False means respect size hints in tiled resizals */
             /* #include "grid.c" */
             /* #include <tileh.c> */
             static Layout layouts[] = {
             /* symbol arrange function */
             /*  { "+++", grid },  */
             { "[]=", tile }, /* first entry is default */
             { "><>", NULL }, /* no layout function means floating behavior */
             { "[M]", monocle }
             };
             /* key definitions */
             #define MODKEY Mod4Mask
             #define TAGKEYS(KEY,TAG) \
             { MODKEY, KEY, view, {.ui = 1 << TAG} }, \
             { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
             { MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
             { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
             /* helper for spawning shell commands in the pre dwm-5.0 fashion */
             #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
             /* commands */
             static const char *dmenucmd[] = { "dmenu_run", "-fn", font, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL };
             static const char *termcmd[] = { "xterm", NULL };
             static Key keys[] = {
             /* modifier key function argument */
             { MODKEY, XK_d, spawn, {.v = dmenucmd } },
             { MODKEY, XK_t, spawn, {.v = termcmd } },
             { MODKEY, XK_b, togglebar, {0} },
             { MODKEY, XK_j, focusstack, {.i = +1 } },
             { MODKEY, XK_k, focusstack, {.i = -1 } },
             { MODKEY, XK_h, setmfact, {.f = -0.05} },
             { MODKEY, XK_l, setmfact, {.f = +0.05} },
             { MODKEY, XK_Return, zoom, {0} },
             { MODKEY, XK_Tab, view, {0} },
             { MODKEY|ShiftMask, XK_c, killclient, {0} },
             { MODKEY|ShiftMask, XK_t, setlayout, {.v = &layouts[1]} },
             { MODKEY|ShiftMask, XK_f, setlayout, {.v = &layouts[2]} },
             { MODKEY|ShiftMask, XK_m, setlayout, {.v = &layouts[3]} },
             { MODKEY, XK_space, setlayout, {0} },
             { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
             { MODKEY, XK_0, view, {.ui = ~0 } },
             { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
             TAGKEYS( XK_1, 0)
             TAGKEYS( XK_2, 1)
             TAGKEYS( XK_3, 2)
             TAGKEYS( XK_4, 3)
             TAGKEYS( XK_5, 4)
             TAGKEYS( XK_6, 5)
             TAGKEYS( XK_7, 6)
             TAGKEYS( XK_8, 7)
             TAGKEYS( XK_9, 8)
             { MODKEY|ShiftMask, XK_q, quit, {0} },
             };

             /* button definitions */
             /* click can be a tag number (starting at 0),
             * ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
             static Button buttons[] = {
             /* click event mask button function argument */
             { ClkLtSymbol, 0, Button1, setlayout, {0} },
             { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
             { ClkWinTitle, 0, Button2, zoom, {0} },
             { ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
             { ClkClientWin, MODKEY, Button1, movemouse, {0} },
             { ClkClientWin, MODKEY, Button2, togglefloating, {0} },
             { ClkClientWin, MODKEY, Button3, resizemouse, {0} },
             { ClkTagBar, 0, Button1, view, {0} },
             { ClkTagBar, 0, Button3, toggleview, {0} },
             { ClkTagBar, MODKEY, Button1, tag, {0} },
             { ClkTagBar, MODKEY, Button3, toggletag, {0} },    
             };
Personal tools
Namespaces
Variants
Actions
Wiki Navigation
Project Sites
Toolbox