GNU World Order is an internet audio show about GNU, Linux, UNIX, and other technical and geeky topics. We release in the free Ogg Vorbis and Opus audio formats. Please leave your ad blockers on.

Listen: Ogg 12x17 | Opus 12x17

2018-04-23T13:58:07Z

Klaatu continues his tour of all the little packages that are installed on your Linux box. In this episode: JFS, kbd utils, kmod, less, lha and lrzip compression showdown, libcgroup, libgudev, lilo, logrotate, and LVM.


I'll probably cover this, along with LUKS, in the next episode, but since it was mentioned, here is how I install the OS on a single LVM-enabled drive, and then add more drives with LVM later.


Assuming that you have Linux installed on a drive that is a single LVM volume group, then boot into your OS, and begin:


  1. Partition your un-used hard drive. Assuming you have only two drives in your machine, let's call the first /dev/sdX and the second /dev/sdY (in reality, the values are probably sda and sdb, but to protect you from copy-paste disasters, I use placeholders).

    First, find out how big your disk is:

    # parted /dev/sdY print | grep Disk
    
  2. For the sake of this example, let's say your drive is 1200100MB (1TB) in size.

    Create a partition that spans the whole drive:

    # parted /dev/sdY mkpart primary 1 1200100
          
  3. Flag it as an available entity in your storage pool.

    # pvcreate /dev/sdY1
    	
  4. OK, now you have a drive prepped for use, but we should pause and look at our imaginary setup. In order to add this new drive to an LVM volume group, we need to know what volume groups we have. Your OS installer might have created this for you, or it might be something you very consciously designed yourself. Either way, you can see what you have available:

    # vgdisplay
    storage
      
  5. OK, so we have a volume group called storage. Currently, we happen to know that storage contains only your first drive; the one that you installed your OS onto. But you want to make that bigger by adding a second drive to it. This is called extending your volume group.

    # vgextend storage /dev/sdY1
          
  6. Now we have a pool that has access to two partitions, but we are still not actually using the second partition.

    A volume group contains logical volumes, and it is to those volumes that you can add disk space by drawing from the available disks in the group.

    To check what logical volumes you have:

    # lvdisplay
          

    To check physical volumes for size:

    # pvdisplay
          
  7. Armed with a mental map of how your partitions and system are each laid out, you can now extend the logical volume. Let's say that your installer placed /home into its own partition. You would see it as a logical volume, and you can extend its size:

    # lvextend -L +999G /dev/storage/home
          

    That would, as you can probably guess from the command itself, extend the logical volume containing your home folders by 999Gb.

  8. Well, almost anyway. It has extended the space available to the logical volume, but it has not actually stretched the file system across all that new space yet.

    To make all that extra space readable and writable, you must resize it:

    # resize2fs /dev/storage/home
        

    Verify what you have just done:

    # df -h /home
    1889T
      

Your home directory is now nearly 2TB in size, and the fact that the file system spans two separate physical volumes is entirely transparent to the OS.

ogg 27e164d61163394c5db669002b14237a87a58f8dfbe01e5b8dfcbc36f265a341
opus ed673226da0c80134bcf2b6f49530074fc23ff4dd367ec7d25774461e4d86a98
m4a 78fa2d887ac73c6c04a40f20af31460d08d023da100894d164532597a6fcb8d5
spx f904bd380765ea5eaad129c763a33016f0af19f707f402c7a968dc90159a020a
Links:
libcg
libgudev

Listen: Ogg 12x16 | Opus 12x16

2018-04-16T11:37:33Z

Why should you use open source for your next project? Klaatu tells all!

ogg 1d6fcae49e3e47803f48d1ee51db945d1e5960190fa40066d1f115437b8c4a83
opus c5c7dddeda193c58516c514149b68ae31a19b32658c3573319ee6894db938541
m4a dc1f9a49ca732105e3625cb8500a3bd237414bdc1c145061c0655d66467d20fe
spx 6b2329d1de58f3f7b799c8bc8f4c9fb257d742a5c60768fe262470ad9a164baa
Links:
OpenSource.org
Free Software Foundation

Listen: Ogg 12x15 | Opus 12x15

2018-04-10T13:47:39Z

Listener feedback.

ogg 1d61524f85971444c75320767e09692ac278242e7aade8a9e5be4543ea6ea419
opus 4e6c934b69d0db7da2b51017b6dd9d70ce3474e6e40902165029486aaf14f99c
m4a 9a78091bd183446436c8ced6016e4e563558a5a428d00723311ee9e4b3a90c4f
spx 1f4c9d0c95a4694de86135fd04a8e247a7b668dc22a98b889d8f056bb4307c0f
Links:
Parallel video tutorials
youtube-dl

Listen: Ogg 12x14 | Opus 12x14

2018-04-02T15:39:40Z

Klaatu installs NetBSD on a Raspberry Pi rev 1. Klaatu attempts to kill its FFS file system LIVE ON AIR. Long story short: you should go install NetBSD on a Pi.

ogg 6d4b01d5609a6b22e1f5f3fc0922db2f351b5afc74860c7d78cd9c752a56cf19
opus f7b6454e9f11dcb8a169b3e13cfde4e0a91b05731ab82a1b1ccb875c5f8ac9b1
m4a 676ce7a4dcb4244b62ae4da0d6a121734de8f4a12801fedeb2276de816740c67
spx 15c7c108c392ed36a5308d4faedc41c3e7511a865147bd61d37b8fd0ea4473e7
Links:
NetBSD.org
Raspberry Pi page on NetBSD.org
Journaling Versus Soft Updates: Asynchronous Meta-data Protection in File Systems

Listen: Ogg 12x13 | Opus 12x13

2018-03-25T20:25:57Z

Learn how to use Slackware tag files to customize a Slackware install, plus the secret of how to perform a Slackware install in less than half a gigabyte.

ogg b0ec5f9b9f526f014ebc4c955e5da0edf4e96be1e19715165f9ef91ab43a87c5
opus 3bf9392a3588eba39f246824c27008cdf4de4df4abe5f73a87a158bfcf32079f
m4a 4bc268aebb5c954eaa1c2f74534f765c32e603585b5f4e13068532058048ba38
spx 2faa5a43d261f27798c108522c219e60335ad090fdc7301a556617c46768a810
Links:
Outdated but useful: minimal Slackware install

Listen: Ogg 12x12 | Opus 12x12

2018-03-19T09:59:01Z

Exploration of the Slackware install set continues with inotify, some install scripts, ISA plug-and-play, jfsutils, kbd, kernel packages, with a few detours into the world of gzip redirection, some stuff about grep, and a howto on compiling the Linux kernel.

ogg e1ce088d19e7318c29745a954eff2b509c44db44fa3ca5406d1dae4fde41a6a0
opus efe2d643f7a7d854be5d30162e3e23b0fb31d9f95fc953322e297d23d84230ba
m4a 42567f78abdc4122984c46e0e173a882200978d3473a32f743516c0522c15d94
spx 65963bd87271b49a31a00e105c196326b4d382bf96c282087453ed3f61fa3d84
Links:
Slackware package list

Listen: Ogg 12x11 | Opus 12x11

2018-03-12T09:37:34Z

Klaatu gushes over Porteus, the portable Slackware distribution.

ogg 951dbd39a435001fd1818acadac123444ad9fc370ecbfcae15d6a7b88f895374
opus f93f7fd4c53d02714b48343882124e66f444aa0ab57c7bedbbc57a57cbf7c9bf
m4a 35a68a194e65338248ab5914e47fca24f9def3a382ed5158252d519993c15569
spx 245f8241c6be33ce663b7edc5985394153ec3375d07fc3afc31919784390dcf5
Links:
Live Slackware from Alien Bob
Porteus

Listen: Ogg 12x10 | Opus 12x10

2018-03-05T18:15:26Z

Klaatu tries pkgsrc on Slackware, and you won't believe what happens next. But to sum it up: it's super easy to implement, easy to use, and pretty nifty.

To get pkgsrc on your Linux OS:

Download:


  $ wget ftp://ftp.netbsd.org/pub/pkgsrc/current.pkgsrc.tar.gz

Extract it to /usr:


  # su -
  # tar --extract --verbose --file pkgsrc.tar.gz -C /usr

Bootstrap pkgsrc:


  # cd /usr/pkgsrc/
  # ./bootstrap

Adjust paths:


  # echo "PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin" >> ~/.bashrc
  # echo "export $PATH" >> ~/.bashrc  
  # echo "MANPATH=$MANPATH:/usr/pkg/man" >> ~/.bashrc
  # echo "export $MANPATH" >> ~/.bashrc

Build something:


  # cd /usr/pkgsrc/foo/bar
  # make install
ogg d33c41ab7665166611763ff41ca50550fb523d79ac9326b56aae56f03e2c2a98
opus eff6e9e57a56e5a8a056d0b5536e8220aeb41a58600f4d42eea06954e9091365
m4a dc3511676ecf2b66e0796e3f2f3784ce56f07dc5c1178faf3d3959660f797504
spx 7a7b37a46d18ca484e2bb5db05342a20a2c1aa136e81c8255fd5b303abbce6fd
Links:
pkgsrc

Listen: Ogg 12x9 | Opus 12x9

2018-02-26T15:41:56Z

A bunch of listener feedback. Hear about old time sci fi internet shows, runtimes, and much much more, not the least of which is an open source audio converter powered by LibreOffice spreadsheet.

ogg f7bb79ddb88065a8995aea87ef3f87d1f8293e206f871e77dae3dfe996b1d44e
opus 2e4a43d1df02ec77e5c2c12d265bfb9c89d1f79482000810c4373d8bd63ba53a
m4a edb0491f78fbcdcecfa1d645db5d900e82aef4c793065ea344ab4055ced95389
spx f042f2850f5144f9fcac29d72b4de6640169bb86c432cf9071a6167735ba4f6e
Links:
Claybourne, a Kiwi SF radio drama from the 90s
GNU docs on CHM, worth reading for the dedication alone
Sheety Audio Converter by Doru
Resolving HDR with spreadsheets by Kevin Chen

Listen: Ogg 12x8 | Opus 12x8

2018-02-19T12:09:32Z

We hope you find this episode useful.

Here are Ken Fallon's shownotes:

A good alternative to ls:

find -ls

Find this, and then do that:

find -type f -iname "*txt" -exec grep cows {} \;

Identify symlinks when I need to redirect stuff from one data store to another:

find -type l

Useful for listing just directories, and getting around the annoying habit of ls *, which returns the files in sub dirs.

find -maxdepth 1 -type d

The prune option can exclude results:

find . -iname "*.wav" -type f -o -prune "./foo"

Identify empty files:

$ find -empty
foo

$ find -empty | xargs --max-args 1 trashy

As a cron job to remove old log files

0 23 * * * find /var/log -iname "~*" -o -iname "*log*" -mtime +30 -exec
trashy {} \; > /tmp/removing-old-logs.txt 2>&1

The mtime option allows you to limit a search to files older than, but also files newer than, some value * 24. It's great for when you bring up a new service that's logging something but you don't know where.

For bash scripts, I use this format a lot:

for foo in $( find /var/tmp/ -type f -name "foo.bar");do echo $foo;done

or like this

find /var/tmp/ -type f -name "foo.bar" | while read foo;do echo $foo;done

It's amazing how often I run this

find -type f -iname "*.something" -exec ls --full-time {} \;

or this

find -type f -iname "*.something" -exec grep something {} \;

Usually I throw in the -maxdepth option to limit the search depth.

Use the ipath or iwholepath to scrub a path for a string.

find -ipath "*something*"

Then there's this type of construct for tools like ffmpeg and xmlstarlet that don't love wildcards from for loops.

find -type f -iname "*.xml"| while read i;do xmlstarlet sel -T -t -m
'rss/channel/item/enclosure' -v '@url' -n "${i}";done

Then there's the awkward way it handles multiple options:

find \( -ipath "*foo*" -o -ipath "*bar*" \) -exec rm -v {} \;

Note: locate and updatedb use find in the background.

ogg 214eb2263e77756db83e8de06707140d69f59f8509969cd1496e62c4a9f0b565
opus 926aa00e84291ee63cec104d63c4b50aeda9ddd0051dd8390b736c172ca41cc2
m4a d32bf729beecb964cb8503b99a405256f3ecf446fd7f3f4debe0f4610a8339ed
spx 3455e9da8dc9ab89ed7250a03e0a05597e7b615b94262fe6f916f87d6165994e
Links:
GNU findutils
GNU findutils user manual

Listen: Ogg 12x7 | Opus 12x7

2018-02-14T14:30:00Z

Klaatu, whilst stranded in a hotel somewhere in middle America after a delayed flight, reviews his new InkBook Classic 2 ebook reader, which has replaced his broken Kobo n905.

ogg 91c0d0d74e6b8627d39bf08d5a413afca3027ee5e0cd4376a69197769eae9f91
opus c9a76591f76c4c1bcec2b3ab27bb9200f91a10a3d8594dc8ec291cdbe503b02d
m4a bfa632431d079143a1e3cd174ec26c5e26db7cbf8736b05aa775d80f15c0d6a0
spx 9761c843563583d580ae1efaf4c3d00aa5596eaa03c34738a57f92102fc09912
Links:
Android open source

Listen: Ogg 12x6 | Opus 12x6

2018-02-08T04:44:37Z

Klaatu expounds upon xargs and talks GNU parallel. Also, a bit about the concept of runtimes.

Here is a recent real-world benchmark comparing parallel to xargs:

$ time find . -type f -name "*.wav" | xargs -I% --max-args 1 sox % %.flac

real    1m5.364s                                                                        
user    1m3.907s                                                                      
sys     0m1.424s

$ time find . -type f -name "*.wav" | parallel -I% --max-args 1 sox % %.flac

real    0m22.743s
user    1m21.780s
sys     0m1.400s

ogg 83bde56b08fb15cf7e554491b4e9df6e46efc04102e3afb5555852d6349679ff
opus f8c46c403f504773c8e7a64f5e2704bcaa3a554f1d3edf721513df5ae39ee52a
m4a 9619b9e2127e1b65e278689d0c7ed36ca7ef075cd6b8e1d5f30de765b507f88a
spx e15a070c75ff9ac30de5fd1c0d5a62aa3f29c3d599146739568c65bbe31a3671
Links:
GNU Parallel
Dark oCCult build script using GNU parallel

Listen: Ogg 12x5 | Opus 12x5

2018-01-27T20:06:25Z

All about the GNU xargs command.

ogg 2befbf2c6eb24428db2acbe7b007020e4bdafd4b7f1b98578f16a67f52d72474
opus 5580e2b1117144b058211b6ce80530cb75b7bc4d49745a0aa4e969fdd677cfd2
m4a d07d8e3df085cd0707cb50bcad7a0a2e84d54d96926ba4bf4c69366441cbcc45
spx d81696b9a1a30445ff4c202890528fe225fc146c0395a85ee9765111b0a16bdb
Links:
GNU findutils

Listen: Ogg 12x4 | Opus 12x4

2018-01-23T22:06:18Z

A bonus episode this week. Klaatu talks about getty, agetty, inittab, gawk, and more.

ogg 17356498562df4a04957c1dc6f02107f26152eace77c870246cf2b5efdace891
opus b7368c425abbe8197f4f26df4659392e16270754f9256d6fbeef7d4f5eb21853
m4a c1bdb98b86ede5b44ac2d012a8f6fe1833da6124b7af7cd79bff80637b5734bb
spx 8e6cda517a81167279020fb2270c6821c692ca91a9b74646a69e41eacd141789
Links:
History of BeOS
Haiku is an open source BeOS

Listen: Ogg 12x3 | Opus 12x3

2018-01-23T04:33:47Z

Klaatu talks about BeOS, Haiku, elvis, e2label, mlabel, and much more. Either next week or the week after, let's do an episode on find. Send Klaatu your cool find hacks!

ogg 6d85516bd7276a97e49d00b127e4d292181943dc498a6575c7ff99b17a887360
opus aedd88aebfabec05f929bc2dde170b69f608cbff1ecb2c895555514a19d92583
m4a 6aa537ac0950bf48556396cc95d1823bd55e2803e3e11225845d0de9437dc14f
spx 5ccae4b3c0261c621829b0be49422d5971d9af2b4c6457ab67c31d611196630a
Links:
History of BeOS
Haiku is an open source BeOS

Listen:o Ogg 12x2 | Opus 12x2

2018-01-15T01:56:19Z

Klaatu introduces his podwrite tool, his custom toolkit for publishing this show and his Chronicles & Commons show.

ogg 062f6eda50a5c9d3177bc7725ca5fd21d9b6043e0a2dd6eac43cf03837d6a5d3
opus 2ca99f7280a7cfeb785009cd37947adaa098161c727fd3534b2401d8b9598c75
m4a d8b7c8bb8e8ab9a1a6fda60d049473fb1cf493498da9a51b362a812b53f1d620
spx e73db40f6992fe9e64cf175c0f9b734804ce01e499c2633428c927c5aa1f153a
Links:
Podwrite on Gitlab
Podwrite documentation
The excellent Wordpress plugin, Podpress, is easier but harder to automate

Listen: Ogg 12x1 | Opus 12x1

2018-01-08T15:38:02Z

Klaatu continues his tour of the low level Linux filesystem, covering exciting commands like attr, the GNU coreutils, infocmp, and more.

shasum -a256:
ogg dd7e999b1e9eebf835ab0a18a7f70850422fbf610cf033d640bd219c5ad77491
opus fedc55bd11e6c780710d36dadcc3dae2bd40af3d0633c5690d2efa44157fe3e6
m4a d55b2da937801664fc2258cb1e38a965446587092df895b5485703200af55e25
Links:
Linux from Scratch

Listen: Ogg 12x0 | Opus 12x0

2018-01-01T18:02:05Z

Linux user, know thyself. It's a new year and a new season, and the GNU World Order is now officially an Ogg Vorbis and Opus cast. Although there is no speex feed now, there is no need to update your feed. The old speex feeds are symlinked to the new Opus feed.

In this episode, Klaatu takes a look at all those little files that get installed when you install Linux, like libgmp, libglib, libgobject, libpanel, libusb, and many many more.

shasum -a256:
ogg 5468697f0d58ba413a5038196b41efb8a319e5e66f726ab62468993f67b1ac17
opus 38a71ad2fe11728cdf83d00aff69f3a52904cd1b9b0b5a1a191f776e15b3bf8d
Links:
Slackware package set a