2005-12-29

Installing Fedora Core 4 Linux on a Dell Latitude D610

My employer, CentrePath, gave me a new Dell Latitude D610 laptop to use for work. My usual development environment is Linux, so I intend to install Linux as the laptop's primary operating system. Our software product is qualified for Red Hat Enterprise 3, so Fedora Core is the best choice. This entry describes what I did to install FC4 on the new laptop.

Step 1: Upgrade my wireless router's firmware
I have an old US Robotics 8054 router/wireless access point. It was running the original firmware (1.17, Fri, 25 July 2003) from when I bought it two years ago. I had been noticing some problems with it. The primary problem is that it seems to reset frequently on long sessions, e.g. long downloads or long VPN connections while working at home all day. It's very annoying. Since I was about to download a rather large set of files (the FC4 ISO images), it seemed like a good time to look for a fix.

I decided that the easiest possible fix would be to upgrade to the latest firmware. I downloaded rev. 1.67b44 from USR's 8054 support page I installed the new firmware via the 8054's web interface, and it looks like it went OK:



I assumed the old settings file wouldn't work and re-entered all the settings by hand. One interesting side effect of the upgrade is that I couldn't use my old SSID. The old SSID had two space characters in it, which the new firmware disallowed. I removed the spaces from the SSID and reset all the WiFi adapters in the house to use the new SSID.

Step 2: Deal with SpeakEasy
At my old home, I had a Comcast cable modem connection to the Internet. Everything was great. Then I moved. At the new place, I ordered Comcast Internet service again, but this time, I couldn't get an IP address. Their technicians and support people weren't very helpful, so I canceled the order.

I had heard good things about SpeakEasy DSL, so I decided to give them a try. The installation was a piece of cake.

One nice thing about SpeakEasy is that they encourage you to share your Internet connection with your neighbors. I had registered to be a provider (although I don't have any subscribers yet--if you are interested, subscribe here, using subscription code kasperowski). My subscribers need to know my SSID, so I logged in to my SpeakEasy NetShare account and changed the SSID.

The next thing I had to do was deal with one final installation issue. SpeakEasy's technical support staff informed me that I wasn't getting the full bandwidth that I ordered. I still haven't clarified whether I ordered 3 or 6 Mbps download bandwidth, but that's irrelevant because my actual download bandwidth was about 1750 kbps. (SpeakEasy has a nice test tool on their web site that you can use to measure the bandwidth you are getting.) As I was about to download some large files (the FC4 ISOs), it was time to take care of this. I called SpeakEasy and asked for help. Their technical support guy was very helpful. He ran some tests on my loop and noticed some line noise. He agreed that the bandwidth I was receiving was lower than I ordered, but explained that because my home is about 1300 feet from the central office, 1.5 Mbps is probably the best I can hope for. I agreed, and he downgraded my account so I won't have to pay as much.

Step 3: Download FC4
BitTorrent is the best way to download a Linux distribution, so I downloaded the FC4 torrent.



BitTorrent doesn't give you any improvement over a single-source download if you don't also act as a server, so I opened up the BitTorrent ports on the USR 8054. I think this was the right way to do it, and it seems to have worked:

I burned the ISOs to CDs.

Step 4: Install FC4
I installed FC4 on the laptop. I used all defaults except for what I mention below. There were a few glitches, which I will also discuss.

First, in the Installation Type screen, I chose Workstation and clicked Next.

In the Disk Partitioning Setup screen, I chose the default, Automatically partition, and clicked Next. In the next screen, Automatic Partitioning: I choose the default, Remove all Linux partitions on this system, and clicked Next. A window appeared, displaying the following text:

Warning
You have chosen to remove all Linux partitions (and ALL DATA on them) on the following drives:
/dev/sda
are you sure you want to do this?
Yes

I clicked Yes. Another window appeared, displaying this text:

Error Partitioning
Could not allocate requested partitions:
Partitioning failed: Could not allocate partitions as primary partitions.
OK

I clicked OK, and yet another window appeared:

Automatic Partitioning Errors
The following errors occurred with your partitioning:
You have not defined a root partition (/), which is required for installation of Fedora Core to continue.
This can happen if there is not enough space on your hard drive
(s) for the installation.
You can choose a different automatic partitioning option, or click 'Back' to select manual partitioning.
Press 'OK' to continue.
OK

I clicked OK and then I clicked Back.

Again in the Disk Partitioning Setup screen, I selected the default, Automatically partition and clicked Next.

In the Automatic Partitioning window, I selected Remove all partitions on this system and clicked Next.

In the Time Zone Selection screen, I selected System clock uses UTC and clicked Next

The Installing packages screen appeared, and a window appeared, displaying this less than wonderful text:

Error
Error informing the kernel about modifications to partition /dev/
sda2 - Device or resource busy. This means Linux won't know
about any changes you made to /dev/sda2 until you reboot - so
you shouldn't mount it or use it in any way before rebooting.
Ignore Cancel

I clicked Ignore, and another less than wonderful screen appeared:

Exception Occurred
An unhandled exception has occurred. This is most likely a bug. Please copy
the full text of this exception and file a detailed bug report against anaconda at
http://bugzilla.redhat.com/bugzilla/
Traceback (most recent call last):
File "/usr/lib/anaconda/gui.py", line 1137, in handleRenderCallback
self.currentWindow.renderCallback()
File "/usr/lib/anaconda/iw/progress_pui.py", line 244, in renderCallback
self.intf.icw.nextClicked()
File "/usr/lib/anaconda/pui.py", line 873, in nextClicked
self.dispatch.gotoNext()
File "/usr/lib/anaconda/dispatch.py", line 174, in gotoNext
self.moveStep()
File "/usr/lib/anaconda/dispatch.py", line 242, in moveStep
rc = apply(func, self.bindArgs(args))
File "/usr/lib/anaconda/packages.py", line 579, in turnOnFilesystems
diskset.savePartitions ()
File "/usr/lib/anaconda/partedUtils.py", line 726, in savePartitions
disk.commit()
error: Error: Error informing the kernel about modifications to partition /dev/sda2 - Device or resource busy. This means Linux won't know about any changes you made to /dev/sda2 until you reboot - so you shouldn't mount it or use it in any way before rebooting.
Debug OK

I clicked OK, and the GUI installer terminated. That screen displayed:

install exited abnormally

Damn. I pressed Ctrl-Alt-Del and tried again. This time, the install went smoothly. Instead of the error windows, I saw

Formatting / file system...

and the installation completed without a hitch.

Step 5: Boot and configure FC4
When you boot FC4 for the first time, a GUI appears, prompting you to configure the OS. For brevity, I will discuss only the items for which my choice was non-default or that produced interesting results.

In the License Agreement screen, I chose Yes, I agree to the License Agreement and clicked Next. (Not very interesting, but it's not the default.)

In the Date and Time screen, I clicked the Network Time Protocol tab and checked Enable Network Time Protocol. I clicked Next.

The Display screen appeared. According to Dell, the Latitude D610 has native screen resolution of 1400x1050 and 16.7M colors. For Unknown monitor with ATI Radeon Mobility M300, I clicked Configure.... In the Monitor window, I chose Dell 1400x1050 Laptop Display Panel and clicked OK. For Resolution, I chose 1400x1050. I clicked Next.

The Sound Card screen appeared, listing these tidbits:

Vendor: Intel
Model: Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller
Module: snd-intel8x0

I clicked Play test sound. I do have a slight hearing problem, but I don't think that was why the PC was silent. A window appeared, asking:

Did you hear the sample sound?
No Yes

I clicked No. Another window appeared:

Error
Automatic detection of the sound card did not work. Audio will
not be available on the system. Please click OK to continue.
OK

This is a work computer, so I guess that's OK for now. I clicked OK to exit the window, and Next> to move on.

Step 6: Log in and finish configuring
Dvorak key layout
About 15 years ago, I started using the Dvorak keyboard layout as part of an effort to decrease typing related stress on my hands. Configuring the keyboard on FC4 was too easy compared to my experience with other, older Linux distributions. To get a Dvorak key layout, select Desktop/Preferences/Keyboard. Click the Layouts tab. In the Keyboard Preferences window, click Add.... In the Choose A Layout window, select Dvorak. Click OK. In the Selecetd layouts: list, select Dvorak. Click Up. Click Close. Done!

Suspend/resume
This is a laptop. Suspend/resume is the normal use case. If I can't get suspend/resume to work, maybe I shouldn't be running Linux on it.

The easiest way to test whether suspend/resume works is to close the laptop's lid. I tried that, but nothing happened: the PC stayed powered on.

yum update sounds like a good idea, to make sure I have the latest kernel. The current kernel is 2.6.11-1.1369_FC4. yum update downloaded and installed a lot of stuff, including a new kernel. I rebooted, and the new kernel booted up: 2.6.14--1.1653_FC4.

With the new kernel and all the other updates, a battery status applet is running on the GUI panel. It look the update worked things out, and acpi is running: ps -ef | grep acp shows that /usr/sbin/acpid is running. This is good.

When I yum search acpi, one of the results is acpitool. It sounds useful, so I yum install acpitool.

acpitool -s suspended everything perfectly. Unfortunately, it didn't resume properly. Everything came up looking good, but the disk LED was lighted, and it seemed like any command that accessed the disk caused everything to freeze. Eventually, the GUI desktop froze. I tried to log in on a text console, but it froze after I type my user name and pressed Enter.

Time for a reboot. After it came up, I tried acpitool -S, but it didn't do anything.

I found some useful tips for the D600, which is only 10 less than the D610. I followed the instructions, except for acpid start, which failed. Instead, I rebooted.

While running on AC power, the screen lid button turns off the LCD. Releasing the screen lid button turns the LCD back on. This is a good start.

Touching the power button quickly shuts down and powers down. Touching the power button again powers up. OK again.

While running on battery power, the lid button suspends... But does it resume when I release the lid button? Nope: same old resume problem. This is disappointing.

I think I'm going to have to stop here and live with it as is. While on AC power, the lid button does what I want. The power button performs a clean shutdown. This is good enough for now.

Screensaver preferences
In Desktop/Preferences/Screensaver, I changed the setting to Lock Screen After 10 minutes. In the Advanced tab, I changed these settings: In the Display Power Management area, I chose Power Management Enabled, Standbay After 20 minutes, Suspend After 30 minutes, and Off After 40 minuts. Back in the Display Modes, I selected File/Restart Daemon.

More to do
This is good enough for today, but I have a few more things left to do:

- WiFi set up: The cabled Ethernet connection works fine, so I'll put this off. Quick HOWTO: Linux Wireless Networking looks like a good resource.

- VPN: To use this effectively while I'm not at the office, I will want a VPN or an SSH reverse tunnel. I prefer to use VPN.

- Pocket PC sync: I want to be free of windows on the desktop, but I like my Pocket PC. I want to keep the Pocket PC's meeting calendar synchronized with my work calendar.

- Audio: It would be nice to get audio working.

2005-12-22

Cycling Clothing

I have been cycling year round in the Boston area for quite a few years. It gets pretty cold in the winter. For a while, I kept a log of every ride, and some of the things I recorded in the log were the temperature and what I wore. The idea was that I could look at the temperature and forecast in the morning, look at the cycling log, and know exactly what to wear each day.

Here is a summary of the log, listing what I like to wear in each temperature range.

2005-12-17

The Spring Experience

Last week, I attended The Spring Experience in Miami. The event was a fantastic, in-depth introduction to the Spring Application Framework, a lightweight application framework that makes J2EE software development and deployment easier.

I won a pass to the show at a recent NEJUG meeting. Jay Zimmerman of No Fluff Just Stuff, which ran the show, donated the pass to the JUG. My employer, CentrePath, kindly paid my travel expenses.

The show was run by No Fluff Just Stuff. Based on my experience at this show, I would recommend that anyone who wants to spend a few days really learning technology should attend a No Fluff session.

Here are my fairly raw notes.

2005-12-07: Spring Experience day 1

Airport
My flight arrived at MIA a little early. The pilot announced that we would be delayed getting to the gate because of a "security incident." My phone rang--it was my wife calling to tell me about the a little problem that was currently being played out. Here's my own low quality photo, taken with my PDA from my seat on my plane as it drove by on the way to our new gate:


Dinner

  • SourceBeat.com-good Spring blogs
Keynote: Rod Johnson
  • Founder of Spring & Interface 21

  • Says lots of clients in banking, government, defense-thus it has been proven

  • Goal: simplify enterprise software development

  • Non-invasive framework

  • J2EE w-o EJB

  • 2.0M1 released

    • simpler more extensible XML config
      enhanced integration w- AspectJ

      • use AspectJ pointcut expression lang w- Spring AOP

    • CommonJ TimerManager for scheduled tasks

    • msg driven POJOs

    • et al

  • Things they got right

    • POJO model

    • simplify w-o sacrificing power

    • Apache license

  • Nice demo of XML code completion in Idea

  • Non-invasive POJO programming model-framework doesn't overtakn your app code-framework can change (eg Spring 2.0) but your code still works

  • Demo: JPetStore on Spring 2.0M1, w- no changes from app on prev Spring release

  • 2.0 final-March 2006

2005-12-08: Spring Experience day 2

Spring Fundamentals: Rod Johnson

  • Aims

    • POJOs

    • Enterprise services in a declarative, non-invasive way

    • eg: POJOs transactional w-out transactional APIs

  • POJO dev

    • not subject to unusual contracts, eg EJB 1 or 2 home inrerface, etc.

    • not bound to any environment

    • testable

  • Apply services to POJOs declaritively

    • decouple app from environment-enables reuse

  • Enabling tech

    • IoC/DI-inversion of control/dependency injecton

    • AOP

    • portable service abstractions

  • Lightweignt container

    • facilitates POJO-based app dev at all tiers

    • within any env

  • Sophisticated object factory

    • your biz obj's+config metadata+spring->fully config'd POJO

  • Enablers

    • component=POJO

    • testable in isolation

    • minimal depend's->easily mocked

  • Bene's

    • portability

    • leverage: decoupled from infrastructure

  • AOP

    • modularizes behavior that would otherwise be scattered over diff methods

  • Modules

    • Java/J2EE support lib's focused on ease of use, w-o sacrificing power

    • data access abstraction

    • transaction mgmt abstraction

    • remoting: RMI, IIOP, Axis, etc.

    • JMX support: expose any POJO for mgmt

    • JMS support: msg driven POJOs in 2.0

    • DI facilitates unit testing-org.springframework.test

    • MVC web framework

  • IOC/DI

  • Scoping

    • 2.0

    • per session, request, or arbitrary

    • testable because no need to access APIs, eg HTTPSession

    • ;

  • Scripting support

    • bean can be impl'd in script lang, eg Groovy

    • hot reload

  • AOP

  • Template pattern

    • Form of IoC

    • moves control into framework

    • solves common prob's: resource acq/release, exc translation, etc.

    • Avoids TCFTC: try/catch/finally{try/catch}

    • Common exception hierarchy-exceptions are non-checked, so code is easier to write

  • Work w- Spring

    • program to interfaces

    • focus on domain obj's

  • Avoid

    • pull configuration

    • Singleton pattern

    • dependence on Spring APIs

    • writing pointless code, eg JNDI lookups

  • J2EE != EJB

  • My Q: Is it aadvisable to use a traditional container such as JBoss? his A: Don't use JBoss for msg beans-use ActiveMQ

Real World JDBC w- Spring: Rod Johnson & Thomas Risberg
  • (see slides)

  • About using JDBC templates when OR mapping is too slow

  • RowMappper.mapRow()-a way to define how obj's are instantiated from ResultSets

  • LobHandler-portable Large Obj Binary stuff

  • Named parameters are much easier to read & maintain than ?s

Expert panel
  • Anemic domain obj's

    • not solved in 2.0 because it's hard to DI obj's that aren't instantiated by Spring, eg new or OR)

    • Aspects can help

  • Recommend not overusing annotations

    • keep config external

    • annotations force class-scope control; you lose instance-scope control

  • Rails

    • a lang

    • convention is more important than configuration

Test driven dev w- Spring and Hibernate: Matt Raible
  • Recommendation: start a blog, use Roller (Here it is, Matt!)

  • (See slides)

  • Selenium-a web app test tool that invokes and runs in your browser-thoughtworks.com

  • Hibernate: new users use XDoclet to gen .hbm.xml files

  • Dumbster-eg, fake SMTP server for unit tests

  • There's an Eclipse plugin that autogen's equals, hashcode, & toString

  • Use spring-mock

  • Use DBUnit to establish & reset data for unit tests

  • Use EasyMock

Enterprise app mght w- Spring: Rob Harrop
  • (see slides)

  • Java 5 VM param to start JMX: -Dcom.son.management.javaremote

  • Java 5 VM includes JConsole (J2SE 5.0 Monitoring & Management Console)

  • Use aspects to separate instrumentation from real code, then expose it through JMX

  • MC4J: an alternate open source mgmt console

  • Hibernate can be exposed as nice set of mgmt stuff

  • HP OpenView is a JMX client

  • Spring's Architecture-Juergen Hoeller

  • J2EE app framework

  • Not monolithic-loosely coupled subsystems

  • Or think of Spring as a library

  • Nature

    • Broad but thin

    • complementing prod's are specific and deep, eg OR tools, distributed transaction coordinators, web service engines, J2EE servers

  • Easier to update your app w- Spring as a llb, than to update your J2EE container, which is system software

Managing & monitoring Spring based apps: Dieter Dirkes
  • SpringStatelessSessionBeanFactory-to get SLSBs w-o, eg, JBoss

Metadata: Rod, Jourgen, Rob, Adrian
  • Use 1 Spring config file per module

  • FreeMarker: like JSP, but easier & better

  • Mesh is good for applying CSS

  • Recommend JAXB for XML->DB, with Java biz obj's as the translation layer

  • Clustering for scalability

    • Hibernate+

    • SFSBs don't scale well

    • SLSBs, MsgBeans scale well

    • use Cisco load balancer HW

  • Fortune 500 co's want to move away from big fat containers. Eg, BEA is supporting Spring because their big cust's demand lt.

  • If an annotation makes sense in the domain's context, it's OK. If it specifies some binding to a framework or environment, it's bad.

Why this conference is so great
  • I chatted w- Rod Johnson, inventor of Spring

  • I had lunch w- Craig Walls, author of Spring in Action

  • I met Mike Clark, potential employee (Mike, if you see this, look me up. I lost your email address.)

  • I drank beer with Chris Richardson, author of upcoming book POJOs in Action. He described a successful project w- goals similar to ours: gradually replace a prod's infrastructure w- Spring-based J2EE.

2005-12-09: Spring Experience day 3

Enterprise Integration: Using JMX and JCA: Juergen Hoeller

  • (see slides)

  • Use transactions to define delivery behavior. Eg, if send fails w-in transaction, transaction rolls back and acts as if transaction never occurred.

Service oriented Spring: Craig Walls
  • (see slides)

  • EAI=enterprise architecture integration

  • His demo uses Jencks as interface to ActiveMQ

  • Demo2 uses Lingo for true POJO msg queueing. Lingo: a way of exposing msg-based services as if they were local method calls. A CodeHaus project.

  • ESB=enterprise service bus

  • SEDA=staged event driven architecture, eg, there is a queue

  • JBI=Java Business Integration

  • BPEL="bee-pull"

  • PXE="pixie"

  • Craig: leaving his employer on Mon. Has telecom background. Looking for work?

  • Examples source code: www.habuma.com/SOS.zip

Breaks

The breaks were harsh. I got a chance to walk through the hotel's pool area to take a look at the pools I didn't have time to use (more low quality PDA camera shots):






Just past the pool area, I had the opportunity to enjoy the view of the beach I didn't have time to use:




Expert panel



Spring & web services: Alef Arendsen

  • (see slides)

  • Spring-WS looks like a valid way to do WS.

OR persistence: Jim Wall (Oracle/TopLink)
  • (see slides)

  • Not really Sprng-focused on EJB3

  • JPA=Java Persistence API, a JSR for POJO persistence

  • Dali: Eclipse plugin that helps you build OR mapping file

Dinner notes
  • Mraible@virtuas.com: free book after 6:00am tomorrow

Keynote: Adrian Colyer
  • Aspects define rules & policies

  • independent of the problem domain, so don't encode directly in domain model (separation of concerns)
  • Point cut=defines where the annotation applies

  • can be used to enforce code standards, eg only use Spring to access JDBC-desigh level assertions

  • (my example: add time measurement instrumentation to specified methods, or add temporary debug tracing)

  • (like advice in Lisp-Defadvice (but instead of hardcoded function name, jou define a pointcut)

  • Based on CLOS metadata

Case Study: French Tax Authority
  • (see slides)

  • Parameters

    • 34m tax payers, 3 yrs of history

    • 25k transactions/h

    • 25k digital sig's/h

    • 40k fiscal account consultations/h

    • <1s>

  • All FOS exept Oracle

    • JBoss-only for MDBs, which were used only for logging-wouldn't need JBoss at all now w- Spring msg POJOs

  • Problems and goals soond very similar to those of Mag

  • DBUnit-helps test w-o real DB back end (?)

  • ONE JVM-and all that performance & scalability

LinkWithin

Related Posts with Thumbnails