Archive for January 2nd, 2008
Using SSH to access your XO Laptop
[First published at The Wayward Word Press as Using SSH to access your XO Laptop on January 2, 2008.]
John Willis just posted the following comment to my post Putting your XO on the Web:
How were you able to ssh out of the box? Root has not password and the default settings for ssh are not to allow root access w/o a password. Also I could not find the documented password for the olpc account. I also found some hits that changing the olpc password might give the X application (sugar) some fits. If you want to read more on my first day expereinces please see…
I strongly suggest you view his post, for it has a charming picture of his two sons using an XO at a Starbucks. I bet some of their friends who got WII’s are going to turn “green” with envy pretty soon.
As for SSH access, it is important to keep in mind XO Axiom 1, The XO Laptop is a general-purpose Linux computer with builtin network access capabilities.
In particular, since the XO runs Linux, it supports the super-user, “root,” and root has the power to do anything. The default password d for root is nothing, you just press the ENTER key when asked to enter the password. This is a real security issue, and I will address it in a future post. If you are going to take the XO to a place where others might be able to access it, then you should first use “passwd” to set up a password for root.
Once you get in as root you can both change passwords and create new users. So if you don’t know the password for “olpc” then you can use “passwd” to define a new one.
I gained access to my XO using SSH by first creating a new user, “shields” while running the XO. Once I had done that I had no problem using SSH to gain access from my Linux box.
An XO Two-Pack Life Support System
Here is a picture of the two XO’s that I ordered so our family could donate them to the Sahana Project, as described in Two XO’s for XMAS for Sahana:

Greetings to Sahana from the Tuxers.
The Tuxers were quite comfortable in the cold weather here, but they are tough enough that I bet they could survive the much warmer climate in Sri Lanka. I know the XO certainly can.
By the way, if you have any doubts about the power of the XO then just imagine how many lives might have been saved if a few thousand XO’s with Sahana had been deployed in New Orleans before the arrival of Katrina …
Comparison of /bin and /usr/bin content for XO and Fedora Core
I just made a rough comparison of the content of the /bin and /usr/bin directories for the XO Laptop and Fedora Core (FC). The XO is based on FC, and since it is meant to take as little memory and disk space as possible to provide a useable environment, the XO is a stripped-down FC with the addition of new files needed just for the XO. For those not too familiar with Linux the /bin and /usr/bin directories list the standard programs, or executable files, that are available to every user.
The list is approximate, and I created it after noting that the XO has just over 700 files in /bin and /usr/bin while FC has almost 1700. My FC box has some files not found in standard FC such as Amarok (a music player), but I wasn’t trying for exactness but just a rough comparison. I created the listing below by using “ls” to list directory contents, sorting and grouping to create the following list. (I used “comm3″ to create the comparison list and then replaced tabs with asterisks.)
Each word is the name of an executable program:
- If there is no asterisk before the name then the program is ONLY in the XO
- If there is one asterisk before the name then the program is ONLY in FC
- If there are two asterisks before the name then the program is in both the XO and FC
Some entries are as expected. for example, “tar” is listed as “**tar,” and “python” as “**python,” meaning both are found in FC and the XO. Some are found only in FC. For example, “gcc,” the C compiler, is listed as “*gcc, ” meaning it is found only in FC; this is no surprise as the application programs for the XO are written in Python and not C. There are some surprises; for example, the XO doesn’t have perl, gvim or ed (all are listed with just one asterisk). Entries with no asterisks are unique to the XO, as shown by the number of entries that start with “sugar.” Some entries serve as reminders that the XO does things differently. For example, it doesn’t have firefox as a browser (it is listed with just one asterisk).
There are some surprising omissions. Though I haven’t made a complete list, just the absence of “diff,” the basic file comparison program, is cause for concern. This suggests that some enterprising and helpful group of programmers will create a supplementary collection of useful packages that the OLPC folks forgot to include, at least from a developer’s perspective.
*a2p *ab *abiword *AbiWord-2.4 *ac **aconnect *acpi_listen *activation-client *addftinfo **addr2line
*afs5log *alacarte **alsacard **alsamixer **alsaunmute *amarok *amarokapp *amarokcollectionscanner
*amarok_daapserver.rb *amarok_proxy.rb **amidi **amixer *amuFormat.sh *anthy-agent *anthy-dic-tool
*anthy-morphological-analyzer **aplay **aplaymidi *appletproxy *apropos **ar **arch **arecord
**arecordmidi *artscat *artsd *artsdsp *artsmessage *artsplay *artsrec *artsshell *artswrapper **as
*ascii-xfr **aseqdump **aseqnet **aserver **aspell *aspell-import *at *atq *atrm *attr *auconvert
*auctl *audemo *audial *audit2allow *audit2why *auedit *auinfo *aupanel *auphone *auplay *aurecord
*auscope *auth-agent *authconfig *authconfig-gtk *authconfig-tui *autool *autovbox *auwave
avahi-browse avahi-browse-domains avahi-discover avahi-publish avahi-publish-address
avahi-publish-service avahi-resolve avahi-resolve-address avahi-resolve-host-name
avahi-set-host-name *avivotool **awk *b43-fwcutter *baobab **base64 **basename **bash **bashbug-32
*batch *bc *bcm43xx-fwcutter *bdftopcf *bdftops *bdftruncate *blackjack *bluetooth-applet
*bluetooth-properties **bmp2tiff *bonobo-activation-run-query *bonobo-slay bssh *bug-buddy **bunzip2
bvnc **bzcat **bzcmp **bzdiff **bzgrep **bzip2 **bzip2recover **bzless **bzmore *c2ph *c89 *c99
**cal *cancel *cancel.cups *capifax *capifaxrcvd *capiinfo **captoinfo **cat **catchsegv *cc
*cdda2mp3 *cdda2ogg *cdda2wav **cdda-player *cddb-slave2-properties **cd-drive **cd-info *cdparanoia
**cd-paranoia *cdrdao **cd-read *cdrecord *certmgr **c++filt **chacl **chage *charmap **chattr
*chcat **chcon *checkisomd5 *checkmail *checkmodule *checkpolicy **chfn **chgrp *chktrust **chmod
**chown **chrt **chsh **chvt *ciptool *cisco-decrypt **cjpeg **ck-list-sessions **cksum
*ck-xinit-session **clear *cmp *codeina **col **colcrt **colrm **column **comm *compiz
**consolehelper *consolehelper-gtk **cp **cpio **cpp *cpufreq-selector *create-branching-keyboard
**crontab cs csb64enc csound **csplit **csslint-0.6 *cue2toc *cupsdconf *cupsdoprint *cupstestdsc
*cupstestppd **curl **cut cvanal **cvt **cytune datastore-service **date *dateconfig dbench
**dbus-binding-tool **dbus-cleanup-sockets **dbus-daemon **dbus-launch **dbus-monitor **dbus-send
**dbus-uuidgen *dc *dcop *dcopclient *dcopfind *dcopobject *dcopquit *dcopref *dcopserver
*dcopserver_shutdown *dcopstart **dd **ddate *ddcmon **deallocvt *decode-dimms.pl *decode-edid.pl
*decode-vaio.pl *decode-xeon.pl *dellWirelessCtl *desktop-effects *desktop-file-install
*desktop-file-validate *devdump **df *dfubabel *dfutool *diff *diff3 *diffpp *dig **dir **dircolors
**dirname *dirsplit *disco **djpeg **dmesg dnoise **dnsdomainname **doexec **domainname *dos2unix
*dprofpp *drkonqi **du *dumphint **dumpiso **dumpkeys *dund **dvcont *dvd-ram-control *dvdrecord
*dvd+rw-booktype *dvd+rw-format *dvd+rw-mediainfo *dvipdf easy_install easy_install-2.5 **echo *ed
**egrep **eject *ekiga *ekiga-config-tool **enchant **enchant-lsmod *enscript **env envext envsubst
*eog *eps2eps *eqn *eqn2graph *erb *escputil *esd *esdcompat espeak etoys *evim *evince
*evince-thumbnailer *evolution **ex *execstack **expand **expr *extensionproxy extract extractor
f2py f2py.numpy **factor **faillog **false **fax2ps **fax2tiff **fc-cache **fc-cat **fc-list
**fc-match **fdformat *festival *festival_client *festival_server *festival_server_control
*festival-synthesis-driver *fftwf-wisdom *fftwl-wisdom *fftw-wisdom *fftw-wisdom-to-conf **fgconsole
**fgrep **file *file-roller *filesharelist *fileshareset **find *find2perl *finger *firefox
*fixmswrd.pl **flac **flock **floppy **fmt **fold *font2c *fonttosfnt *foomatic-combo-xml
*foomatic-compiledb *foomatic-configure *foomatic-datafile *foomatic-gswrapper *foomatic-perl-data
*foomatic-ppdfile *foomatic-ppd-options *foomatic-printjob *foomatic-rip *foomatic-searchprinter
*formail **free **fribidi *f-spot *f-spot-import *f-spot-sqlite-upgrade *ftp **funzip *fusermount
*gacutil *gaim **gawk *gcalctool *gcc **gconf-merge-tree *gconfsharp2-schemagen **gconftool-2
**gcore *gcov *gda-author-dict-file-3.0 *gda-config-tool-3.0 *gda-diagnose-3.0
*gda-inspect-dict-file-3.0 *gda-list-config-3.0 *gda-report-test-3.0 *gda-run-3.0
*gda-test-connection-3.0 **gdb **gdbserver **gdbtui **gdk-pixbuf-query-loaders-32
*gdm-dmx-reconnect-proxy *gdmdynamic *gdmflexiserver *gdmphotosetup *gdmsetup *gdmthemetester
*gdmXnest *gdmXnestchooser *geany *gedit **gencat **gendiff *genisoimage *genkdmconf *geqn **getconf
**getent **getfacl *getfattr *gethostip **getkeycodes **getopt *getproxy gettext gettext.sh *gex
*gfloppy *ghostscript **gif2tiff *gimp *gimp-2.4 *gimp-console *gimp-console-2.4 *gimp-remote
*gimp-remote-2.4 *gimptool *gimptool-2.0 *gindxbib *gkbd-indicator-plugins-capplet *glchess *glines
*glookbib *glxgears *glxinfo *gmcs *gmime-uudecode *gmime-uuencode gnash *gnect *gneqn *gnibbles
*gnobots2 *gnokii *gnome-about *gnome-about-me *gnome-accessibility-keyboard-properties
*gnome-appearance-properties *gnome-at-mobility *gnome-at-properties *gnome-at-visual
*gnome-audio-profiles-properties *gnome-blog-poster *gnome-brightness-applet *gnome-calculator
*gnome-cd *gnome-character-map *gnome-control-center *gnome-database-properties-3.0
*gnome-db-browser *gnome-db-demo *gnome-default-applications-properties *gnome-desktop-item-edit
*gnome-dictionary *gnome-display-properties *gnome-eject *gnome-falling-blocks
*gnome-file-share-properties *gnome-font-viewer *gnome-help *gnome-inhibit-applet
*gnome-keybinding-properties *gnome-keyboard-properties *gnome-keyring-daemon *gnome-mount
*gnome-mouse-properties *gnome-network-preferences *gnome-obex-send *gnome-obex-server *gnome-open
*gnome-panel *gnome-panel-screenshot *gnome-phone-manager *gnome-pilot-make-password
*gnome-power-bugreport.sh *gnome-power-cmd.sh *gnome-power-manager *gnome-power-preferences
*gnome-power-statistics *gnome-screensaver *gnome-screensaver-command *gnome-screensaver-preferences
*gnome-screenshot *gnome-search-tool *gnome-session *gnome-session-properties *gnome-session-remove
*gnome-session-save *gnome-sound-properties *gnome-sudoku *gnome-system-log *gnome-system-monitor
*gnome-terminal *gnome-text-editor *gnome-theme-thumbnailer *gnome-thumbnail-font
*gnome-typing-monitor *gnome-umount **gnomevfs-cat **gnomevfs-copy **gnomevfs-df **gnomevfs-info
**gnomevfs-ls **gnomevfs-mkdir **gnomevfs-monitor **gnomevfs-mv **gnomevfs-rm *gnome-volume-control
*gnome-volume-manager *gnome-volume-properties *gnome-window-properties *gnome-wm *gnomine
*gnotravex *gnotski *gnroff *gnuchess *gnumeric *gnumeric-1.6.3 *gok gparser *gparted **gpasswd *gpg
**gpg-error *gpgsplit *gpgv *gpg-zip *gphoto2 *gpic *gpilotd-control-applet *gpilotd-session-wrapper
*gpilot-install-file *gpm-root gprocessor **gprof *grammar-parse *grefer **grep *grn *grodvi *groff
*groffer *grolbp *grolj4 *grops *grotty **groups *growisofs *gs *gsbj *gsdj *gsdj500
**gsf-office-thumbnailer *gslj *gslp *gsnd *gsoelim **gstack **gst-feedback **gst-feedback-0.10
**gst-inspect **gst-inspect-0.10 **gst-launch **gst-launch-0.10 *gstreamer-properties **gst-typefind
**gst-typefind-0.10 *gst-visualise-0.10 **gst-xmlinspect **gst-xmlinspect-0.10 **gst-xmllaunch
**gst-xmllaunch-0.10 *gtali **gtar *gtbl **gtf *gthumb *gthumb-import gtk-demo gtk-gnash
**gtk-query-immodules-2.0-32 **gtk-update-icon-cache *gtk-window-decorator *gtroff *gucharmap *guile
*guile-tools **gunzip *gview *gvim *gvimdiff **gzexe **gzip *h2ph **hal-device **hal-disable-polling
**hal-find-by-capability **hal-find-by-property **hal-get-property **hal-is-caller-locked-out
*hal-is-caller-privileged **hal-lock **hal-set-property *hal-setup-keymap **halt *hcitool **head
het_export het_import hetro **hexdump *hidd *hltest *host **hostid **hostname *hoststat *hpftodit
*htdb_dump *htdb_load *htdbm *htdb_stat *htdig *htdigest *htdump *HtFileType *htfuzzy *htload
*htmerge *htnotify *htpasswd *htpurge *htsearch *htstat *httpcfg *i386 *i386-redhat-linux-gcc *iagno
*icc2ps *icclink *icctrans **iceauth *icedax **iconv **id *idle **idn **iecset *ifpline **igawk
*ijsgutenprint.5.0 *imagetops *im-chooser *implantisomd5 *indxbib **info **infocmp **infokey
**infotocap **install *installvst *invest-chart **ionice **ipcalc **ipcrm **ipcs *iptc ipython
*ircat *irexec *irkbd *irman2lirc *irpsion5 *irpty *irrecord *irsend irunner *irw *irxevent
*isdnbill *isdnconf *isdnrate *isdnrep *isodebug *isodump *isoinfo **iso-info **iso-read **isosize
*isovfy **ispell *issndfile *jack_bufsize *jackd *jack_freewheel *jack_load *jack_unload **join
*jpegicc **jpegtran *jsattach *jscal *jstest *jwhois *kab2kabc *kaccess *kaddprinterwizard
*kapplymousetheme *kasbar *kasumi *kate **kbd_mode **kbdrate *kblankscrn.kss *kbookmarkmerger
*kbuildsycoca *kcheckpass *kcheckrunning *kcminit *kcminit_startup *kcmshell *kconf_update *kcontrol
*kcontroledit *kcookiejar *kdcop *kdebugdialog *kde-config *kded *kdeeject *kdeinit
*kdeinit_shutdown *kdeinit_wrapper *kdeinstallktheme *kde-menu *kdepasswd *kdeprintfax *kdesktop
*kdesktop_lock *kdesu *kdesud *kdesu_stub *kdetv *kdetvv4lsetup *kdialog *kdm *kdm_config *kdmctl
*kdm_greet *kdontchangethehostname *kdostartupconfig *keditbookmarks *keditfiletype *kfile *kfind
*kfmclient *kfmexec *kfontinst *kfontview *kgrantpty *khc_docbookdig.pl *khc_htdig.pl
*khc_htsearch.pl *khc_indexbuilder *khc_mansearch.pl *khelpcenter *khotkeys *khotnewstuff *kicker
**kill **killall *kinfocenter *kinstalltheme *kioexec *kio_http_cache_cleaner *kio_media_mounthelper
*kioslave *kio_system_documenthelper *kio_uiserver *kjobviewer *klauncher *klipper
*klocaldomainurifilterhelper *kmailservice *kmenuedit *knetattach *kompmgr *konqueror *konsole
*kpac_dhcp_helper *kpm *kprinter *krandom.kss *krandrtray *krb5-auth-dialog *krdb *kreadconfig
*krootimage *ksendbugmail *ksflatten *kshell *ksmserver *ksplash *ksplashsimple *kstart
*kstartupconfig *ksvalidator *ksysguard *ksysguardd *ksystraycmd *ktelnetservice *ktradertest
*ktrash *kwebdesktop *kwin *kwin_killer_helper *kwin_rules_dialog *kwrapper *kwrite *kwriteconfig
*kxkb *l2ping *l2test **last **lastb *lastcomm **lastlog **lchfn **lchsh **ld **ldd **lddlibc4
**less **lessecho **lesskey **lesspipe.sh *lftp *lftpget *libwmf-fontmap **link *linux32 *linux64
*lircrcd *liveinst *lkbib **ln *lnusertemp **loadkeys **loadunimap **locale **localedef *locate
*lockfile **logger **login **logname *logresolve **look *lookbib *lp lpanal lpc_export lpc_import
*lp.cups *lpoptions *lppasswd *lpq *lpq.cups *lpr *lpr.cups *lprm *lprm.cups *lprsetup.sh *lpstat
*lpstat.cups **ls **lsattr **lshal *lspgpot *lss16toppm ltrace **luit *lz *m17n-db *m4 *mac2unix
*magicdev *magnifier *mahjongg *mail *Mail *mailq *mailq.sendmail *mailsettings *mailstat makecsd
*make_driver_db_cups *make_driver_db_lpr *makemap *man *man2html *manpath **mapscrn matchbox-remote
matchbox-window-manager *mathmlsvg *mattrib *mbadblocks *mbchk *mcat *mcd *mcheck *mclasserase
*mcomp **mcookie *mcopy *mcs **md5sum *mdel *mdeltree *mdir *mdu *meinproc *memhog **mesg *metacity
*metacity-message **metaflac *mev *mformat *migratepages *minfo *minicom *minidump_dump
*minidump_stackwalk *mini-wm mixer *mkafmmap *mkbundle2 **mkdir **mkfifo *mkfontdir *mkfontscale
*mkhybrid *mkisofs *mkmanifest **mknod **mkrfc2734 **mktemp **mkxauth *mlabel **mmc-tool *mmd
*mmount *mmove *mode2 *modulator *mono *mono-api-diff *mono-api-info *mono-api-info2 *monodir
*monolinker **more **mount **mountpoint *mouse-test *mozilla-plugin-config *mozroots *mp4art
*mp4dump *mp4extract *mp4info *mp4tags *mp4trackdump *mpartition *mrd *mren msgattrib msgcat msgcmp
msgcomm msgconv msgen msgexec msgfilter msgfmt *msgfmt.py msggrep msghack msginit msgmerge msgunfmt
msguniq *mshowfat *mtools *mtoolstest *mtype **mv *mxtar *my-default-printer *mzip **namei **nano
*nasd *nautilus *nautilus-cd-burner *nautilus-connect-server *nautilus-file-management-properties
*nautilus-sendto *nc *neat *neat-control *nenscript *neqn **netstat *newaliases *newaliases.sendmail
**newgrp ngettext **nice **nisdomainname **nl **nm *nm-applet *nm-connection-editor
*nm-openvpn-service *nm-openvpn-service-openvpn-helper **nm-tool *nm-vpnc-service
*nm-vpnc-service-vpnc-helper *nm-vpn-properties **nohup *notify-send *nroff *nslookup *nspluginscan
*nspluginviewer *nsupdate *ntfs-3g *ntfscat *ntfscluster *ntfscmp *ntfsdecrypt *ntfsdump_logfile
*ntfsfix *ntfsinfo *ntfsls *ntfsmftalloc *ntfsmount *ntfsmove *ntfstruncate *ntfswipe **ntpstat
*numactl *numademo *numastat **objcopy **objdump **oclock **od *oldrdist olpc-hardware-manager
olpc-logbat olpc-netlog olpc-netstatus olpc-session omshell **on_ac_power **open **openssl **openvt
*orca *over *pacat *pacmd *pactl *padsp **pal2rgb *pam-panel-icon *pand **panelctl
*panel-test-applets **pango-querymodules-32 *paplay *paps *parec *passkey-agent **passwd **paste
*pasuspender **pathchk *pavucontrol *pax11publish **pcregrep **pcretest *pdf2dsc *pdf2ps *pdfopt
*peekfd *perl *perl5.8.8 *perlbug *perldoc *pf2afm *pfbtopfa *pfbtops *pftp **pgawk **pgrep *pic
*pic2graph *piconv *pidgin *pilot-650foto *pilot-addresses *pilot-clip *pilot-csd *pilot-debugsh
*pilot-dedupe *pilot-dlpsh *pilot-file *pilot-foto *pilot-getram *pilot-getrom *pilot-getromtoken
*pilot-hinotes *pilot-ietf2datebook *pilot-install-datebook *pilot-install-expenses
*pilot-install-hinote *pilot-install-memo *pilot-install-netsync *pilot-install-todo
*pilot-install-todos *pilot-install-user *pilot-memos *pilot-nredir *pilot-read-expenses
*pilot-read-ical *pilot-read-notepad *pilot-read-palmpix *pilot-read-screenshot *pilot-read-todos
*pilot-read-veo *pilot-reminders *pilot-schlep *pilot-sync-plan *pilot-treofoto *pilot-undelete
*pilot-wav *pilot-xfer **ping **ping6 **pinky *pirut *pitchplay *pkcs11_eventmgr *pkcs11_inspect
*pkcs11_setup **pkg-config **pkill *pklogin_finder *pl2pm *playbucket playmus playwave **pmap
**pm-hibernate **pm-is-supported **pm-powersave **pm-restart **pm-shutdown **pm-suspend *pod2html
*pod2latex *pod2man *pod2text *pod2usage *podchecker *podselect *polkit-config-file-validate
*polkit-grant *polkit-list-actions *polkit-policy-file-validate *post-grohtml **poweroff **ppm2tiff
*ppmtolss16 **pr **precat *pre-grohtml *preparetips **preunzip **prezip **prezip-bin *printafm
**printenv **printf *procmail *protoize **ps *ps2ascii *ps2epsi *ps2pdf *ps2pdf12 *ps2pdf13
*ps2pdf14 *ps2pdfwr *ps2ps *ps2ps2 *psed **psfaddtable **psfgettable **psfstriptable **psfxtable
**pstree **pstree.x11 *pstruct **ptx *puid *pulseaudio *pup *puplet *purgestat
*purple-client-example *purple-remote *purple-send *purple-send-async *purple-url-handler pvanal
pv_export pv_import pvlook *pv.sh **pwd **pwdx pycolor **pydoc *pygettext.py **pygtk-demo *pynche
**python **python2 **python2.5 **python2.5-config **python-config *quota **ranlib *rarian-example
*rarian-sk-config *rarian-sk-extract *rarian-sk-gen-uuid *rarian-sk-get-cl
*rarian-sk-get-content-list *rarian-sk-get-extended-content-list *rarian-sk-get-scripts
*rarian-sk-install *rarian-sk-migrate *rarian-sk-preinstall *rarian-sk-rebuild *rarian-sk-update
**ras2tiff **raw2tiff **rb *rcp *rctest *rdate rdesktop *rdist *rdistd **rdjpgcom *readcd **readelf
**readlink *readmult *readom **reboot recode-sr-latin *red *refer **rename **renice **reset **resize
**resizecons **rev *rexec *rfcomm **rgb2ycbcr *rhgb **rhgb-client *rhythmbox *rhythmbox-client
*rlogin **rm *rmail *rmail.sendmail **rmdir *rmdtovbox **rnano *rngtest **rpcgen **rpm **rpm2cpio
**rpmdb **rpmquery **rpmsign **rpmverify *rsh **rsvg **rsvg-convert **rsvg-view **rsync *ruby
**runcon *rundig *run-gparted **run-parts *runscript **run-with-aspell **rvi **rview **rx **rz *s2p
*same-gnome *saytime **sb scale *scim *scim-bridge *scim-config-agent *scim-restart *scim-setup scot
**scp **script *scrollkeeper-config *scrollkeeper-extract *scrollkeeper-gen-seriesid
*scrollkeeper-get-cl *scrollkeeper-get-content-list *scrollkeeper-get-extended-content-list
*scrollkeeper-get-index-from-docpath *scrollkeeper-get-toc-from-docpath
*scrollkeeper-get-toc-from-id *scrollkeeper-install *scrollkeeper-preinstall *scrollkeeper-rebuilddb
*scrollkeeper-uninstall *scrollkeeper-update scsort *sdiff *sdptool *sealert *secon **sed
*selinux-polgengui *semodule_deps *semodule_expand *semodule_link *semodule_package **sendiso
*sendsms *sensors *sepolgen-ifgen **seq *serviceconf **sessreg *setarch **setfacl *setfattr
**setfont **setkeycodes **setleds **setmetamode *setreg *setserial **setsid **setterm *setup
**setxkbmap *sfconvert *sfinfo **sftp **sg **sh **sha1sum **sha224sum **sha256sum **sha384sum
**sha512sum **showconsolefont showimage **showkey **showrgb **shred **shuf **size **skill **slabtop
**sleep *sliceprint **slogin *smcs *smoltDeleteProfile *smoltSendProfile *smtpd.py *sn
**sndfile-convert **sndfile-info **sndfile-play **sndfile-regtest *sndfile-resample sndinfo **snice
*soapsuds *soelim *sol **sort *sound-juicer *soundtoh **speaker-test **speexdec **speexenc **spell
*splain **split **sprof **sqlite3 *sqlsharp squeak srconv *ssconvert **ssh **ssh-add **ssh-agent
**ssh-copy-id **ssh-keygen **ssh-keyscan *ssindex *startkde *start_kdeinit *start_kdeinit_wrapper
**startx **stat *states strace **strings **strip **stty **su *sudo *sudoedit sugar sugar-activity
sugar-backup sugar-control-panel sugar-emulator sugar-install-bundle sugar-launch
sugar-presence-service sugar-shell sugar-shell-service **sum **sx *symlinks **sync *synclient
*syndaemon *syslinux *system-cdinstall-helper *system-config-authentication *system-config-boot
*system-config-date *system-config-display *system-config-firewall *system-config-firewall-tui
*system-config-keyboard *system-config-language *system-config-lvm *system-config-network
*system-config-network-cmd *system-config-printer *system-config-printer-applet
*system-config-rootpassword *system-config-securitylevel *system-config-selinux
*system-config-services *system-config-soundcard *system-config-time *system-config-users
*system-control-network *system-install-packages **sz **tac **tail **tailf *talk **tar **taskset
tbench tbench_srv *tbl *tclsh *tclsh8.4 **tee *telnet **test **testlibraw *testrb *test-speech
*text2wave *tfmtodit *tgz *themus-theme-applier **thumbnail **tic **tiff2bw **tiff2pdf **tiff2ps
**tiff2rgba **tiffcmp **tiffcp *tiffdiff **tiffdither **tiffdump *tifficc **tiffinfo **tiffmedian
**tiffset **tiffsplit *time **tload *toc2cddb *toc2cue **toe *tomboy *tomboy-panel **top **totem
**totem-video-indexer **totem-video-thumbnailer **touch **tput **tr **tracepath **tracepath6
*traceroute *traceroute6 *tracert *transmission *transmission-cli *transmission-daemon
*transmission-proxy *transmission-remote **tree *troff **true **tset **tsort *ttmkfdir **tty **twm
**tzselect *ucs2any **udevinfo **udevtest **ul *ulockmgr_server **umount **uname **unexpand
**unicode_start **unicode_stop **uniq *unix2dos *unix-lpr.sh **unlink *unprotoize **unzip **unzipsfx
*updatedb *update-desktop-database **update-gdk-pixbuf-loaders **update-gtk-immodules
**update-mime-database **uptime **urlgrabber *userformat *userinfo *usermount *userpasswd **users
**usleep **utmpdump **uuidgen **uxterm *uz *vbox *vboxbeep *vboxcnvt *vboxctrl *vboxmail *vboxmode
*vboxplay *vboxtoau **vdir **vi **view *vimx **vmstat vncviewer **volname **w *wacdump **wall
**watch *wavpack **wc *wftopfa wget *whatis **whereis **which *whiptail **who **whoami *whois *wish
*wish8.4 *wmf2eps *wmf2fig *wmf2gd *wmf2svg *wmf2x *wodim **word-list-compress **write **wrjpgcom
*wsdl *wsdl2 *wtpt wvAbw wvCleanLatex wvConvert *wvdial *wvdialconf wvDocBook wvDVI *wvgain wvHtml
wvLatex wvMime wvPDF wvPS wvRTF wvSummary wvText *wvunpack wvVersion wvWare wvWml **X **x11perf
**x11perfcomp **xargs **xauth **xbiff **xclipboard **xclock **xcmsdb **xconsole **xcursorgen
**xcutsel *xdg-desktop-icon *xdg-desktop-menu *xdg-email *xdg-icon-resource *xdg-mime *xdg-open
*xdg-screensaver *xdg-user-dir *xdg-user-dirs-gtk-update *xdg-user-dirs-update *xdm *xdmshell **xdpr
**xdpyinfo *xdriinfo **xev **xeyes **xfd **xfontsel **xgamma xgettext **xhost *xidump **xinit
**xkbbell **xkbcomp **xkbevd **xkbprint **xkbvleds **xkbwatch **xkill **xload **xlogo **xlsatoms
**xlsclients **xlsfonts **xmag **xmessage *xminicom **xmlcatalog **xmllint *xmlproc_parse
*xmlproc_val **xmlwf *xmode2 **xmodmap **Xorg **xorg-x11-filesystem-upgrade **xpr **xprop **xrandr
**xrdb **xrefresh *xsd **xset **xsetmode **xsetpointer **xsetroot *xsetwacom *xsltproc **xstdcmap
*xsubpp **xterm **xtrapchar **xtrapin **xtrapinfo **xtrapout **xtrapproto **xtrapreset **xtrapstats
xulrunner **xvidtune **xvinfo **xwd **xwininfo **xwud *xxd *yelp **yes *ypcat *ypchfn *ypchsh
**ypdomainname *ypmatch *yppasswd *ypwhich **yum **zcat **zcmp **zdiff **zegrep *zenity **zfgrep
**zforce **zgrep *zip *zipcloak **zipgrep **zipinfo *zipnote *zipsplit **zless **zmore **znew
*zsoelim *zvbi-chains *zvbi-ntsc-cc
Putting your XO on the Web
Here is a picture I took as a test of my wireless connectivity, using the XO to access my blog:
I’m finally finding some time to work with my XO. I have already demonstrated it to a few people, and all have been quite drawn to it, especially those with some expertise in computers. However, I have found a few rough edges, especially when I thought about not just using the XO to run some code, but in having to use the XO to write the code itself.
I thus spent a few hours earlier today trying to make the XO more fun to use, since I think it quite important to always have fun when working with the XO.
The XO keyboard is quite small. It is meant for use by children, not adults. I also recall reading this was done in part to make the XO less likely to be stolen, since adults would find it harder to use. In any event, it is possible to use a USB keyboard with an XO; for example, I use a Kingston K64365, the keyboard used by most of my family members (it is more compact than that standard WinTel monstrosity, though still much larger than the XO keyboard.)
I also wanted web access for my XO. The XO doesn’t come with a port for hard-wired ethernet access. I recall seeing mention on the XO wiki that this was done by design, as wireless is much more common in the less-developed parts of the globe where most XO’s are to be used.
I have used a Linksys WRT54GL router for some time. It is very reliable and is not expensive. Moreover, it can run a variant of Linux created for just this purpose, OpenWRT. I run WHITE RUSSIAN (RC5). It uses a nice browser-based interface to control the router.
I had configured the router to use WEP encryption within our house. But, mostly just for the fun of it, I decided to open up the router for use by the XO by disabling WEP. That worked fine, though I did notice that in order to access the network I needed to open up the neighborhood (The third button from left on top row, it also corresponds to F1) and click on the icon that corresponded to my wireless network. I then enabled MAC filtering to prevent unauthorized use, though I live on the edge of the woods, and last I heard the nearby dear weren’t big on computing, being too busy spending most of their waking hours eating my shrubbery.
I then remembered that the XO is just a Linux box, so I configured the the router to assign the XO a fixed IP address. I then confirmed that I could get into the XO using SSH. Of course I could, for I know Linux. The XO knows it, too.
See also Using SSH to access your XO Laptop for some additional guidance on using SSH to access your XO.
I then checked to see if the XO was running Apache, and found that it wasn’t.
I decided that was enough for a first go. I hade made the XO more fun to use, and had some fun doing that. I also had to take some time to write about my experiences so I could share them with you.
XO Axiom #3: Open-source is all about fun.
This further continues a series on what I take to be axioms, or self-evident truths, when it comes to using and learning about the XO Laptop. The first two axioms can be found at XO Axiom #1: The XO Laptop is a general-purpose Linux computer with builtin network access capabilities, and XO Axiom #2: Open-source is the scientific model applied to programming.
Axiom #3 follows from my earlier post, Samuel Butler: All of the Animals Excepting Man Know That The Principle Business of Life is to Enjoy It:
XO Axiom #3
Open-source is all about fun.
From this follows the following theorem:
If you aren’t having fun when working with an XO then something is wrong and you should fix it.
Proof (informal):
- Assume you are working on how to use an XO laptop, or writing about your experiences.
- By Axiom #1, the XO is based on Linux and other open-source software packages.
- By Axiom #3, you are working with open-source, and so must be having fun.
- If you aren’t having fun then you are violating Axiom #3.
- This is contradictory, so resolve the contradiction.
A consequence, at least to this writer, is that I will go about it at my own pace, trying to have as much fun along the way as possible, though I will try as best as I can to make it fun for you, too.
Axiom #3 is just one way of saying I am writing this blog because I want to. I do it as a volunteer effort, on my own time and my own dime. I want it to be fun.
I also need it to be fun. It it doesn’t become fun then I am going to stop doing it. For example, I’ve been going to a gym regularly for over ten years now, and I go almost every day. Not every minute is fun, but I make it a point to have enough fun each day so I will come back on the next. If I don’t feel good, or a muscle aches a bit too much, or it seems harder to get going than usual, then I don’t worry or fret. I just back off a bit, and quit early if I have too, as it is much better to quit early on the occasional day than to make it such a chore that I wind up quitting it altogether.
I used to play a lot of golf. Golf is among the most challenging of games. Not only is the golf stroke a quite artificial movement, it is a movement that is hard to repeat. As a result, every golf round I have played begins in a burst of optimism that extends till my swing reaches the apex of the arc at the first tee, and then the rest of the round that becomes a test of characte commences as I start to bring the club down, and almost always fail to hit the ball in a true manner.
However, the occasional good shot brings great satisfaction. And even if it isn’t that great a shot, I make sure that at least enough good shots occur each round that I will come back to play another.
The occasional nice fragment of code in Python can also bring satisfaction, as I will try to demonstrate in some future posts.
XO Axiom #2: Open-source is the scientific model applied to programming
We continue our series on what I take to be axioms, or self-evident truths, when it comes to using and learning about the XO Laptop. The first axiom can be found at XO Axiom #1: The XO Laptop is a general-purpose Linux computer with builtin network access capabilities.
Linux is an example of what is called “open-source” or “free software.” This is software that can be had at no cost, which to many people suggests that it is of little value. Though this is indeed the case from time to time, there is a large body of quite exceptional software that is both freely available yet has a high value. The XO Laptop is built entirely of such software, so let me share my own short definition.
Many people have attempted to define just what “open-source” and the related concept of “free software” mean. Much of this writing is quite muddled, especially by those folks who think that programming is not just a specialized form of writing, but is somehow something much more. A good example of such muddled writing can be found in Wikipedia’s effort, Open source.
My own experience, based on almost a decade both writing open-source software and providing education about it to others, is that the best working definition is to simply think of open-source as the application of the scientific model to the art and science of programming.
When you see a project humming along then if you dig into it you will most likely find that everything is being done as if were a joint scientific research effort, with open collaboration, peer review, open publication, no artificial authority, and so forth.
On the other hand, when you hear reports that something is not going well, or someone takes an action that you can’t quite figure out, then if you dig into it will you probably find evidence of behavior that is not consistent with the scientific model. For example, I recently wrote a series of posts about a something that was not going well. I wrote them not because I had any special interest or stake in the project, but just as an example of how things can go wrong. You can find them beginning at OpenDS: On Being Bitten By The Hand That Once Fed You; there are four posts, and each links to its successor. I expect that if you read them all you will agree with me that the root problem was the failure to follow the scientific model in that there was an arbitrary use of power.
Another way of looking at this is that while software is indeed a form of writing, to be done well it must be done as part of a collective collaborative effort, so that success is possible only if the work is done as a team. It is as thus as important to manage the relationships amongst the team members as it is to orchestrate the code itself.
XO Axiom #1: The XO Laptop is a general-purpose Linux computer with builtin network access capabilities
I have only used my XO for a few hours, but I have already come to believe that a few basic ideas, or principles, are so important that they should be taken for granted in that no proof of their truth is required. Such ideas are called axioms in mathematics.
Most folks think of the XO as a little green box meant to deliver education to children in third-world counties.
Yes, it is that. But the XO is many other things. In particular, whenever you start to do something for the first time with the XO, including using it for the first time, the essential step is to say to yourself, especially if you are an open-source developer, the following words of XO Axiom 1:
XO Axiom #1:
The XO Laptop is a general-purpose Linux computer with builtin wireless network access capabilities.
This is important, so let’s say it again:
The XO Laptop is a general-purpose Linux computer with builtin network access capabilities.
Yes, it is tiny, the keyboard is meant for the fingers of children and not adults. It doesn’t have a hard-wired ethernet slot. It doesn’t have a large disk. It is not as fast as most desktops. And so on, and so on.
But, lest we forget:
The XO Laptop is a general-purpose Linux computer with builtin network access capabilities.
This means we just have to put on our Linux Thinking Caps and make use of Axiom 1 when we face a new challenge.




