LJ Archive

UpFront

diff -u: What's New in Kernel Development

Zack Brown

Issue #196, August 2010

Jonathan Cameron had a bit of a disappointment when he tried to introduce a new subsystem for ambient light sensors. His reasoning was not poor. There were several existing drivers for ambient light sensors, and they were all scattered throughout different subsystems. His creation of a new subsystem amounted to little more than gathering those drivers together and writing up a little documentation. But, Linus Torvalds vetoed the whole plan, saying that ambient light sensors essentially were input devices and shouldn't be given their own subsystem. So, Jonathan's new ALS subsystem may not come to pass, but presumably folks now are working on gathering those drivers together into a saner organization.

Constantine Shulyupin is soliciting input on how to update his map of the Linux kernel, located at www.makelinux.net/kernel_map. It's a high-level view of the overall structure of the kernel, complete with links into lxr.free-electrons.com, where the various identifiers are defined and tracked.

Greg Kroah-Hartman has been maintaining the staging tree, but recently he started falling behind in considering patch submissions. Joe Perches asked why, and it turned out Greg had been giving presentations, writing articles and moving houses, with the result that there was now a 600-patch backlog. Various folks discussed possible changes to Greg's standard process, which included him just looking at patches as they came in and making decisions about them. Joe volunteered to help out. Greg was reluctant to change his work flow, especially since the problem had been the result of a confluence of events, but he did take Joe up on his offer and asked him to handle the incoming patch requests, while Greg continued to plow through the backlog.

Phillip Lougher hit a snag with SquashFS. He tried to update some very ugly code, and Linus Torvalds asked him to fix the ugliness first. Now Phillip is stuck with this thorny batch of ugliness that touches a number of different architectures, which aren't directly related to the SquashFS Project, but which he can't avoid working on if he wants his SquashFS patches to make it into the kernel. Tim Bird recently asked about the status of SquashFS, and that's basically what Phillip told him in reply. The patches will have to wait until Phillip finds the time to delve into those messy include files.

The Linux Plumber's Conference will be held in Cambridge, Massachusetts, this year, November 3–5. The overarching theme will be projects that span multiple interfaces, and thus, will involve groups of developers who might not normally work directly with one another. The format will be a set of brainstorming “tracks”, where folks will try to figure out the best way to deal with these various cross-project issues. Check out wiki.linuxplumbersconf.org/2010:topics for the current list of “tracks” being considered.

The SCST generic SCSI target subsystem has migrated from using ProcFS for configuration to using SysFS. The new interface is documented in README files in the source tree. Vladislav Bolkhovitin announced the change recently, adding that the old ProcFS interface was now officially obsolete, which means that developers maintaining drivers, dev handlers and management utilities should start updating their code, with the expectation that the ProcFS interface will be going away at some point. The way this typically would work is that all active maintainers would migrate their code, and then someone would try to remove the SCST ProcFS interface. Next, someone would come out of the woodwork to say there's this or that driver that breaks, and then there would be another waiting period. The process would repeat until it became clear that any remaining code using the ProcFS interface is either completely unmaintained or has no users at all. Then the ProcFS interface will be removed, and possibly the projects still depending on it might be removed from the kernel as well.

Android: Too Much of a Good Thing?

Shawn Powers

Issue #196, August 2010

Android is everywhere. Really. It runs phones, tablets, and recently, I even saw it running on an iPhone. Just a few years ago, that would have thrilled me to no end. Truthfully, it still does, but I'm more skeptical now. See, two years ago, Linux was everywhere on Netbooks. I thought it was a big break—Linux finally hit the mainstream.

But, vendor customization and “dumbing down” made Linux look like an inconsistent kludge rather than a free and powerful choice. So far, Android looks fairly consistent across hardware. So far, many apps work, regardless of the Android version your device supports. Hopefully, vendors will see the mistakes made with Netbooks, and keep their “branding” to a minimum. There are many ways phone vendors and wireless carriers could mess up our world domination efforts. Again.

Dear Vendors, please don't try to sell more phones by adding proprietary software on top of Android. If you add software, contribute it back to the community. If you want to sell more phones, make better phones than your competition. (Please!)

What Hardware Do I Have?

Joey Bernard

Issue #196, August 2010

Often you may not necessarily know what kind of hardware you have—you may have a no-name box from a smaller company or a used machine. This month, I present the tools you can use to find out what you have installed.

First up is lshw. This utility LiSts HardWare (lshw). If you run it as a regular user, it actually warns you to run it as root. So go ahead and run sudo lshw. You should see screens of information for your system. The first section will be general information and should look something like this:

jbernard-eeepc            
    description: Notebook
    product: 700
    vendor: ASUSTeK Computer INC.
    version: 0129
    serial: EeePC-1234567890
    width: 32 bits
    capabilities: smbios-2.5 dmi-2.5 smp-1.4 smp
    configuration: boot=normal chassis=notebook 
    ↪cpus=1 uuid=XXXXXX-XXXXX-XXXXX-XXXXX

This is what I get when I run it on my little ASUS EeePC. Right away you can find the manufacturer of this little beast (ASUSTeK), the BIOS version (0129), and the fact that it's a 32-bit machine with one CPU. More information is broken down into the following categories:

core
   firmware - motherboard and BIOS information
   cpu - CPU information
      cache - cache information
   memory - memory information
      bank - specific bank memory information
   pci - PCI bus information
      display - PCI display adapter
      multimedia - PCI audio adapter
      pci - other PCI devices
      network - PCI network adapter
   usb - USB devices
   ide - IDE information
      disk - individual disks
         volume - volumes on this disk

For an idea on how much information is available, the main memory section shows this about my EeePC:

*-memory
     description: System Memory
     physical id: 1f
     slot: System board or motherboard
     size: 512MiB
   *-bank
        description: DIMM DDR2 Synchronous 400 MHz (2.5 ns)
        product: PartNum0
        vendor: Manufacturer0
        physical id: 0
        serial: SerNum0
        slot: DIMM0
        size: 512MiB
        width: 64 bits
        clock: 400MHz (2.5ns)

This utility is basically an all-in-one tool that spits out everything on your system in one go. But, what if you want information only about specific subsystems in your machine? An entire suite of utilities exists for this, and they might be more useful when you need some specific piece of information or want to do some system querying in a script.

You may want to look at the CPU. The lscpu utility provides output similar to the following:

Architecture:          i686
CPU op-mode(s):        32-bit
CPU(s):                1
Thread(s) per core:    1
Core(s) per socket:    1
CPU socket(s):         1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 13
Stepping:              8
CPU MHz:               571.427

From this, you can see the manufacturer, whether it's 32-bit or 64-bit, the exact version and model, as well as the current CPU frequency.

If you want to know whether your video card is supported by X11, or whether you need to find a third-party driver, you can use lspci. This utility gives a list of all the devices plugged in to your PCI bus. The output looks something like this:

00:02.0 VGA compatible controller: Intel Corporation 
 ↪Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
00:02.1 Display controller: Intel Corporation 
 ↪Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)

This information shows that the video controller in my EeePC is an Intel controller. So, if you wanted, you now could search Google with this information to learn about your video card and how best to configure it. If you want to see what USB devices are on your system, use lsusb. On my EeePC, I have an SD card installed, and it shows up as this:

Bus 001 Device 002: ID 0951:1606 Kingston Technology 

If you're interested in the disk subsystem, you can find out what your system has with the blkid utility. This utility prints out all the available filesystems, with the following output format:

/dev/sda1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext2" 
/dev/sda2: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="swap" 
/dev/sda3: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext2" 
/dev/sdb1: UUID="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" TYPE="ext2" 

With this utility, you can learn what devices are available and what filesystems are being used on them. The associated UUIDs also are available if you want to use them in the entries in /etc/fstab.

Now that you know what kind of hardware you have on your system, the last thing to check is to see whether your kernel actually is using the available hardware. On most modern distributions, the kernel is compiled to use modules. You can check to see which modules are loaded by using the lsmod command. You will get a list that looks like this:

agpgart                31788  2 drm,intel_agp
lp                      7028  0 
video                  17375  1 i915
output                  1871  1 video

You can see that the agpgart module has a size of 31788 bytes and is used by the drm and intel_agp modules.

Now, hopefully, you can configure and optimize your hardware so that you get the most out of it. If you find other utilities not covered here, I would love to hear about them.

Autonomous Cars Running Linux

Anton Borisov

Issue #196, August 2010

This summer, two electric cars will be traveling from Milan, Italy, to Shanghai, China, on an ancient silk route (vislab.it/Projects/view/32/VisLab%27s_new_adventure_on_the_Silk_road). The driving will be completely autonomous, controlled by Linux recognition and processing software. The cars are being developed at the Artificial Vision and Intelligent Systems Lab of Parma University by Alberto Broggi and his team. Read on for an interview with Alberto about the project.

Anton: You recently announced the Milan-Shanghai initiative. Could you explain the main purpose behind it?

Alberto: We design driver-assistance systems to help drivers and reduce accidents (increasing road safety). With this trip, we are pushing our technology to the limit and trying to give the vehicles a lot of intelligence to be able to drive by themselves completely.

Anton: Do you mean that with this trip you're trying to get as much road statistics as possible?

Alberto: Not only that. The vehicle, instead of only helping the driver in some dangerous situations, will fully manage itself (it will have full control of gas, steering and brakes) for the whole trip. In other words, it will not only be active for a given set of situations, but also for the whole 13,000km. We also will record all the data, so we can play back the whole trip many times once we return to Parma. In the end, we plan to test other driving assistance systems in a huge number of completely different situations (such as mountain, flat, hilly, traffic, no traffic, rain, dust, off-road and so on).

Anton: What organizations helped you design the car and supportive technologies?

Alberto: It's just us, thanks to a grant I received from the ERC (European Research Council).

Anton: So you've got an ordinary Fiat car, you created supportive software, and here it goes?

Alberto: No, we have electric vehicles manufactured by Piaggio, an Italian motor company. The vehicles we will use on the China trip are electrical and will have a solar panel to power the electronic pilot. Originally, we wanted to recharge the driving batteries with the solar panel, but current technology is not mature enough. Therefore, we are powering only the sensors, the PCs and the actuators (namely, the whole automatic pilot). The vehicle we are using right now (but not the vehicle that will travel to China) is called BRAiVE (www.braive.vislab.it), and it includes a superset of the technology that we will have on our China vehicles. BRAiVE is a traditional petrol-based car.

A half-dozen cameras and sensors, and here's an automated Linux vehicle.

Anton: Elaborate on the vehicle's architecture—especially the software part of it.

Alberto: The architecture is simple: seven cameras, five laser scanners, GPS, IMU (Inertial Measurement Unit)—all connected to three Linux PCs. The PCs get the data, process it and send commands to actuators that drive the steering wheel, gas and brakes. All the software was developed by us during the last 15 years. We have been using this software for other challenges like the DARPA Grand Challenge or Urban Challenge.

Three Linux PCs process data and generate a 3-D representation of the surrounding environment.

Anton: The DARPA Challenge is performed in dry and sunny places. Did you try to run tests somewhere in more severe conditions, like in rain or snow?

Alberto: We did tests in 2006 at the US Yuma base in Arizona (where we automated a PLS vehicle) and in 2001 in Antarctica (we automated a snowcat that followed tracks left by preceding vehicles). BRAiVE also works under light rain. Heavy rain is indeed a problem (as is heavy fog or snow).

Anton: How many prototypes had been developed before this roadrunner?

Alberto: Well, a good number! BRAiVE, TerraMax T2, Oshkosh PLS, Mini, Hummer—just have a look at our prototypes page: vislab.it/Prototypes.

Anton: How did you come to use Linux?

Alberto: I have been using Linux since it was created! Linux is more stable than Windows, and for these critical applications, it delivers the performance we need.

Anton: What flavor of Linux exactly do you use, and how do you process data (recognize video objects)—is this an HPC cluster or an ordinary PC?

Alberto: We started with Fedora 11, and we customized it to remove all features (services and software packages) typical of a desktop distribution, keeping only the minimum. We use Fluxbox as a window manager and gcc-4.4.3, kdevelop-3.9.99, gdb-7.0.1 as a development environment. We use normal PCs on a local LAN (Core 2 Duo T7100 at 1.8GHz 2MB Cache L2 FSB 800MHz, 1GB DDR2).

Anton: What components were programmed by your team and what has been done by the Open Source community?

Alberto: The real substance of our work is visual recognition and data processing, so my team has been busy with this in-house task for the past 15 years. Environmental reconstruction is the most difficult task. Once you have a 3-D representation of the surrounding environment, controlling the vehicle is not very complex. Our software is written in ISO C++, using some minimal additional open-source libraries like boost, loki and wxWidgets.

Driving conditions are recognized, so the vehicle continues its way forward.

Anton: What general obstacles can your vehicle bypass now, and what obstacles can't it bypass yet?

Alberto: Any obstacle rising up from the road surface is detected. We can't detect small obstacles. For example, curbs are not always detected, but larger obstacles like pedestrians, vehicles and small animals are detected. Technically, we can locate obstacles that are sufficiently visible. Indeed, it takes time, and therefore, the system wouldn't be able to work at speeds such as 200mph (we'd need to increase our computer horsepower). Our electric vehicles run at slow speeds (the maximum speed so far is 70km/h), so we have no problems. Other systems (hardware and software) have been developed for other vehicles depending on their speed (based on more penetrating sensors and faster processing).

Anton: Where is such a technology (unmanned driving) already demanded, and in what spheres can you envision it will be useful to deploy?

Alberto: Definitely in the military field, but there's a huge demand in the agricultural domain. Think about autonomous tractors that move on the field automatically and work 24/7. And, we have been working (and are currently working) with Caterpillar for a number of years now, and they are interested in putting our technologies on their mining vehicles. Besides, through all these years we've done a couple auxiliary projects in aviation (project PEGASE), road construction (project TOPCON) and many others (vislab.it/Projects).

Anton: What stops them from using your technology right now?

Alberto: The environmental conditions are the most difficult challenge. We are now working to adapt our algorithms to have them working on very rough terrain, when the vehicle jumps on terrain bumps. Now we are able to reconstruct the world in 3-D with two cameras in real time (10Hz) and warn the driver about the presence of obstacles.

Anton: Tell us about your team.

Alberto: All the people on my team are engineers, almost all are PhDs and all of us have an electrical/CS background.

Anton: You've got an alumni procedure. What qualifications do you expect from a student joining your team to help further develop this prototype?

Alberto: Well, regarding this prototype, we already are almost done (we leave in less than three months). But for further projects (and we have plenty of them!), the ideal candidate should be well motivated and should be able to speak C++ fluently.

Non-Linux FOSS

Mitch Frazier

Issue #196, August 2010

Just because your phone is running Linux (and let's hope it is), that doesn't mean you can't talk to it with your Windows computer. Droid Explorer is an open-source program that allows you to manage your Android device in the same way that Windows Explorer allows you to manage your local files.

Droid Explorer supports multiple devices, allows you to copy files to and from your device easily, assists in applying system updates, provides a shell window, allows you to reboot into recovery mode, provides a package manager to install/uninstall Android Packages (APK), and it even lets you take a screenshot of your Android device. And, that's just for starters.

Droid Explorer is written in C# for the .NET platform. The current version is 0.8.4.3-Beta, and it lives at de.codeplex.com. If you're a Mono programmer looking for a new project, the developer is looking for someone to pitch in and help convert the UI to run on Mono.

Selecting Your Droid

Managing Your Droid's Packages

LJ Index, August 2010

1. Transistor count of an Intel 8080 microprocessor (in thousands): 4.5

2. Transistor count of an Intel 80286 microprocessor (in thousands): 134

3. Transistor count of an Intel 80386 microprocessor (in thousands): 275

4. Transistor count of an Intel Pentium microprocessor (in thousands): 3,100

5. Transistor count of an Intel Pentium 4 microprocessor (in thousands): 42,000

6. Transistor count of an AMD K8 (Athlon 64) microprocessor (in thousands): 105,900

7. Transistor count of an Intel Core i7 microprocessor (in thousands): 731,000

8. Transistor count of an Eight Core Xeon Nehalem-EX microprocessor (in thousands): 2,300,000

9. Transistor count of an RV820 ATI/AMD GPU (in thousands): 2,154,000

10. Transistor count of a GF100 NVIDIA GPU (in thousands): 3,000,000

11. Hard drive cost per gigabyte in 1990: $53,000

12. Hard drive cost per gigabyte in 1995: $850

13. Hard drive cost per gigabyte in 2000: $20

14. Hard drive cost per gigabyte in 2005: $1

15. Hard drive cost per gigabyte in 2010: $.10

16. RAM cost per gigabyte in 1990: $119,706

17. RAM cost per gigabyte in 1995: $33,024

18. RAM cost per gigabyte in 2000: $1,598

19. RAM cost per gigabyte in 2005: $189

20. RAM cost per gigabyte in 2010: $21

HTML5, New Technology for Old Dogs

Shawn Powers

Issue #196, August 2010

Everyone (myself included) is excited about HTML5 and how it will allow us to have richer content without proprietary plugins. Those who hate Adobe are excited about breaking away from Flash's dominance in the Internet scene, but there's also a group of folks excited to have any option on the Internet multimedia scene—PowerPC users.

Open-source alternatives to Flash certainly exist, but unfortunately, they don't work well on the majority of sites requiring Flash. Because Adobe has never released a PPC version of Flash for Linux users, those of us hoping to repurpose old Apple computers are left without any answer when users ask about Flash—and Flash is everywhere!

Will HTML5 be the knight in shining armor for folks running Linux on G4 and G5 computers? Will the Internet's transition to HTML5 take longer than what the old PowerPC beasties have left in them to run? We'll see pretty soon. I sure know I'd love to see our old Apple computers go back into service!

Readers' Choice Awards 2010

Vote for your Linux and open-source favorites in this year's Readers' Choice Awards at www.linuxjournal.com/rc10. Polls will be open through August 20, 2010. Winners will be announced in the December 2010 issue of Linux Journal.

LJ Store's Featured Product of the Month: the Ultimate Linux Gift Pack

The Ultimate Linux Gift Pack includes a one-year (12 issues) gift print subscription to Linux Journal. In addition to the one-year subscription, your recipient will receive a gift pack immediately. Items in the package include:

  • A copy of the most recent issue of Linux Journal so the recipient can start reading before the subscription kicks in.

  • A Powered by Linux magnet.

  • A 2010 Linux Odyssey T-shirt.

  • A pack of assorted stickers.

  • A Penguin Party bumpersticker.

  • An I Want YOU! button.

  • A Linux Journal Archive CD-ROM featuring more than 180 back issues of the magazine.

  • A 2010 Tux the Penguin wall calendar.

Retail value is $120. Yours for only $59.95 ($79.95 outside the US). Order yours today at www.linuxjournalstore.com.

They Said It

We all agree that your theory is crazy, but is it crazy enough?

—Niels Bohr

If you think education is expensive, try ignorance.

—Derek Bok

Pain is inevitable. Suffering is optional.

—M. Kathleen Casey

Bad is never good until worse happens.

—Danish Proverb

Dream as if you'll live forever. Live as if you'll die today.

—James Dean

Difficulty attracts the man of character because it is in embracing it that he realizes himself.

—Charles de Gaulle

Technology is like fish. The longer it stays on the shelf, the less desirable it becomes.

—Andrew Heller, IBM

The last good thing written in C++ was the Pachelbel Canon.

—Jerry Olson

Watch me not care.

—Dilbert

Ubuntu One: Selling Free

Shawn Powers

Issue #196, August 2010

Love it or hate it, cloud computing is here to stay. Handfuls of cloud services are being offered to computer users now, and like I've mentioned before, Canonical is doing the same. As it matures, Ubuntu One is beginning to roll more and more services into its feature set, including:

  • File syncing (like Dropbox or Mobile Me for Macs).

  • Preference syncing (Mobile Me does a bit of this).

  • Contact syncing (Mobile Me and Google do this).

I'm sure as more developers take advantage of the open-source client for Ubuntu One, we'll see more and more applications take advantage of syncing, backup and off-line functionality. Unfortunately, although Canonical does offer free storage in the cloud for all users, that doesn't mean all the features will be included in the free install. Contact syncing, for example, uses Funambol's technology to sync with mobile devices. That means Canonical has to pay for contact syncing and must pass that fee to the end users.

Certainly paying for a service isn't a bad thing. The unfortunate part is that Google does provide the vast majority of its services, including syncing contacts on mobile devices, for free. Hopefully, Canonical continues to keep the Ubuntu One API as open as possible, and the community will come alongside them in order to provide features that otherwise would cost money. I don't mind paying for storage in the cloud, but paying for features that are provided free elsewhere is a tough pill to swallow.

Distro Spotlight

Katherine Druckman

Issue #196, August 2010

Each week or so, we're choosing a Linux distribution to highlight on LinuxJournal.com. You'll see the Distro Spotlight on every page of our Web site. We hope you'll visit often and add a comment to cheer on your favorite, and also share your thoughts, tips and pitfalls. In the process, we hope to present some lesser-known gems, although we'll still celebrate crowd favorites. Be sure to check out the current pick, and maybe you'll find your new favorite distribution. If you're up to a fun challenge, try each distribution with us! Who doesn't love a reason to re-install Linux?

While you're at LinuxJournal.com, feel free to leave me a note to tell me how things at the site are working for you. You can find me at www.linuxjournal.com/users/webmistress.

LJ Archive