Whistling FreeBSD 7

Hehe, as a friend requested a screen shot of when I got FreeBSD 7 up:

[click to enlarge]
Free Image Hosting at www.ImageShack.us

Well actually it is about an hour and a half to two hours after but I dunno how to take a screen shot of FreeBSDs system console without image magic, then again I could’ve always used the camera… But no one wants to stare at the command prompt but me <_<.

FreeBSD 7.0 booted incredibly fast for my exptation, even off the install CD I think it out paced PC-BSD 1.4 (which uses FreeBSD 6.3-stuff). As always I set a few of the install options before hand, low output while installing packages, debugging console on etc. Normally when I setup a FreeBSD box I do a custom installation and exact maximum control over what goes in. For this, I just chose to use the canned X-Kern-Developer installation set which is essentially FreeBSD + Kernel Sources + Xorg which is what I wanted, I’m not expecting to need any sources other then the kernels.

For the optional packages I picked out a bare minimal to get me started, zsh for my user account -> I can use any of the standard shells easy enough but I ‘like’ the zsh hehe. Also portupgrade to ease any installation issues and a desktop environment, I chose to go the gnome2 meta-route.

The install went very fast as usual and the whole time was basically spent installing X and associated crap. It did however bomb out on LibIDL not being found on disk 2 fragging the gnome install so it would seem and barfing at the ruby package on the disk set. I think this is rather /strange/ for having downloaded all 3 ISO’s to avoid things like that… But hey, I don’t mind. Usually when I install FreeBSD I only take off the CD-ROM’s what I’ll need to get the machine connected to the internet, usually nothing as far as whats in ports goes.

However despite the lack of a desktop and portupgrade utility I booted into an other wise fully functional system. Mounted my existing install on /mnt and merged my network config into the FreeBSD 7.0-RELEASE one and copied over the xorg.conf file, volia we have working internet and X.Org ! No need to even load kernel modules, although sound didn’t work because I never added the line to /boot/loader.conf for it: no problem on a test install. Whether or not sysinstall has gained the ability to handle WPA Encryption over the years I didn’t bother because setting up my well supported PCMCIA card is a breeze as long as you can use a text editor.

I then set the gdm_enable variable in /etc/rc.conf then I had to change the site to fetch packages from because ftp.FreeBSD.org was still shouting about to many connected users so I set PACKAGEROOT to ftp://ftp13.us.FreeBSD.org/ in roots .login file, logged in & out and proceeded to pkg_add portupgrade and gnome2.

That took about an hour !!!! A little toying with pkg_info and wc, and I would say that gnome depends on about 365+ things… Glad I got a working X.Org install off the CD-ROM… It took ****for freaking ever**** to download all of the packages for gnome but one console command and a single line added to the config file and it just /works/ out of the box after a reboot, although of course I already had the xorg.conf file hehe.

I’m a KDE user by taste not a Gnome one but I decided to install Gnome and while I don’t care much for Gnome I am glad to see that aside from the long wait that installing and setting up Gnome on FreeBSD is as painless as it gets thanks to the hard work of those maintaining the port. Now, customizing Gnome to do your evil bidding is some times problematic hehe. I only like two things about Gnome, that it looks nice (usually) and that it gets well the **** out of your way.

If that is worth the horrendous inefficient user interface they have for file open/save dialogs I dunno… But KDE is the best in that regard that I’ve ever seen.

There was just one small problem, since the FreeBSD 7.0-RELEASE install was going into a partition previously housing a linux distro I was testing a few months ago, it also took with it the GRUB configuration as was planned. So I had my GAG install CD ready before I started with FreeBSD because I knew I was going to be removing the boot loader I was using for PC-BSD (GRUB).

The problem, 2 OSes setup for booting in GAG but only the first would boot (FreeBSD 7). I even used the install disk to overwrite GAG with BSDs normal boot manager but no luck, it wouldn’t boot ad0s2a ! When ever I chose to boot off the second partition in GAG it would boot off the first, FreeBSDs boot manager would just beep at the second partition.

There is always more then one way to screw with a boot procedure, man I love thinking ^_^. Loaded up my trusty never wanta leave home without it Knoppix Linux LiveCD and used QTParted to unmark ad0s1a (FreeBSD 7) as active and to make extra sure I did the same to ad0s2a (PC-BSD 1.4) and set ad0s2a active again before commiting my changes.

Reboot and reinstall of GAG, PC-BSD boots fine and so does FreeBSD !

I know you’re only supposed to have one partition marked active and GOD and IBM only know what could happen if more then one ended up set active :. I figured that either GAG had to be goofing it up or there was some thing slagged. Sure enough QTParted told me both partitions were marked active..

I ain’t gonna ask how, not even if it is possible, so long as nothing explodes and my laptop works fully I am a happy spider hehe.

In my personal opinion, aside from my booting mixup I think any one able to read & understand English (I’ve never tried installing in another language) could get a working desktop in less then 2 hours if they sought after the suitable level of knowledge to configure there systems internet connection, for most wired users that is a cake walk during the install. And to setup an X.Org config file which is not a very hard task, when the proper values work that is lol.

PC-BSD on the other hand, 30-45 minutes time spent installing (mostly installing the files while you relax) and you have a fully functional KDE Desktop. That’s why I have PC-BSD on my laptop, because other wise I would have to install KDE manually… in which case I would probably skip it and just install amarok and friends 😉

With the increased performance in FreeBSD 7, I can’t wait to see PC-BSD 2.0 when they finally switch over. It should sure as heck boot faster for them then Ubuntu on a first date 😉

One thing I personally find weird, when I do have a problem 90% of the time if it makes sense I can figure out the problem eventually. The other 10% of the time, what makes sense doesn’t work 8=) so the only solution is to ‘fsck with it a bit.

Downloading FreeBSD 7.0-RELEASE and hoping my internet connection doesn’t fuck up on me…. freaking phones !!!

I’d like to tell bellsouth where they can stick there equipment…

Currently running 334MB of 509MB (rounded) and going at 270~340KB/Sec and still going full steam a head downloading i386 Disc #1.

I’m shocked really, the main download server already popped past the max connection limit when I went to browse the files.

Seeing the situation I started looking to see which US mirror was the fastest, several seemed to be KiA when I started pinging to find the best response time. Oddly enough ftp13.us.FreeBSD.org had the best response and by a vast majority !!!

Oh baby is this gonna be a goooooooooood release xD. I started with FreeBSDs 6.0-RELEASE and look forward to seeing the things coming out of current hehe. There’s also a driver for 7.0 that I want to test out some time soon, I might have to wait awhile… I know my desktop did a kernel compile of 6.1-Release in like ~45 minutes but my laptop is not quite as powerful….

Haha, this reminds me of when my file server ran FreeBSD. Chugging away on that little 500Mhz Pentium III it used to take like 6 to 8 hours to recompile the entire operating system but always rock solid.

Even if I was sound asleep by the end <_<

NPM going Beta soon !!!

I’ve spent the last 3 hours or so hashing out changes in NPM’s sources.

I’m not totally satisfied with the look of the settings dialog, I don’t think it looks professional enough for a proper release… Maybe it is just me. This is one reason I’m axious for the Qt4/KDE4 port because I’d like to get my arms around some of the changes in layout but I guess it can wait.

I still need to come up with icons for the menu to replace the text labels (ports, logging, network) but I think this is a good enough settings front end for now. I took a quick screen shot of each of the pages that show the preferences that I’ve setup so far:

[click to enlarge]
Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us

Free Image Hosting at www.ImageShack.us

That should take care of the basic user settings for now. I really think it is time I start to focus on the back end slots. Because as much progress as I have made in the last several commits of getting the GUI to work with the settings system I never got around to writing code to get it to make setting changes persistent through the GUI :o)

Once that OptionsInterface and related code is done and interfaced with the code in portactions.py I can work on the next phases I need done before a beta release:

  1. Implement the GUI front ends for running portsnap/cvsup/csup, atm it should run but without user output and a start button lol.
  2. Write the about dialog and integrate access of the Options GUI (the above screen shots show it) into NPM_MainWindow (the main application window).
  3. Alternate NPM_MainWindow forms that can be loaded at user choice 🙂
  4. Tweak code for setting ports build options more

After that, I guess Neo Ports Manager will be ready to have a Beta Release.

The handling the dialog that stands in for make config, I know sooner or later I’m going to have to resort to calculating a full scale depends list of options much like make config-recursive does because doing otherwise would screw up during any operation that tries to do a make config: the display area is read only to the user, no I/O form user to portupgrade and friends. Fixing that will come later… I also need to get my tookus back to the German translation when I’ve got the time to spare.

Oh what fun it will be when NPM hits a 1.1 Release, I can finally have a coffee break of sorts <_< hehe.

I would do more tonight but work is in the morning… Thus time to go to bed when you consider it’s after 0330R [local morning], well at least this is the earliest I’ve gone to bed in awhile LOL.

FreeBSD 7 draws near!

I think the word is euphoria hehe.

FreeBSD 7.0 is nearing it’s release with many many improvements, if I was in the business of having huge SMP servers doing lots of databases and network intensive stuff I’d probably have testing going on for months in advance..

Being a single spider, well I’ve yet to test it xD

So far FreeBSD 7 is looking like it is the best software update to hit my radar since Vim gained spell checking support in it’s own 7.x release 😉

Blessed number seven hehe !

I’ve already nearly blown out the walls and then my ears setting the radio ^_^ Celebration time ! Hooyah !

Codes before Pillows

Sat down and started working on NPM again, this is my first commit in a few weeks… Mainly because the last few weeks have been a living pain in the ass rather then a codeathon.

Terry@dixie$ svn log -r HEAD                                               8:55
------------------------------------------------------------------------
r53 | sas_spidey01 | 2008-02-20 08:54:55 +0000 (Wed, 20 Feb 2008) | 23 lines

optionsinterface.py added

A thin wrapper around a dictionary of options (to be kept private)
that exposes a getter and setter method for each key:value pair.
For which is intended to be used as a slot from the GUI or a call back
of sorts from a slot in the GUI to the options interface.

A simple 'flush' method is provided to update saved config (not
finished). NPM_OptionsInterface is to be integrated with NPM_Options
in some suitable manor that removes as much as possible of the system
from the 'middle' of code that needs to get / set options values.

The question of using Qt's settings subsystem or the existing one
remains to be decided.

npmwidgets.py modified, gaining an extra slot for NPM_SpinBox -> man I wish Python had Cs Preprocessor some times.

settingspages.py -> checkboxes, spinboxes, and the override server prompt connected to the NPM_OptionsInterface provided.


More to be changed in the future design wise (for the better).. When I've got more sleep to think about it.


------------------------------------------------------------------------
Terry@dixie$ 8:5

If I didn’t have work in the next city tomorrow I’d be working on this for another two hours nut alas it’s already approaching 0400R / 0900Z rapidly… And I’m to tired to comment much more.

I do know this, I want to be able to get / set options as necessary through slots. Without having to have any understanding of how the config file is handled else wheres. At the moment I’ve basically started a switch from NPM_Options::config to NPM_OptionsInterface::config for storing the options in memory. The difference being at the moment NPM_Options is only able to read the configuration files using Pythons INI parsing classes for our needs. And it exposes a dictionary of option=settings. The difference between obj.config[‘optionKey’] = value and obj.getOptionKey(value) is negiable for me.

The thing of it is, what if we need to do more then just assign a value to keep things in order ? At least with a set of methods around the problem the rest of the program can be insulated from any major changes in that part of the system. I also know that I have very little interest in extending pythons dictionary class just for the occasion lol.

sleep….

Windows will make you bald

Today I had to set my Sister (in-law) with an e-mail account and access to it via my moms Desktop. So of course the obvious question is either she needs her own user account (in windows) plus the e-mail account or ma’s outlook would have to be setup to deal with the multi-login.

So I created the new user account for her, gave her an icon for outlook express next to the recycle bin and internet explorer (v6.x) on the desktop, set a wall paper and user pic (she loves Betty Boop).

Trying to find the docs on Bellsouth/AT&T’s website for creating a new e-mail account was not exactly as quick as I hoped but still easy as pie. I used my PC for that and RvS crashed in the process lol.

On Ma’s PC while logged in as the new user account for set up. I got a pop up from the windows security center just to tell me info I already knew. The Dell Support Center came up too, which we haven’t seen come up in many a year now ! Internet Explorer came up 404 on the pre-set home page (dellnet or some thing) and outlook express gave an error about the computer having no internet connection. Told it to go fsck itself and moved on and arranged for a pop-up less user log in.

Either AOL must have/had an in with Microsoft or a nice hackling plugin because outlook was set to launch AOL Instant Messenger on start up! And a general option for it too, like what the heck man. Now M$N or some thing from Microsoft I could understand but not AIM rofl. Although that PC’s got the good AOL client for AIM, the install is like 3 years old so it’s a version before AOL bloated the thing out. Which is really why I took to using all in one messengers like Kopete.

So I had to get that disabled, change the user picks, change the user names to match blah blah. Norton 360’s added toolbar in IE6 is not exactly welcome by my family — note to self, under no condition allow users to use IE as a default browser if I’m ever tasked with admining windows machines. And ban all Nortan and Mccfee products on machines with less then 768MB of Memory. In point of fact, make sure they pay extra for the psychiatrist bill for working with Windows.

So kicking about with Windows XP, Dell, Outlook Express, and AOL it was no problem to set up. But oh boy oh boy will you never find me using Windows for more then “Gaming” and similar reasons while Microsoft and other companies still are in power.

I’m a Unix man by nature and have a militaristic mind set. I value clear concise no shit assessments and not being nagged by pointless and flashy programs popping up taking several seconds to display only to tell me what I already know or worse try to sell me some thing 8=)

Windows, wouldn’t touch it with a 10 foot long cattle prod if I had a choice… Still it’s the only decent platform for playing *real* video games on. Experience has shown the consoles are, uhh I’ll zip my trap before some googler flames me <_< hehe.

This reminds me of why I do not want to buy Microsoft VISA, why my laptop and file server run Open Source unix based operating systems, and why I use few programs that are known to “annoy” me. I want to get work done, I know how to read the fine manual, and software that bitches at the user should be fed through a hex editor, operating systems included 🙂

FreeBSD, now that is a sensible design… it won’t nag you ever ten minutes or so.

With similar hardware specs between my laptop and ma’s desktop, the only other principal difference being I have a Sempron Mobile (AMD budget model laptop CPU) and hae has an early Pentium 4 (when 2Ghz was new and costly). My laptop running FreeBSD runs faster then her Desktop running Windows XP SP2 + NAV and now Norton 360 – even while running KDE on the laptop. Programs like Norton remind me why I’ve heard jokes about system admins automatically having a users quota reduced for trying to run heavy programs on time sharing systems hehe.

Restructure and Refeeding

Well, got some work done.

Completed the change over (mostly) from a single hard-coded dialog for handling the output of processes to being a subclass of a display builder like parent class. Python doesn’t support abstract classes as far as I know or even private members for that matter (but has a nifty name mangling like thing for a making a naming __convention).

The original reason I wanted to do this is I figured that A.) The class was cluttered with code common to any ol’dialog window and B.) The rest of it was just specialized for the task of running a process and nabbing it’s output.

So I moved the common code into the NPM_AbstractDisplayDialog class and wrote a NPM_ProcessDisplayDialog subclass of it to replace the original NPM_DisplayDialog which also will allow me to use a similar dialog for other tasks without having to duplicate the code they would share if I was to implement another like-wise class in parallel. Because for example the NPM_DisplayDialog class was setup to ensure the process was neutralized before completing it’s termination I setup NPM_AbstractDisplayDialog::aboutToDie() as a signal to connect a slot from my subclass(es) to be called to do clean up, basically an advisory destructor you could say. And I connected it to the button to call QWidget::close() to this slot so aboutToDie() is sent when the dialog is about ready to be terminated.

I also found a fixed a small error in the pkg_info parsing, things like that is some thing that most concerns me.. lol.

Now the remaining problem is I’m starving and it’s 0746 Zulu (that’s 0246 local morning)… Must find food, then I guess I should get some sleep :

Days coding

The current stage of things for the settings menu. As can be seen I still have a few things to do with the layouts, I think a grid would be better personally. At the moment it also doesn’t actually set the settings it front ends for yet. I still need to test out the QSettings class first to see if I want to replace the custom system I’ve done with Pythons build in INI parser or not. I also need to cook up some icons and finish the portsnap entry. Right now it is purely a Qt3 program but if PC-BSD has finally fixed the ‘ugly’ theme settings for root under KDE I might consider a conversion to KDE modules before Qt4/KDE4. At least since what ever version I used to install on my Laptop the default Qt3 themes for Root are even worse…

Another thing I want to do is look at Pythons ability to handle manipulation of UID, it would be kind of nice to prompt for roots password and only elevate permissions when necessary. I aim for things to be the best they can be but paranoia never hurt in programming… hehe. Some day I would also like to expand this beyond explicitly using portupgrade/pkg_*/portsnap/csup/cvsup/psearch in the background but I don’t have time right now. I could get more done if I had a peaceful working environment…. any way here are some screen shots

click to enlarge images

ports settings
Free Image Hosting at www.ImageShack.us

logging settings
Free Image Hosting at www.ImageShack.us

network settings
Free Image Hosting at www.ImageShack.us

I think this is pretty good considering I rewrite most of what I already had today and most of this was done in about 6 hours of work, between chores, dog walking, lunch, interruptions, and phone answering ! Plus another hour or so of minor changes and additions so far tonight. I wish my strength could hold out for another 5 hours worth of work so I could get done some of the other things on my list for the night…. Hopefully I can get at least some of the other work done before I pass out. because I do need to get some shuteye if I’m ever going to make it to work in the tomorrow on time.

*SIGH*

NPM Settings Menu

Photobucket

Work begins on a settings GUI for NPM. I have a QIconView standing in for the list of config topics, I expect in the end it will probably be some form of widget stack or some thing like that. The changes I’ve committed to the trunk tonight are purely cosmetic, there is no link to the exsisting settings code that revolves around an RC file yet. I’m actually interresting in moving to using QSettings instead, tests will show the direction to be taken.

At the moment it has the majority of important options. I want the logging section to allow the user to set the logging level and files e.t.c. one thing that I think would be cool is to save the result files from portupgrade with a proper time-stamp appended to the file name. Although it would only take a minute to check the script to see if it would truncate the log file if reused.

There also needs to be a small network section whether separate or added to the others that can handle setting the portsnap/sup servers to use. And I would like it to be able to have a list of servers to query set. So that if it can’t reach one it tries the next (pardoning the retry options set).

days recap

It’s been a bit of a busy night, took a little time to work on the NPM_PortConfig class but I’m still not really happy with it. The main thing that concerns me at the moment is dealing with saved config’s. Namely how to handle a situation where the Makefile has more options in it then the saved options from last time the system was built. Because other then that, it is really just as simple as check for a saved config,parse it if found and the makefile if not then and move on..

Also been playing around with the ol’C++ tonight. So farI’ve been reminded of why I hate C++ and why I love Qt and the GNU Compiler Collection at the same time lol. It does feel kind of weird to be working on some thing in C++ again, it was my first language but I have not used it in ages.. used C yeah sure but not C++ :

Lead some Planning & Leading training on TG#1 today. I was a little disapointed that Chester was the only one that showed up… But I think it whent quite good. Chester continues to show he’s worth our time in training. And the best part, we got to sneak past a ton of tango’s right under their noses hehe xD

Still early here, 0320R (local) but it’s hard to keep my mind on the code…

*sighs* women… lol.