So in the last part, wireless internet was setup. Great. Can't live without the internet!
In this glimpse into the world of FreeBSD, the X server will be setup and some other GUI stuff. It is worth bearing in mind, that if this machine was being setup as a server, none of this would be necessary.
The first thing to do, before anything else, and I am surprised that it has been tolerated this far in, is to get rid of that stupid terminal beeping.
$ su Password: # sysctl -a | grep bell hw.syscons.bell: 1 # sysctl hw.syscons.bell=0 hw.syscons.bell: 1 -> 0
So that bastard has been found and disabled. But heaven forbid it it comes back on next boot:
# echo "hw.syscons.bell=0" >> /etc/sysctl.conf # cat /etc/sysctl.conf # $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1.2.1 2009/10/25 01:10:29 kensmith Exp$ # # This file is read when going to multi-user and its contents piped thru # ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details. # # Uncomment this to prevent users from seeing information about processes that # are being run under another UID. #security.bsd.see_other_uids=0 hw.syscons.bell=0
Good. Now to get this system up to date with freebsd-update:
# freebsd-update fetch install Looking up update.FreeBSD.org mirrors... 3 mirrors found. Fetching metadata signature for 8.0-RELEASE from update5.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. Preparing to download files... done. No updates needed to update system to 8.0-RELEASE-p2. No updates are available to install. Run '/usr/sbin/freebsd-update fetch' first.
The system was already up to date so it doesn't show any updates, but you get the idea. Now to automate this so that updates will be fetched every night via a cron job. Cron will send root an email if something needs installing (which then should be done manually via freebsd-update install) :
# echo "@daily root freebsd-update cron" >> /etc/crontab
OK the next thing to do is get the ports up to date. FreeBSD ports is a wonderful system which allows tons of software to be compiled and installed from source code. The whole collection exsits in /usr/ports by default. It was selected during installation so it should be there, but it won't be up to date. Ports can be updated using cvsup or portsnap, and probably also git if you can be asked, but here portsnap will be used because it is quick and saves bandwidth both on here and over at the FreeBSD mirror. To get the first portsnap:
# portsnap fetch extract
And then in the future, keep this updated with:
# portsnap fetch update
Now that ports is up to date, it is time to build the Xorg port. The alternative is just to use pkg_add -r to add a precompiled package. But I prefer to build from source wherever possible so as to be able to choose various compile time options and so on.
Go into the ports directory for xorg (as root). Actually, I hate this shell, and I want one with tab completion, so first of all install bash:
# cd /usr/ports/shells/bash # make install clean
This will go and dilligently fetch, compile, and install the port. It might ask some questions along the way. To use bash by default (at login), edit /etc/passwd using vipw. Change the shell entry (the last entry in the line) for the users that you want to use bash. The default install of bash will be at /usr/local/bin/bash.
Great. Logged back in under bash, and su'd to root. Now to install Xorg. This is going to take a while, so better to preconfigure all options in advance before doing the make install clean:
[root@ ~]# cd /usr/ports/x11/xorg [root@ /usr/ports/x11/xorg]# make config-recursive ===> Setting user-specified options for xorg-7.5 and dependencies [root@ /usr/ports/x11/xorg]# make install clean
Once that build is complete, and only very rarely does something go wrong with FreeBSD ports, it is time to configure X. OK, the manual says that startx might work on its own, in which case, great. Otherwise, do this:
[root@ ~]# X -configure [root@ ~]# X -config xorg.conf.new -retro
The retro switch should result in a black and grey grid, instead of a blank screen if it is omitted... Note I didn't want hald and dbus because I'm not that kind of guy. But this kind of tomfoolery requires adding:
Section "ServerFlags" Option "AllowEmptyInput" "False" EndSection
To the config file, otherwise X will start crying. Here is the whole file for the Acer Travelmate 2303LCi:
Section "ServerFlags"
Option "AllowEmptyInput" "False"
EndSection
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
ModulePath "/usr/local/lib/xorg/modules"
FontPath "/usr/local/lib/X11/fonts/misc/"
FontPath "/usr/local/lib/X11/fonts/TTF/"
FontPath "/usr/local/lib/X11/fonts/OTF"
FontPath "/usr/local/lib/X11/fonts/Type1/"
FontPath "/usr/local/lib/X11/fonts/100dpi/"
FontPath "/usr/local/lib/X11/fonts/75dpi/"
FontPath "/usr/local/lib/X11/fonts/URW/"
EndSection
Section "Module"
Load "dbe"
Load "dri"
Load "dri2"
Load "extmod"
Load "glx"
Load "record"
Load "freetype2"
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
#Option "ZAxisMapping" "4 5 6 7"
EndSection
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection
Section "Device"
Option "DRI"
Identifier "Card0"
Driver "intel"
VendorName "Intel Corporation"
BoardName "82852/855GM Integrated Graphics Device"
BusID "PCI:0:2:0"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
Great, everything should work now, so copy the file to it's default position:
[root@ ~]# cp xorg.conf.new /etc/X11/xorg.conf
I also want a GUI login screen at boot. For kicks, I used slim because I thought it looked nice and slim:
[root@ ~]# cd /usr/ports/x11/slim/ [root@ /usr/ports/x11/slim]# make install clean [root@ ~]# echo "slim_enable=\"YES\"" >> /etc/rc.conf
I even made a custom theme:
This is just a knock off of this theme called Rear Window by a guy called slackhack, combined with this logo. To install the theme do this:
[root@ ~]# cd /usr/ports/ftp/wget [root@ /usr/ports/ftp/wget]# make install clean [root@ /usr/ports/ftp/wget]# cd /usr/local/share/slim/themes/ [root@ /usr/local/share/slim/themes]# wget www.ashleymills.com/misc/bsd.tar.gz --2010-05-10 22:54:02-- http://www.ashleymills.com/misc/bsd.tar.gz Resolving www.ashleymills.com... 109.74.199.96 Connecting to www.ashleymills.com|109.74.199.96|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 132189 (129K) [application/octet-stream] Saving to: `bsd.tar.gz' 100%[======================================>] 132,189 247K/s in 0.5s 2010-05-10 22:54:02 (247 KB/s) - `bsd.tar.gz' saved [132189/132189] [root@ /usr/local/share/slim/themes]# tar xzvf bsd.tar.gz x bsd/ x bsd/slim.theme x bsd/panel.png x bsd/background.png [root@ /usr/local/share/slim/themes]#
Then edit /usr/local/etc/slim.conf and change the current_theme value to bsd. Don't ask my why slim puts its config there.
Almost done, but I forgot that X isn't much use without a window manager. You could use twm, but I want to use icewm:
[root@ ~]# cd /usr/ports/x11-wm/icewm [root@ /usr/ports/x11-wm/icewm]# make install clean
Now make sure icewm starts when you login from slim. Do this as the normal user:
[you@ ~]$ echo "exec icewm-session" > .xinitrc [you@ ~]$ cat .xinitrc exec icewm-session [you@ ~]$
I think that is everything. Reboot and it should boot into slim login manager, after which logging in will load icewm.
[you@ ~]$ su Password: [root@ /home/you]# reboot
Comments
Glad I found your post
I was experimenting with freeBSD8.0 on a Acer Travelmate & found out your tutorials very useful. I was amazed to see your "main" pc's Desktop running KDE. Off course with such modest specification you have developed a kruncher excuse my spelling.
As I looked more on your art, your works are equally great. Now, I am dying to know whether your "main" PC is an alpha 255?
Please tell me your configuration as I am trying to build a 64-bit PC. Thanks in advance. I will post you the details of my Acer Travelmate 354TE. So, far I cannot enable apci so I disabled it in /boot/loader.conf. The sound you mentioned to disable "hw.syscons.bell=0" in /etc/sysctl.conf, was it a "beeping" sound? Is this a problem with most acer travelmates.... lol
I was thinking the in IceWM route too as I had a pleasant experience with it on Vector Linux. Thanks for bringing back the confidence in me after reading your blogs.
getback to me via EMAIL_REMOVED as I have yet set up a server....lolz
bye
Oops I just lost you're email
Oops I just lost you're email address in my clipboard whilst editing your comment to remove your email address.
No my main PC is not the alpha 255, although that would be cool, it wouldn't have the power for anything serious.
The configuration for the desktop is here:
http://www.ashleymills.com/index.php?q=node/238
Except I have a Geforce GT240 with 1GB of RAM now, because there is proper driver support for it.
But there are faster processors available now for the same price. The six-core AMD Phenom II 1090T black edition looks nice. Of course you would need a socket AM3 motherboard for that.
The sound disabled by hw.syscons.bell is the beeping from the PC speaker, the most annoying sound ever.