Fedora-Advisory-Board Thu, Apr 22. 2010
Within the Fedora project, there is a mailing list that perhaps doesn't get as much attention as it should: advisory-board. The name itself seems a bit cryptic, but this is the place that the Fedora Project Board has public discussions. It's the place where board proposals get hashed out in public, and it's a good place to bring items to the attention of the board. Come and join the conversation!
Network Storage: Loopback ext3 on NFS? Really? Thu, Apr 22. 2010
One interesting find I made while working with the Seneca students on Fedora ARM was that a loopback filesystem hosted on top of an NFS share can outperform the NFS share. Yes, it's counter-intuitive, because that would seem to introduce additional layers of processing, but I think it makes sense.
When using NFS, file metadata management is performed by NFS. When loopback-mounting a filesystem in a file hosted on NFS, the file metadata management takes place entirely on the local system -- NFS merely provides a data store. In this sense, it's not much different from iSCS, because the loopback filesystem can't be readily accessed by two separate hosts at once.
In fact, on a small ARM system such as an OpenRD-Client, loopback-ext3-on-NFS over GigE handily outperforms both Class 6 SD and a local USB-PATA drive.
Why not just use iSCSI? Well, for reasons I haven't yet determined, the Fedora iSCSI initiator doesn't work reliably on ARM-- under heavy load, it sends invalid opcodes to the target. This sounds like an alignment issue, but alignment fixups don't cure it. Investigation continues...
Seneca and the Fedora ARM Secondary Architecture Thu, Apr 22. 2010
ARM processors power the digital mobile age. Billions are produced per year, ending up in the majority of cellphones as well as in e-book readers, plug computers, the OLPC XO 1.75, tablets, netbooks, intelligent RJ-45 network jacks, and even microSD cards.
The Fedora ARM Secondary Architecture project has done a great job of porting Fedora releases to ARM. To assist this initiative, this semester's Software Build and Release course at Seneca (SBR600) put together a new Koji build farm for the ARM architecture in preparation for using koji-shadow to follow the primary architectures. It's been a fascinating and challenging project -- working with cross-compilers, emulators, and hardware with much smaller configurations than standard PCs. A large amount of effort was spent benchmarking various configurations to determine optimal memory and storage arrangements and to compare emulated vs. hardware ARM performance to guide the configuration of the build farm.
So now we're at the end of the semester. Where do things stand?
- We have a working Koji build system, with two hardware builders plus emulated (VM) builders
- Since we're at the end of the semester, things will be quiet for the next week and a half, but then we've hired a graduate to work on this full-time (intros coming up shortly )
What's next? In May-June we expect to:
Running Fedora-ARM in emulation under virsh Thu, Mar 4. 2010
The Fedora qemu-system-arm package provides pretty good ARM processor emulation, which can be used to run the Fedora ARM secondary architechture. This is an easy way to get started working with ARM -- for example, while waiting for your plugcomputer, beagleboard, or OLPC XO 1.75 to arrive
The previous wiki notes on using ARM with QEMU didn't cover using qemu-system-arm under libvirt management. This meant that you couldn't easily take advantage of libvirt benefits such as automatic network setup (with DHCP and NAT), the virt-manager GUI tool, guest autostart, or disconnection/reconnection to the console.
I've updated https://fedoraproject.org/wiki/Architectures/ARM/HowToQemu to include some basic notes on setting this up, and provided some files to simplify and speed up the process. Jump in and join Fedora-ARM, the water's nice!
Mock config for ARM building Wed, Feb 24. 2010
mock is a Fedora package building tool. When invoked to build a specific package from a source RPM (which contains the package source plus a spec file), it creates a chroot environment, populates that environment with a very small set of base packages plus the build requirements specified in the spec file, and then attempts to build the package in that environment. This permits the build environment to be (somewhat) isolated from the host environment, so that a different set of build dependencies (tools, libraries, and headers) can be used for building. It's ideal for proving that the build requirements are correct, and it also permits you to build a large set of packages without installing a lot of build dependencies on the host system. It's also a highly automated and very convenient way to build
I've been experimenting with building for and on the ARM architecture. Fedora 12's mock package does not include a config file for ARM; here is a config file I've cobbled together as a starting point:
config_opts['root'] = 'fedora-12-arm'
config_opts['target_arch'] = 'armv5tel'
# The chroot_setup_cmd is usually 'groupinstall buildsys-build' but that hasn't been defined for ARM yet.
# Instead, the package list is specified here.
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils fedora-release findutils gawk gcc gcc-c++ grep gzip info make patch redhat-rpm-config
rpm-build sed shadow-utils tar unzip util-linux-ng which bash curl cvs fedora-release gnupg make redhat-rpm-config rpm-build shadow-utils'
config_opts['dist'] = 'fc12' # only useful for --resultdir variable subst
config_opts['yum.conf'] = """
This uses the existing fedora-arm repositories along with an explicit list of base packages for the mock environment. Ultimately, the buildsys-build package group will be specified in a special-purpose repository, but the explicit package list given here provides a good starting point.
Update: here's a link to this mock config file: http://cdot.senecac.on.ca/arm/fedora-12-arm.cfg
Clarity in Error Dialogs Sun, Feb 21. 2010
I've met my share of error dialogs through the years. Ones that say "Something bad has happened. Ok?" are annoying but understandable.
However, one in gpk-update-viewer, which I encountered yesterday, is a real head-scratcher:
This dialog sometimes appears when you try to close the gpk-update-viewer window while updating and it reads:
Cannot cancel running task
There are tasks that cannot be cancelled.
Quite apart from the fact that this dialog shouldn't appear at all -- packagekit will continue the update in the background -- the two buttons appear to mean the same thing, both of which are (according to the dialog) impossible.
Update: Richard Hughes noted in the comments that this is fixed upstream