Archive for the ‘Summer of Code’ Category

22
Jul

My work towards creating a front end for freebsd-update is progressing. I have it at the point where it is exchanging dummy information about the patches on a machine. I’ve added signal handlers to shut down the back end correctly. The network code is fixed when the back end attempts to disconnect and reconnect.

I still need to write the code to detect the downloaded and installed patches. I am also working on the install_patches handler. It will need a functions written to extract the relevant data from the calls argument. When the install_patches handler is able to at least return some dummy information I will hook the new install button to a call.

When the list_updates and install_patches handlers work I’ll have to wait for a security announcement to test it with. Until then I’ll just have to use my local update server.

10
Jun

I’ve managed to get my front and back ends talking to each other. The front-end is written in Python. It loads a Glade file and uses that to generate the window to display.

To run it you need a copy of //depot/projects/soc2007/andrew-update/ from perforce. Run ‘make’ to build it. Next, from the backend directory, run ‘facund-be -c freebsd-config-control.conf’. This starts the backend. In a new terminal, from the frontend directory, run ‘python facund.py’. It will open a window with what will become a list of computers on the left with a connect and disconnect button under it. When the connect button is clicked it should attempt to connect to the back-end over the /tmp/facund unix socket and send a start message to the back-end. On disconnect it will send a stop message and wait for the back-end to do the same.

The rest of the communication is yet to be defined but I have a basic idea of the front-end sending a request something like <get value=”available_updates” id=”random_id”/>. The back-end then sends a <return id=”random_id” data=”none”/>. The return data may be changes to allow for non-string types, e.g. bool, int, array, etc.

13
Apr

My proposal for the Google Summer of Code to create a frontend for freebsd-update was accepted by the FreeBSD project.

My current design it to have a backend to control freebsd-update. This then talks to the frontend that lets the administrator update the machine and restart services as needed. I will have to come up with a protocol for the back and front ends to communicate in a secure manor. I also want to be able to extend what the backend can do, eg. update ports/packages, restart services or the whole computer.

12
Oct

I was accepted by the FreeBSD team to receive the US$4000 from Google for the Summer Of Code. This is a note to Google: thanks for the check (still waiting on the tee-shirt).

I am still working on getting the BSD Installer integrated with FreeBSD. I now have the Lua backend past the point of the BSDINSTALLER-BETA-1 release I made.

I have been building kernels without Preemption as qemu would cause a race condition to be triggered. This patch went into the FreeBSD tree. It means I don’t need the NOPREEMPTION kernel anymore for use with qemu as the race condition is fixed.

08
Sep

This really happened a week ago but I was too busy/slack.

The Google Summer of Code finished back on 1 September. As far as I know I finished everything but the mentors at FreeBSD have the final say on whether I will receive the full $4500 or just $500.

I’m hoping if I pass I will get the tee-shirt soon so I can use it to skite to the other Computer Science students around Uni.

02
Aug

I’m looking at ways to install packages with the BSD Installer.

One way is to move the few executables and libraries needed from /usr to another location on /dev/md0. These include /usr/bin/login, /usr/sbin/bsd_installer_be, /usr/sbin/bsd_installer_ncurses, /usr/lib/libaura.so, /usr/lib/libdfui.so and /usr/lib/libinstaller.so but there may be others. /usr would then be unmounted and the package CD gets mounted in it’s place. When all the packages are installed it would be unmounted and the install CD mounted back to /usr.

Another is to move /usr to a file system image. The dists would stay directly on the CD but it could be unmounted as needed without any problems.

The only problems I see with the former is I don’t know if any further files from /usr will be needed in the future. The latter will need more memory which I’m trying to keep to a minimum as swap is not available until part way through the install.

I have only started testing to see if I can unmount /usr, remove the physical CD and still access / with it.

If anyone has any other ideas on how to change the CD during the install please leave a comment.

29
Jul

The first testing release of the BSD Installer powered install CD’s is below. I’ve been working on this for just over a month (it seems longer).

Announcing the first test release of a BSDInstaller-ified Install ISO
for FreeBSD.

I am pleased to announce the first beta release of BSD Installer powered
FreeBSD Install CD’s. It is both for wider testing and feedback on to
gauge the progress I’ve been making for the Google Summer of Code. This
is based on RELENG_6 and unfortunately only for i386.

It is available from
ftp://ftp.freebsd.org/pub/FreeBSD/SOC2005/bsdinstaller/ and should be on
mirrors soon.

If you find any bugs not already listed in the Known Bugs section of
this email or in http://wikitest.freebsd.org/moin.cgi/BSDInstaller
please email me at soc-andrew@freebsd.org to help fix the bugs.

Details:

There are three virtual consoles running:
* ttyv0: The frontend
* ttyv1: The backend
* ttyv2: A standard login screen to login as root with no password.

To see the installation log change to console ttyv1. It is also written
to /var/log/install.log on the installed disk.

Minimum Memory:
* 64M

Known Bugs:

* Can only install to one drive, can’t have / on ad0 and /usr on ad1
* Cannot install source
* Cannot install ports tree
* Cannot install packages
* The “Display system startup messages” window dosen’t display anything
* Sendmail complains about not being able to change dir to
/var/spool/clientmqueue
Workaround: run “chown smmsp /var/spool/clientmqueue”
* “Exit to Live CD” dosn’t work
Workaround: change to ttyv2, login as root no password
* dhclient fails as /var/db is missing as well as other errors.

Testing

* There has only been minimal testing of the “Configure an Installed
System” menu. Most of the options should work.
* The “Install extra software packages” option dosn’t work
* I havn’t looked at “Setup NetBoot Install Services” menu, I have no
idea if it will work or not

27
Jun

I received an email from goggle in the weekend saying I was selected for the Google Summer of Code to work with the FreeBSD Project on integrating the BSD Installer to FreeBSD.

I have added a page to the FreeBSD test wiki on my project. It is currently the proposal I sent in but will soon include more detail.