Close

On that New Location of Algorithm Coffee Co. for BerkeleyLUG, starting Sunday 2019-04-14.

Here’s a bit more useful info than the previous brief posting on our hopeful change of venue for the Berkeley Linux Users Group away from 85C Bakery & Cafe and to Algorithm Coffee Company :

Please feel free to leave your comments and thoughts on this post below.

New location starting October 2016

The BerkeleyLUG meetups have been moved from Bobby G’s Restaurant to 85c Bakery at 21 Shattuck Square just across the street.  85C Bakery’s direct contact telephone number is 510.540.8585 and the store’s general website is www.85cbakerycafe.com/

Meetup dates and times remain the same, as listed at the ‘Meetings’ page https://berkeleylug.com/meetings/

Reason.
For those of you who still may not realize this, Bobby G’s Pizzeria has been under new ownership since this past Winter; several months after the Bobby G’s post of November 8, 2015 https://berkeleylug.com/2015/11/08/bobby-gs/. The new owners have kept things they way they were before under the restaurant’s founder Bobby G — well, *mostly* that way — until they made some key renovations this past Summer. Among the most significant renovations the owners made during the last couple of months significantly affecting our BerkeleyLUG meetups were their adding more TV screens around the restaurant, adding more TV speakers all around the place routinely blaring televised sports, and making enough structural renovations to the place (e.g., raising the ceiling) so that the televised sports sounds heavily reverberated all around the place.

The key decision we made was essentially based upon our inability to actively participate in BerkeleyLUG discussion at Bobby G’s, given all the ambient noise and sound discordancy (“vibrations” as someone put it one afternoon at Bobby G’s.) BerkeleyLUG participants actually had to leave Bobby G’s on past meetups over the last month or so,  due to the level of noise preventing even simple conversation!

This situation was simply unacceptable.  And we received a clear indication at a recent meetup that Bobby G’s new management wasn’t liable to accommodate us by lowering the speaker volume on the televised sportsgames just for us, while other paying customers were cheering on their sports teams and enjoying their beers.

Hence we made the change to the new venue nearby.

Please respond with your thoughts and suggestions in the Comments section below or on the BerkeleyLUG GoogleGroup mailing list https://berkeleylug.com/googlegroup/

A June ’14 Distro Categorization

I thought it might help a few people (including myself!) to perform the following categorized and referenced summary of the current “families” of non-commercial Linux distros. All of these distros have brief descriptions and rankings at the DistroWatch.com listing site [1].

I. Ubuntu and its *buntu Satellites

For example,

  • Ubuntu itself[2]
  • Kubuntu[3] = Ubuntu base with the K Desktop Environment (KDE)
  • Xubuntu[4] = ditto, but with the Xfce desktop environment instead
  • Lubuntu[5] = ditto, but with the Lightweight X11 Desktop Environment (LXDE) instead

II. Non-Canonical, Ubuntu-based Derivatives

For example,

III. Debian GNU/Linux

The “universal operating system”[14] has

  • an extensive range of supported hardware architectures [15]
  • Debian Stable/’wheezy’ and Debian Testing/’jessie’ versions available in official desktop environments, similar to the *buntu satellites (e.g., KDE, Xfce, LXDE)
  • Debian live[16] and netinstall[17]

IV. Debian-based Derivatives

For example,

V. Popular non-Ubuntu and non-Debian Distros

For example,

VI. An extensive mixture of less popular, newly-created, and niche/special-purpose Distros

For example,

Please feel free to add your own comments to the above, e.g., to correct major factual errors and/or significant ommissions 🙂

We meet on the second and fourth Sundays of each month from noon to three in Berkeley near the Downtown Berkeley BART station near the corner of University & Shattuck. We hope you join us at Bobby G’s Pizzeria and/or join the discussion on our email list.

References:

[1]http://distrowatch.com
[2]http://distrowatch.com/table.php?distribution=ubuntu
[3]http://distrowatch.com/table.php?distribution=kubuntu
[4]http://distrowatch.com/table.php?distribution=xubuntu
[5]http://distrowatch.com/table.php?distribution=lubuntu
[6]http://distrowatch.com/table.php?distribution=mint
[7]http://distrowatch.com/table.php?distribution=zorin
[8]http://distrowatch.com/table.php?distribution=elementary
[9]http://distrowatch.com/table.php?distribution=lxle
[10]http://distrowatch.com/table.php?distribution=ultimate
[11]http://distrowatch.com/table.php?distribution=bodhi
[12]http://distrowatch.com/table.php?distribution=lite
[13]http://distrowatch.com/table.php?distribution=pinguy
[14]http://distrowatch.com/table.php?distribution=debian
[15]http://cdimage.debian.org/debian-cd/current
[16]http://www.debian.org/CD/live
[17]http://www.debian.org/distrib/netinst
[18]http://distrowatch.com/table.php?distribution=crunchbang
[19]http://distrowatch.com/table.php?distribution=wattos
[20]http://distrowatch.com/table.php?distribution=steamos
[21]http://distrowatch.com/table.php?distribution=sparky
[22]http://distrowatch.com/table.php?distribution=knoppix
[23]http://distrowatch.com/table.php?distribution=arch
[24]http://distrowatch.com/table.php?distribution=fedora
[25]http://distrowatch.com/table.php?distribution=suse
[26]http://distrowatch.com/table.php?distribution=mageia
[27]http://distrowatch.com/table.php?distribution=puppy
[28]http://distrowatch.com/table.php?distribution=centos
[29]http://distrowatch.com/table.php?distribution=chakra
[30]http://distrowatch.com/table.php?distribution=manjaro
[31]http://distrowatch.com/table.php?distribution=pclinuxos
[32]http://distrowatch.com/table.php?distribution=slackware
[33]http://distrowatch.com/table.php?distribution=vector
[34]http://distrowatch.com/table.php?distribution=scientific
[35]http://distrowatch.com/table.php?distribution=gentoo
[36]http://distrowatch.com/table.php?distribution=antix
[37]http://distrowatch.com/table.php?distribution=androidx86
[38]http://distrowatch.com/table.php?distribution=linuxbbq
[39]http://distrowatch.com/table.php?distribution=robolinux
[40]http://distrowatch.com/table.php?distribution=tails
[41]http://distrowatch.com/table.php?distribution=ipfire
[42]http://distrowatch.com/table.php?distribution=gparted
[43]http://distrowatch.com/table.php?distribution=olpc

Windows XP End-of-Support Day

Microsoft’s support for Windows XP is officially over today.
Nope, Not kidding!! MS’s official announcement is linked here ==> http://windows.microsoft.com/en-us/windows/end-support-help

Anyone still have Windows XP installed alone or else installed dual boot?
Other than those of you who have XP installed in a VM or a Hypervisor, what are your thoughts about using Windows XP further??

Are any of you going to fully migrate to Linux with maybe using Wine for any remaining gotta-have XP apps? Or assuming your hardware is sufficient for upgrading, any of you with XP still around contemplating a straight move to Windows 7 or Windows 8?? Or are some of you (admittedly like me!) going to keep Windows XP as a side Operating System; never to be seriously used any longer for most purposes???

Here is a helpful link for those of us who may want to keep Windows XP around, even though support has absolutely ended; ==> http://www.zdnet.com/windows-xp-support-end-10-steps-to-cut-security-risks-7000028193/

Massive Open Online Course ‘Introduction to Linux’ for Newbies

Those of you who may be either interested in a very basic Introduction to Linux class intended for computer newbies that you know of or else interested in reviewing such a class for yourselves, might be very interested in an announcement that was released just over two weeks ago. The announcement article is ‘Linux Foundation to Build Massive Open Online Course Program with edX, Increase Access to Linux Training for All'[1].

This announcement in essence is that the Linux Foundation and edX are partnering to develop a MOOC(*) program that will help address the effort to meet an increasing demand for Linux professionals and to grow the pool of Linux technical talent worldwide by making basic Linux training materials available to all for free. Previously a $2,400 course, Introduction to Linux will be the first class available as a MOOC and will be free to anyone, anywhere.

Bulleted points worth mentioning:

  • (*)MOOC == Massive Open Online Course
  • Further description of edX’s LFS101x ‘Introduction to Linux’ course goals are at the link here[2]. Note that this MOOC is free, is 100% self-paced, and is specifically designed for “computer users who have limited or no previous exposure to Linux”.
  • The LFS101x ‘Introduction to Linux’ MOOC is officially slated to begin sometime this Summer of 2014. Current estimates are that it will begin closer to late Summertime.
  • edX registration for LFS101x has already begun through their online Registration form at the link [3] and more specifically at [4].
  • Carefully note from their FAQ[5] that while edX courses are free for everyone to audit, some courses have a fee for ID verified certificates of achievement. Indeed, edX seems to be “nudging” course-registrants toward this paid certification of achievement via their TOS[6]. In addition, verification for their paid certification mandates that registrants provide identity authentication through webcam photos of themselves, as well as to provide photos of “an acceptable form of photo ID”. You can skip edX’s paid certification “nudge” and the authentication requirement by going to the lower part of the ‘Register + Account Creation’ screen that follows edX’s initial online registration forms [3] or [4]. You would wish to solely audit the LFS101x course.
  • Newbie computer users everywhere are welcome to register for this MOOC now, and in the long interim period before the LFS101x course officially starts, can gain some familiarity with computers and common software, such as would be had from daily computer use, e.g., using the Berkeley Public Library’s publicly reservable computers[7].

Again, the key announcement is ‘Linux Foundation to Build Massive Open Online Course Program with edX, Increase Access to Linux Training for All’ at the webpage here[1]

Please feel free to pass along and share this information with others.
And of course, please feel free to comment on how great (or not) you think this MOOC will be, and the same on mentioning any good alternatives!

References:
=========
[1]http://www.linuxfoundation.org/news-media/announcements/2014/03/linux-foundation-build-massive-open-online-course-program-edx
[2]https://www.edx.org/course/linuxfoundationx/linuxfoundationx-lfs101x-introduction-1621
[3]https://courses.edx.org/register
[4]https://courses.edx.org/register?course_id=LinuxFoundationX/LFS101x/2T2014&enrollment_action=enroll
[5]https://www.edx.org/student-faq#
[6]https://www.edx.org/edx-terms-service
[7]http://www.berkeleypubliclibrary.org/library/reserve-computer

 

My search findings on Learning C/C++ Programming and Using an IDE

My search findings on Learning C/C++ Programming and Using an IDE

Introduction

I’ll have to preface my search findings on these subjects, by mentioning that according to Risto S. Varanka’s Programming Languages mini-HOWTO: Programming Languages ;

C, Lisp and Perl are traditional hacking languages in the
GNU/Linux culture; Python, PHP, Java and C++ have gained new
ground recently

.
Furthermore, and mostly according to Veranka’s mini-HOWTO and to forum threads such as this one at ProgrammersHeaven.com/ ;
A. Perl is a great first programming language to learn for Beginners; Perl has the advantage of being an interpreted language instead of a language that requires a compiler and linker for creating binaries. Perl is an Object Oriented Programming (OOP) language that is especially powerful for handling text and strings. Perl is commonly used for scripting, for sysadmin-type tasks, and for web server tasks.

B. Python and Java are also great first programming languages for Beginners to learn; both Python and Java are modern up-to-date OOP languages used on web servers and for web-processing tasks. Python is especially useful for more general and application-specific scripting while Java is especially useful for cross-platform applications.

C. as appropriate 😉
C and C++ are apparently NOT languages for Beginners to first learn programming. Although executable binaries created from C or C++ generally run faster than interpreted source code, executable binaries (i.e., the actual applications) require the EXTRA steps of compilation and linking from original C/C++ source code, not to mention any necessary required debugging and optimization steps. Both C and C++ programming languages are especially useful for creating applications. C is more of a Procedural than an OOP language such as C++, and many describe C as being the MOST suitable for the system and in-depth OS tasks that Linux distros rely upon using the GNU Compiler Collection’s ‘gcc’.
* Note that “GCC” is the acronym for the overall GNU Compiler Collection whereas “gcc” is the specific acronym specifically for the GNU Compiler Collection’s C compiler itself.

From my own limited experience, I would probably place Perl and maybe Bash shell-scripting ahead of C and C++ for Beginners first learning how to program. I would guess that many of us who have already programmed using Perl and Bash shell-scripting could probably use a refresher or two in these :-).
A good “Perl tutorials” web search using the privacy-minded search engines ixquick and/or Startpage should yield worthwhile hits very similar to these handful :

grantbow has a collection of good Bash shell scripting tutorials and resources within his Learning the Command Line webpage, and also helpful in this regard is chapter 7 of the Rute User’s Tutorial and Exposition.

With all that being said, here are some working links I have found regarding learning and compiling C/C++ programs.

I. Tutorials to learn C/C++

II. Simple C/C++ Compilation

The simplest and probably the best initial manner of learning C/C++ programming in Linux using these tutorials on the command line is to:

  1. Type in and edit your C/C++ source code using whatever text editor you most prefer (e.g., vi/vim/nvi, nano/pico, gedit, nedit, leafpad, mousepad,…whatever else) and then save the file with the suffix `.c’ for C programs or one of the suffixes `.C’, `.cc’, `.cpp’, `.CPP’, `.c++’, `.cp’, or `.cxx’ for C++ programs.
  2. Compile and link your properly-suffixed source code file from the command line using the typical ‘gcc’ or ‘g++’ command+options for C and C++ respectively.
  3. Run the default executable file by entering ‘./a.out’.

For getting more familiar with using gcc and g++ in steps 2 and 3, there are:

  • Cprogramming.com’s aptly-titled gcc compiler and g++ compiler webpages.
    Quick, simple, and these provide appropriate mention of the GNU Debugger, ‘gdb’.
  • develvid’s YouTube video Compiling with GCC (probably should be “gcc” instead)
    This video shows sequence of command line screenshots using the vim editor and a few ways to use gcc to compile and run a pair of simple C programs. Covers the above steps 1 through 3 in a quick 4 1/2 minutes.
  • Brian Gough’s An Introduction to GCC for the GNU Compilers gcc and g++ with a Forward written by RMS.
  • The FSF gnu.org’s Invoking GCC – GCC Command Options.
    Given that the entire site, gcc.gnu.org/onlinedocs/gcc, is the gnu.org’s official guides to GNU compilers, this webpage is as fully complete and as up-to-date as the FSF can make it. It seems a bit too complex for Beginners to proceed very far beyond the basic ‘Invoking GCC – GCC Command Options’ though.
  • The gcc(1) and g++(1) man[ual] reference pages.
    Their SYNOPSES and DESCRIPTIONS sections seem to be the most useful, although their OPTIONS sections can be overwhelming with the vast number of listed options for both gcc and g++.

III. Using an IDE

Instead of creating and testing C/C++ programs through the three-step manual method just described above, I have also discovered a few Integrated Developmental Environments (IDEs) for Linux to handle C/C++ program development all the way from editing C/C++ source code to correcting syntax, compiling, linking, full debugging amd code optimizations.
Using a C/C++ IDE also goes a long way to relieving the need for Beginners to venture too heavily into the more Advanced-level programming processes of contimually running the gcc/binutils toolchain, ‘make’ and ‘gdb’ to create Linux system binaries.

 

____________________________________________________________

Good and better recommendations & suggestions regarding these are always welcome 🙂

—-
Go Open Source Software Bears!

Cool little cheapo Linux device for 2012…

Good news this start-of-year 2012 for some of us Linux DIY tinkerers:
The little Raspberry Pi device is set to be released soon.
The Raspberry Pi comes as a Printed Circuit Board with a processing System on a Chip (also known as a PCB with a SoC). Already eBay is auctioning off the first Beta releases of these boards, see Raspberry Pi – first 10 on eBay!

What’s a Raspberry Pi?
( NO, NO, NO, a “raspberry pi” is NOT your typical sound of Thhhbbbbbbbbtttt or Tphttphttphtphtphtphtpht or :)~ +plus+ the Greek letter for the infamous mathematical Euclidean constant near 3.14 !!! )
The Raspberry Pi is actually a credit-card sized computer that plugs into your TV and a keyboard. It’s a capable little PC which can be used for many of the things your desktop PC does, like spreadsheets, word-processing and games. It also plays high-definition video. We [the Raspberry Pi creators] want to see it being used by kids all over the world to learn programming.
(this from the Raspberry Pi FAQs webpage )

The main Raspberry Pi website is http://www.raspberrypi.org and here is a nice video of Raspberry Pi Foundation’s Executive Director Eben Upton describing and demonstrating the Pi model “B” beta PCBs that are to be auctioned off (in his “blimey mate” UK accent)

Key Features of the Raspberry Pi “B” Model:

  • It is projected to cost $35 USD, it comes with 256MB onboard RAM, and it has built-in 10/100 wired Ethernet capability.
  • It measures 85.60mm x 53.98mm x 17mm (that’s 3.37″ x 2.125″ for its two major dimensions), with a little overlap for the SD card and connectors which project over the edges. It weighs 45g.
  • Its main processor is a 700MHz-speed ARM11 Broadcom BCM2835 SoC.
  • Power to the board (Power to The Peopletoo!) is through a 5V micro USB power supply.
  • The disk used to boot and load an OS on the Pi is a standard-profile SD card. Debian GNU/Linux has already been preloaded onto SD cards and tested for Beta versions of the Pi board. Fedora and ArchLinux have purportedly been SD-preloaded as well. Ubuntu, however, has apparently not yet committed to fully supporting the device at this time, due to issues with newer releases of Ubuntu and the ARM processor the Raspberry Pi Foundation is using.
  • External storage (semi-permanent), mice, keyboards, wireless adapters, and other add-ons will all connect to the Pi via an external USB expansion hub (non-supplied) attached to the Pi’s single built-in USB 2.0 root hub. Further USB add-on devices will connect to the Pi through one or more additionally-supplied USB hubs connected to the first.
  • There is composite and HDMI built into the Pi board, so you can hook it up to a digital or analogue television or to a DVI monitor. There is no VGA support, but adaptors are available.
  • The Pi’s standard 3.5mm jack provides audio to your speakers or headphones.

Cool little tchotchke, eh?

Note that covering-cases are not yet easily available for the Pi, although vendors will probably offer these in the future depending upon how successful the Pi becomes.
DIY’ers might want to use easily-malleable materials to make or mod their own Pi cases, e.g., using wood, plastic, metal or whatever else is suitable for the task.

—————————————

Here is one my first estimates of the breakdown and total cost of a complete computer system using the Pi board (prices in USD):
+ $35 for the Pi “B” board itself
+ $40 for a used, budget-conscious LCD monitor with VGA
+ $30 for the cost of a discounted wireless USB adapter
+ $30 for the cost of a discounted 4-port USB 2.0 hub
+ $20 for the cost of a discounted 4GB SD card
+ $20 for the costs of a used and discounted USB keyboard and USB mouse
+ $20 for the cost of a HDMI-to-VGA converter
+ $10 for the cost of a 4GB USB thumbdrive used for semi-permanent storage
+ $40 for Taxes plus Shipping & Handling of all the above, if ordered from an outside vendor
+ costs for any extra materials & labor (e.g., for constructing a case)
===
~ $250 Total

I’m uncertain exactly HOW realistic this first estimate actually is.
Of course, you would pay far less than this estimate if you already HAVE these items laying around -or- you can get these for far less than the above estimate via eBay/Amazon/Craigslist/other-online/local venues. Then again, maybe my above first estimate may be an UNDERestimate and you might have to pay more.  I suspect that most longtime computer techies already having most of the equipment listed here will realistically have substantially lower total costs for the above-listed items; probably well below $100.

—————————————

I’m further guessing that if a complete computer system containing a Pi board falls well below an $80 pricepoint (e.g., due to mass-production, consolidation of components and deep depreciation of component costs), then such a computer system would be a good deal and more and more persons will want to jump on board, so to speak :-D.

Feedback on all this from anyone reading this post?

I wonder whether more of these Raspberry Pi beta boards will be available at the big Southern California Linux Expo SCALE 10X going on later this month??

Distro-neutrally creating a liveUSB

This post is dedicated to the memory of the recent death, at a tragically young age, of renown and idealistic Diaspora founder Ilya Zhitomirskiy.
I personally met Ilya just after the Bay Area Linux User’s Group (BALUG) presentation ‘Get to know the FreedomBox project ‘ just within the last half-year.  This presentation’s webpages are the BALUG-Announce’s archived post ‘Tu 2011-06-21: Stefano Maffuli: Get to know the FreedomBox project’ at http://lists.balug.org/pipermail/balug-announce-balug.org/2011-June/000172.html and Stefano Maffuli’s own ‘Awesome night at BALug presenting FreedomBox’, http://maffulli.net/2011/06/22/awesome-night-at-balug-presenting-freedombox/.  IIRC, Ilya himself was asking a great deal of key questions about this relatively new (at the time) technology, during the body of Stefano’s presentation

For those of us who may have ever met or known Ilya — whether here in the San Francisco Bay Area or elsewhere or just through Diaspora — May he Rest In Peace !!!

=====================

Distro-neutrally creating a liveUSB.

My goal in this writing this is to find a better way to use practically *any* Linux distribution to create a nice, bootable liveUSB drive.

By *any* Linux distro, I mean
– NO requirement for MS-Windows XP/Vista/7/…etc. (hope that was obvious!)
– NO specific requirement for a Ubuntu-based Linux distribution (very simply, I  DISMISS the presumption made all-too-frequently that Ubuntu or another Ubuntu-based distro is the chief Linux distro that “everybody uses” or that “everyone WILL use”.  I simply think that such a presumption is false.)

As a bold FYI, a  half-dozen popular non-Ubuntu Linux distros include:

ca sera suffi

In general, creating any sort of bootable device requires three overall actions:
A. Partitioning and then Formatting the device.
B. Copying to the device 1) the startup files and 2) various utility and extraneous/productivity files.
C. Extra steps taken to effectively make the device bootable.

 

Post alert: History digression here.<start_brief_history_lesson>

Going way back to the late 1980’s, you’d create one of those older bootable 3.5″ floppy-disks (and check that floppy too) by using the historic MS-DOS command ‘FORMAT /S /C A:’
In one step, that command string did the formatting step of A, and then for B-C it sufficiently copied the MS-DOS command-interpreter/startup files of COMMAND.COM, IO.SYS, and MSDOS.SYS.

More recently, but still for those older bootable 3.5″ floppy-disks, was Tom’s Root and Boot Linux floppy disk, see http://www.toms.net/rb/
Once the necessary file was downloaded, the file uncompressed, and the uncompressed README-type file’s instructions followed, an install script performed the above steps A through C onto the floppy disk. It should be noted for tomsrtbt that a) the install script used the Linux ‘fdformat’ command for step A, which roughly corresponds with the ‘FORMAT /C’ command for DOS, and b) the floppy was made bootable in step C using the LInux LOader (LILO) boot loader roughly corresponding to MS-DOS’s ‘SYS’ command and its resultant trio of “boot-loading” files previously mentioned in the paragraph above.

Besides the Tom’s Root and Boot Linux floppy disk, there were (and are) other Linux bootdisk creation methods for those older 3.5″ floppies.
These methods perform step B by the process of copying a single pre-created image file (.img) onto a DOS-formatted floppy disk using the Linux ‘dd’ or ‘cat’ command-line commands.  And instead of using LILO, many if not most of these methods now use GRUB (GRand Unified Boot loader) for step C.
A pair of current examples of such GRUB-based boot-floppy creators are
– The All In One Boot Floppy, website http://schierlm.users.sourceforge.net/bootdisk/index.html
– Super Grub2 Disk, website http://www.supergrubdisk.org/super-grub2-disk/

====> And as another FYI most appropriate here in this mention of the Linux command-line, Grant Bowman has a key post at this very BerkeleyLUG.com site entitled ‘Learning the Command Line’, http://www.berkeleylug.com/?p=834.  A nice collection of ‘Learning the Command Line’ links is in his very own http://www.grantbow.com/command_line.html ; very immediately applicable to top-level steps A through C.

In any case, bootable CD’s have been called “liveCDs” for awhile now, and they have an order of magnitude more utility files and productivity applications than on floppy disks.

Instead of any necessity to carry out steps A and C to create bootable liveCDs, these steps are ALREADY carried out when downloaded as .iso image files (the ISO-9660 format).
The only remaining step to carry out for creating bootable liveCDs is step B in the process of “burning” the filename.iso image file and the file-contents contained within, onto a blank CD.
Common CD-burning applications using Linux’s X11 graphical user interface are Brasero, K3b, Xfburn, and X-CD-Roast. The commands ‘wodim’, a.k.a. ‘cdrecord’, serve to burn an .iso image onto a blank CD from the Linux command-line.
The tutorial at http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.html primarily covers in much further detail, how to use both X-CD-Roast and ‘cdrecord’.

Enough of the history digression; now back to creating liveUSBs. </end_brief_history_lesson>

 

To rehash this again, creating any sort of bootable device requires three overall actions:
A. Partitioning and then Formatting the device.
B. Copying to the device 1) the startup files and 2) various utility and productivity files/apps.
C. Extra steps taken to effectively make the device bootable.

 

A. .. Partitioning.
Almost every USB pendrive of 1 GB capacity or higher comes partitioned and formatted for use in Windows, meaning that by factory default, it comes in FAT32 format, a.k.a., “vfat” in Linux terminology.  One of the key Linux utilities to 1st check USB pendrive partitioning is ‘fdisk’ (yes, I know others also suggest ‘cfdisk’ or ‘parted’… they’re both excellent and may even be BETTER than ‘fdisk’!)  Among other  decent references around for using ‘fdisk’ are the Geek Stuff’s ‘7 Linux fdisk Command Examples to Manage Hard Disk Partition’ at http://www.thegeekstuff.com/2010/09/linux-fdisk/ and the Linux Documentation Project’s ‘USB Flash Memory HOWTO’ (it’s for pendrives) at http://tldp.org/HOWTO/html_single/Flash-Memory-HOWTO/ .

To tell which device Linux calls the USB pendrive, you would run ‘fdisk -l’ from the command-line. The entire pendrive would then be  displayed near the bottom of the output as /dev/sdX with the X here typically written as “c”, “d”, “e”, or “f” depending upon what other storage devices you concurrently have connected.

A source of confusion is which “partition identifier” is the best one to use for pendrives. Two good but fairly brief references on partition identifiers are the SystemRescueCD’s ‘Sysresccd-Partitioning-EN-Partitions-attributes’ at http://www.sysresccd.org/Sysresccd-Partitioning-EN-Partitions-attributes   and the Linux Documentation Project’s ‘Partitions-Mass-Storage-Definitions-Naming-HOWTO — Partition Types’ at http://tldp.org/HOWTO/Partition-Mass-Storage-Definitions-Naming-HOWTO/x190.html .
The FAT32 partition identifiers “b” and “c” (“0B” and “0C” respectively for ‘cfdisk’) are easily the most appropriate to use for people who have USB pendrives of 1 GB or 2 GB capacity, and who SOLELY want to use these pendrives to boot up a single liveUSB with little to NO need for any extra file-storage space. I have used both identifiers without mishap when partitioning liveUSB pendrives.

An extra step to carry out at this partitioning-stage is to designate the first USB-pendrive partition as the active bootable partition.  Within ‘fdisk’, you’d use the ‘a’ selection for this, and the bootable partition is then designated by an asterix under the “Boot” column.  Within ‘cfdisk’, you’d use the bottom ‘[ Bootable ]’ selection for this, and the bootable partition is then designated by the “Boot” label under the “Flags” column.

A. .. Formatting.
Once USB pendrives are properly partitioned with either of the above FAT32 partition identifiers, they then must be effectively formatted.
The Linux command-line command for this is normally ‘mkdosfs’ , a.k.a. ‘mkfs.vfat’, and the command string most comparable to the old DOS ‘FDISK /C A:’ for this task would probably be ‘mkdosfs -F 32 -cv /dev/sdX1’ where that X is going to be the device letter of the USB pendrive;the X typically substituted with the appropriate “c”, “d”, “e”, or “f”.  Section 6.6 of the above ‘USB Flash Memory HOWTO’  reference http://tldp.org/HOWTO/html_single/Flash-Memory-HOWTO/ also mentions ‘mkdosfs’ here.  Specifically UNlike the DOS ‘FDISK’ command, however, ‘mkdosfs’ CANNOT create boot-able file systems; a bootable liveUSB must be created through additional methods as described below for steps B and C.
The next mini-step to carry out following successfull USB-pendrive formatting is to make the drive available for copying files to it through the Linux command-line command ‘mount’.  As the Linux Documentation Project’s ‘Linux Filesystem Hierarchy’ webpage http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/mnt.html describes it; “Mounting is the process by which you make a filesystem available to the system. After mounting your files will be accessible under the mount-point.”  Oftentimes, if you just type ‘mount’ at the command-line, the output shows that the USB pendrive’s mount-point is something like /media/disk, /media/disk-1, or /mnt/sdX1 (again, X here is likely going to be one of the lower-case letters “c”, “d”, “e”, or “f”) and thus the USB pendrive is ALREADY automatically mounted and accessible for copying files to it. If such  “automounting” is not the case, then you’d have to manually use the command-line ‘mount’ command in a string such as ‘mount -t vfat /dev/sdX1 /mnt/sdX1’ (note that Section 7.4 of the above ‘USB Flash Memory HOWTO’ reference http://tldp.org/HOWTO/html_single/Flash-Memory-HOWTO/ uses an alternative mount-point name /mnt/memstick instead of the /mnt/sdX1 in this particular command string)

 

B. Copying to the device 1) the startup files and 2) various utility and productivity files/apps.

Okay, let’s say that you have now successfully partitioned, formatted, and mounted for use your USB-pendrive.
There are currently a few non-Windows and non-Ubuntu options to use for copying files to the pendrive.

One excellent option is to use UNetbootin. The UNetbootin website is http://unetbootin.sourceforge.net/ and this Linux method of creating a liveUSB works quite effectively for a wide number of popular and even less-popular Linux distributions.  It should be noted that UNetbootin not only copies the startup files and various utility/extraneous files to the mounted USB-pendrive, but it also carries out most of step C through its use of the SYSLINUX boot-loader and its (syslinux’s) startup/configuration files. For those who are interested, there is a good webpage entitled ‘How UNetbootin Works’ at http://sourceforge.net/apps/trac/unetbootin/wiki/howitworks which attempts to explain what UNetbootin really does.
I happen to think that UNetbootin for Linux is far and away the BEST and easiest-to-use non-Windows and non-Ubuntu method of creating a liveUSB.

Another option is to use the LiveUSB Install USB Creator tool created by Krasimir S. Stefanov, website at http://live.learnfree.eu/
Have not used LiveUSB Install myself, but this is probably fine for creating a liveUSB.

There are by now other good automatic and distro-independent liveUSB creation options BESIDES UNetBootin and LiveUSB Install. Maybe there are some much better bash, perl, or Python scripts/apps aroundfor ALL current Linux distros??

The second major option — other than using any of these automated methods — is to use a decidedly MANUAL method of copying to that previously mounted USB pendrive both 1) the startup files and 2) a varied mixture of utility and productivity files/apps.  Although this manual option is without a doubt HIGHLY complex, its advantage is in offering somewhat more flexibility and fine-tuning.
DIY’ers, are any of you seeing this??!!

Almost invariably, the manual option will require that you download and use the SYSLINUX commands and files, currently available through the kernel.org webpage http://www.kernel.org/pub/linux/utils/boot/syslinux/ . To obtain the full and latest SYSLINUX commands and files at the time of this writing, you would download from this site either syslinux-4.04.tar.bz2 or syslinux-4.04.tar.gz to your current working directory, and then run respectively either ‘tar -xjvf syslinux-4.04.tar.bz2’ or ‘tar -xzvf syslinux-4.04.tar.gz’.
When you have carried out either of these last two steps from the Linux command-line, you will have a subdirectory in your current working directory appropriately called “syslinux-4.04” in which to navigate as needed.

Now with your mounted USB-pendrive, you will have to discover the location of your downloaded Linux distro that you wish to make a liveUSB out of.

Sometimes, a few Linux distro creators nicely make available an archived and compressed “.tar.gz” file, a.k.a. a “.tgz” file as  a liveUSB form of their distro. This filename.tar.gz (or filename.tgz) is then downloaded and copied-over to the mounted USB pendrive .  The process of carrying this out is fairly simple: Download the archived and compressed file (ending in .tar.gz or .tgz) to your current working directory, do a straight copying of this file via the command-line ‘cp’ command to the mounted USB pendrive, and then uncompress this file at the very topmost part (the “root” directory) of the drive. The latter two steps are probably going to be something very similar to ‘cp -v ./filename.tgz /mnt/sdX1’ where ./ is your current working directory and then ‘tar -xzvf /mnt/sdX1/filename.tgz’.

Unfortunately, the vast majority of Linux distros are primarily available as the downloable .iso image files (the ISO-9660 format) that I wrote about way above for CDs, e.g., the fairly nice and small 30 MB slitaz-3.0.iso for SliTaz Linux. (And btw, this SliTaz Linux happens to have its own particular  automatic liveUSB-creating utility ‘TazUSB’ ; further info at http://hg.slitaz.org/tazusb/raw-file/tip/doc/tazusb.en.html )  In any case, the extra and likely CUMBERSOME(!) tasks involved with manually copying over the necessary files from the .iso image to the USB pendrive are the following:
..1. Loop-mounting the .iso image
..2. Copying the loop-mounted file-contents of the image onto the USB pendrive
..3. Optional: Editing the configuration file(s) now on the USB pendrive.

You’d first log in as the superuser, a.k.a., user “root” (yes, it’s a bit of a PITA!)  UNetbootin and distro-native liveUSB-creating utilities such as the ‘TazUSB’ one I just mentioned above make the first two parts of this process VASTLY simpler!!

The manual copying tasks.
..1. Loop-mounting the .iso image.
Most of this step is described in such references as LinuxHelp.net’s  ‘LinuxHelp.net’ webpage at http://www.linuxhelp.net/linux_downloads/ and Example 17-7 of the Linux Documentation Project’s ‘Advanced Bash-Scripting Guide: System and Administrative Commands’ webpage at http://tldp.org/LDP/abs/html/system.html
You’d then create a loop mount-point such as /media/iso or /mnt/iso via the ‘mkdir’ command-line command, i.e., ‘mkdir /media/iso’ or ‘mkdir /mnt/iso’
Navigate to the directory where your downloaded filename.iso distro image is located.
Loop-mount the .iso image by issuing the appropriate and longer ‘mount’ command string ‘mount -rt iso9660 filename.iso -o loop /media/iso’ or alternatively ‘mount -rt iso9660 filename.iso -o loop /mnt/iso’

..2. Copying the loop-mounted file-contents of the image onto the USB pendrive.
You’d navigate to the loop mount-point /media/iso (or /mnt/iso).
You’d then copy the entire contents (*) of this directory to the mounted USB pendrive, for example, using the command string ‘cp -v /media/iso/* /mnt/sdX1’ or alternatively  ‘cp -v /mnt/iso/* /mnt/sdX1’
The copying process could take a long while. When it appears that the copying has finally finished, you’d issue the command ‘sync’ to synchronize copying completion.
You’d then navigate back to a previous working directory OTHER THAN the loop-mounted directory /media/iso (or /mnt/iso) and then attempt to disassociate the .iso image’s temporary loop mount-point by running ‘umount /media/iso’ or alternatively ‘umount /mnt/iso’.

Now did I already mention that these steps are HIGHLY complex or what?!

..3. Optional: Editing the configuration file(s) now on the USB pendrive.
Most of the time, this simply involves checking and MAYBE editing such USB pendrive startup configuration files as isolinux.cfg in the /mnt/sdX1/boot/isolinux directory and/or grub.lst in the /mnt/sdX1/boot/grub directory.
I’ve found on extremely rare occasions that one or more of the following SYSLINUX files have had to be copied from the syslinux-4.04 directory created above to the appropriate directory of the mounted USB pendrive:
– syslinux-4.04/com32/menu/menu.c32
– syslinux-4.04/com32/menu/vesamenu.c32
– syslinux-4.04/com32/modules/chain.c32
– syslinux-4.04/com32/modules/cmd.c32
– syslinux-4.04/com32/modules/reboot.c32

 

C. Extra steps taken to effectively make the device bootable.

UNetbootin seems to handle liveUSB boot-activation quite well, and I’m certain that LiveUSB Install and other automated USB creation tools performs similarly. There is a caveat to this that I’ll note below, see note #1.

The first thing you’d have to do to MANUALLY activate liveUSB device booting, before carrying out any other steps here, is to unmount the USB pendrive’s mount-point used in Step B . This would be carried out while still logged on as the superuser / “root”-user by running the command-line command string ‘umount /mnt/sdX1’ or alternatively ‘umount /media/sdX1’

The next step is to navigate to the appropriate SYSLINUX directory (I navigate to the subdirectory syslinux-4.04/linux) and to then run ‘syslinux -s /dev/sdX1’ That alone “should” make the USB pendrive bootable.

If the USB pendrive is STILL not bootable, then a brute-force option to carry out here is to navigate to the syslinux-4.04/mbr subdirectory and to then run the command-string ‘cat mbr.bin > /dev/sdX’ without the ending “1”.

Note #1: I had to run ‘install-mbr -p1 /dev/sdX1’ after completing UNetbootin in order to effectively fix my USB pendrive’s Master Boot Record (MBR), and to then successfully boot the pendrive.
This particular command-line ‘install-mbr’ command happened to be available in the non-Ubuntu Linux distro I was using to create the liveUSB pendrive.  The command string ‘install-mbr -p1’ works by re-writing a MBR to the pendrive and then activating the pendrive’s first partition — through the “-p1” option — as the bootable one.

Following the use of ‘cat mbr.bin > /dev/sdX’ or ‘install-mbr -p1 /dev/sdX1’, you might have to re-run the prior command string ‘syslinux -s /dev/sdX1’ to ensure that the pendrive device can now successfully act as a bootable liveUSB.  Once you have completed all three of the above steps A thru C, then the best proof that you have successfully created a liveUSB on your pendrive is to actually use your pendrive to boot-up your computer.

A key note: You should definitely reboot your computer at this point in the creation of a liveUSB and check your BIOS settings to make certain that your boot-order has something like a “USB” or “Removable drive” boot option placed at the very top of the boot-order list. Among other good references for figuring out how to carry out this last step is the webpage ‘How To Boot From a USB Device’ at http://pcsupport.about.com/od/tipstricks/ht/bootusbflash.htm

The SystemRescueCD liveCD project has a useful manual webpage in English entitled ‘How to install SystemRescueCd on an USB-stick’, http://www.sysresccd.org/Sysresccd-manual-en_How_to_install_SystemRescueCd_on_an_USB-stick
I found that some of the non-SystemRescueCD-specific information near the bottom of this SystemRescueCD page is helpful, but I also think that webpages OTHER than this and OTHER than the many Ubuntu-specific ones are just as helpful in successfully creating a bootable liveUSB without the specific requirement to use MS-Windows or to use a Ubuntu-based Linux distro.

 

I think it is appropriate to remind readers again here near the bottom of this post, what I wrote near the top. A nice collection of ‘Learning the Command Line’ links is renown BerkeleyLUG contributor’s own webpage  http://www.grantbow.com/command_line.html ; very applicable to steps A through C that I’ve already spent most of the body of this post writing about.

Of course any of you reading this are perfectly welcome to provide below, your newly-revised and hopefully BETTER suggestions for distro-neutrally creating bootable liveUSBs 🙂

=====================

Linux for low-end HW, pseudo-scientific study(1)

OS Choices Indeed (for most!)

I myself am currently engaging in a pseudo-scientific self-study on optimizing some very low-end PCs with Linux.

Hardware that I obtained f or negligible cost

Pentium I MMX 200MHz
64MB 60ns EDO RAM
1 x 1GB hd, 1 x 2GB hdd
The pre-existing MS-Windows 98(FE) is still required for a minimal number of applications….. boo/hiss 🙁

Pentium I MMX 200MHz
160MB 60ns EDO RAM
1 x 8GB hd
The pre-existing MS-Windows ME is still required for a minimal number of applications….. boo/hiss 🙁

Pentium III 500MHz Celeron
256MB PC100 SDRAM
1 x 10GB hd
Pre-existing MS-Windows 2000 wiped clean off after BIOS updated — yay 🙂

Pentium III 600MHz-E (Energy-saving)
256MB PC100 SDRAM
1 x 10GB hd
Pre-existing MS-Windows 2000 wiped clean off after BIOS updated — yay 🙂
————————————
Routine questions I did ask and still ask myself on these:
– Do these low-end PCs power on, boot up and otherwise function at operable base-levels (motherboard, BIOS, CMOS, RAM… etc.) ???
– Are BIOS revisions as up-to-date as possible for these old PC’s ??
– What purpose can these low-end PC’s be BEST used for (e.g., “starter” office productivity workstations, simple multimedia workstations, router/firewall appliances, … etc.) ???

No DVD or USB-booting, no wireless setup, no CD-burning capabilities
———————————————————
My own groundrules RE: distros used

NO K/Ubuntu 9.10 “Karmic Koala” Linux, NO Fedora 11 Linux, NO OpenSUSE 11.x Linux, NO Mandriva 2009.x Linux

YES low-weight floppy and CD-R installable Linux distros having minimalistic X-Windows

——————————————————
Distros used

Basic Linux 3.50 ftp://ibiblio.org/pub/linux/distributions/baslinux/index.html
Damn Small Linux (DSL) http://distrowatch.com/table.php?distribution=damnsmall
– DSL 3.4.12 Syslinux
– DSL 4.4.10 Syslinux
Slackware Linux 13.0 http://distrowatch.com/table.php?distribution=slackware
Absolute Linux 13.0.3 http://www.absolutelinux.org/
Zenwalk Linux 6.2 Standard http://distrowatch.com/table.php?distribution=zenwalk (c’mon for goodness sakes, this is Berkeley!)
Debian GNU/Linux “lenny”/stable 5.0.3 XFCE+LXDE http://distrowatch.com/table.php?distribution=debian
Debian GNU/Linux “squeeze”/testing 5.0.2 XFCE+LXDE  http://www.debian.org/News/2009/20090730
Knoppix EN[glish] 5.1.1CD http://distrowatch.com/?newsid=03956
Eventually(maybe!), Puppy Linux 4.3.x, MEPIS 8.x.x, and/or Xubuntu/Lubuntu 9.10 “Karmic Koala” installation CDs

———————————–

Used solely as testing LiveCD’s, and for distro-downloading/CD-burning on another PC :
Knoppix ENglish 6.0.1CD http://distrowatch.com/?newsid=05299
Lubuntu 9.10 Lyxis Beta 23 https://wiki.ubuntu.com/Lubuntu and http://download.lxde.org/lubuntu-9.10/
TinyCore Linux 2.4.1 http://distrowatch.com/table.php?distribution=tinycore


Used as low-spec routers/firewalls
FREESCO http://www.freesco.info/index.php
floppyfw http://www.zelow.no/floppyfw/
Devil-Linux http://www.devil-linux.org/home/index.php

I’ve done all the ISO/img downloads and burning, and am more  than halfway finished performing Linux installs on all four low-end PCs.

I absolutely (not the above distro;-)  STILL NEED TO perform extensive diagnoses and troubleshooting with these older PC both BEFORE and DURING their Linux installations.

Results of this pseudo-scientific study soon to follow — maybe within about two months ??

-Aaron / GoOSBears