|
From: Bill C. R. <do...@fr...> - 2009-03-02 04:46:11
|
I spent a number of hours this weekend attempting to get Anaconda to
work with coLinux. coLinux has come a long way, and even the Live CD
almost works. I would like to briefly describe some of the problems I
found, some of the solutions, and where I am stuck right now.
The biggest problem I've had so far is debugging. I can find no way
to scroll in the console window. So tracebacks, and errors quickly
appear on the screen and disappear. Is there anyway to redirect the
console output to a log file or such? If so, it would make life much
easier. For now, I've just been entering print statements in code,
and sleep commands to give me time to read the output. It doesn't
always tell me where it crashed, but it does help me figure out where
it didn't crash.
The first problem I found is anaconda needs the driver modules. I
found simply appending the modules to the initrd.img file works just
fine to fix this:
gunzip -c initrd.img > initrd.cpio
tar xfz vmlinux-modules.tar.gz
find lib/modules |cpio -o -H newc -A -F initrd.cpio
gzip -c initrd.cpio > initrd.img
The first code problem I found is the capacity for cobd devices is
listed as 16. As none removable devices, anaconda expect the size
value to be valid. However, the size is always read as 0, so anaconda
skip past the devices. On a hunch, I added a open command into the
code, and found once a cobd device has been opened, the size value is
nolonger 0, so anaconda will recognize it. So the solution is coLinux
either needs to mark all cobd devices as removable, or it needs to
initialize the size parameter.
The next problem I came across is that anaconda expects CD's to have
the cd capacity set. Since coLinux treats all cobd devices the same,
none are marked as CD. So again, I did a quick hack and modified my
build of anaconda to consider all coLinux devices as both CD's and
hard disks.
Next, for some reason NetManager in the initrd.img is unable to
initialize the network for slirp network, even when I explicitly
specify the networking parameters. I've had similar problems in the
past with qemu, and managed to get around it by using a different
networking setup. I will try the same for coLinux, but for now this
problem stopped me dead in my tracks.
Now, you might think as I did, that we don't need networking. Just
specify an ISO image and install from that. However, the problem is
the only headless option for anaconda is to use vnc. But in order to
use vnc, we need networking. Otherwise anaconda consistently crashes
trying to set-up graphical display. I am not certain that having
networking, and thus vnc will avoid this crash, but I am certain it
can not work without networking for a headless install.
The last sticker is going to be the partitioning. In that there seems
to be no capacity in anaconda to deal with hard disks of type 16.
However, once I get past the networking problem I will try and add
this capability to anaconda.
Any insight others have, especially in the NetworkManager problem and
how to debug this code would be greatly appreciated.
Bill
|