Linux Format 198 (Sampler)

Page 1

REVIEW: Google Pixel (2015) chromebook

60

Pages of tutorials & reviews! Build a Pi 2 file server Hack your router Discover SystemTap

review the amazing + We Dell XPS 13 Dev Edition

Get into Linux today!

UBUNTu 15

.04

The definitive guide to the latest version

Full details, every new feature explained Systemd Kernel 3.19 Unity 7.3 Major new apps MATE edition

Is your free DVD missing?

Pay it forward When you do an open source project, everybody gets the exact same opportunity PayPal on embracing open source p40 System coding

Roundup

Essential code to track file system changes

The fastest & securest remote solution revealed

Kernel comms

Remote desktops

Secure

Linux How to avoid the growing malware and exploit threat

TuxRadar.com

Speak to your newsagent now!



Welcome Get into Linux today!

What we do

We support the open source community by providing a resource of information, and a forum for debate. We help all readers get more from Linux with our tutorials section – we’ve something for everyone! We license all the source code we print in our tutorials section under the GNU GPLv3. We give you the most accurate, unbiased and up-to-date information on all things Linux.

Who we are

This issue we asked our experts: What do you think Canonical should be adding in to Ubuntu?

Jonni Bidwell I kinda wish they’d make it brown again. And give up with Unity. If you want a weird desktop that half thinks it’s running on a mobile device then Gnome 3 is perfectly suitable. Oh and maybe bring back a competitive version of the Ubuntu One cloud storage. Not sure if it would be called Ubuntu Two, Ubuntutu or Ubuntu Zero.

Matt Beilby With each iteration, I respect what Canonical are doing with the Unity interface just a little bit more. But the release that I’m waiting for is the one that finally makes it feel as if that respect is mutual. Even after all these years, I still yearn for the comfortable inefficiency of a horizontal launcher.

Les Pounder I’d love to see a version of Ubuntu that is built for the maker community. Something that has Arduino, 3D printers, prototyping software etc all installed as standard and ready for me to get tinkering. This would enable many to dip their toe into the great maker culture that’s growing while lowering the barrier to entry.

Mayank Sharma Ubuntu One! Sure, cloud storage services are a dime a dozen these days but Canonical’s service kind of grew on me. I thought it was wonderfully integrated into the desktop by the time it folded. Even its mobile app was nicely done and offered DRM-free music on its music store, which was an obvious plus.

Shashank Sharma I’d go for flawless voice activation, along with maybe a head, all limbs and a sunny disposition. It would make the perfect automaton. But make it so the keyboard junkies can still muck about with the command line, in case they need to tweak its personality routines. And throw in a wristwatch, because they’re all the rage.

Ubuntu’s back, baby 2015 will be remembered as a big year for Ubuntu and Canonical. Not only did it release Ubuntu Phone, Snappy Core, its cloud offering continued to grow and Ubuntu 15.04 was released, introducing seismic changes to its GNU/Linux system. The biggest introduction is that swear word (at least to some) Systemd. Love it or hate it, Systemd is here and it’s here to stay. With the introduction of Debian 8, the init on all the major distro branches will be Systemd, and this wasn’t a hostile invasion, it was chosen democratically and on technical merit. By the time you’re reading this, the only major distros not using Systemd will be Slackware, PCLinuxOS and Gentoo (where Systemd is an option). Now that Ubuntu with all of its many, many dependant offshoots has adopted Systemd, we’ll see it appear in all the major – and not so major – distros. We think this is a good thing, SysVinit on Linux is over 18-years old and is a creaking infrastructure of scripts, which certainly didn’t keep to the Unix philosophy of doing things well or simply. So this issue we’re delving into Ubuntu 15.04; pulling it apart and revealing its new inner workings. You’ll discover how to get it up and running, how to take control of Systemd and the new flavours of Ubuntu that are available like Mate. It’s always an exciting time and just as exciting is the introduction of our new regular Raspberry Pi section on page 60. Instead of just dropping Pi reviews and tutorials around the magazine we’re combining these into a regular section, so you always know where to get your fix of Pi each month. As it’s also such an important force now in UK education, we’ll be keeping tabs on what the Raspberry Pi Foundation gets up to each month right there, too. Just as exciting is the review of the sleek Dell XPS 13 Developers Edition, which comes with Ubuntu installed, the new Google Pixel (2015) and a new ASUS Chromebook 15. There’s no doubt it’s an exciting time to be part of the Linux world.

Neil Mohr Editor neil.mohr@futurenet.com

Subscribe & save!

On digital and print, see p30 www.linuxformat.com

June 2015 LXF198    3


Contents

“Hack with only Linux in mind and experience the freedom it offers.” – Lennart Poettering

Reviews Asus Chromebook c300...16 A sweet next-gen Chromebook that offers the power and features without the price.

Dell XPS 13 Dev Edition... 17 Here’s the main event, the new 2015 Dell XPS 13 shipping with Ubuntu. It’ll turn all your MacBook-owning friends green.

The new 2015 Dell XPS 13 looks as good as it runs, awesome stuff.

Ubuntu 15.04 Now with Systemd! Discover all the new features of this landmark release p32

Roundup: Remote desktops p24

Google Pixel (2015)...........18 If you’ve got deep pockets and a love for Chromebooks, this is the model for you. We test drive the new Pixel from Google.

The new Google Pixel runs and looks amazing, so much choice!

Bluestar Linux....................19 Check out an Arch-based KDE distro that’s chock full of apps and uses Pacman.

SuperX 3.0.......................... 20 Can another KDE-based distro really be that super? We’re not sure adding a EULA helps.

NethServer 6.6....................21 A ready packaged Linux server distro, which makes everyone’s life easier. Nice.

Unity 5.0............................. 22 Finally fulfil that dream of becoming a game developer with the low-cost indie-favourite now supporting Linux as a platform.

Interview You’re not just writing code, you’re actually doing something for society. How PayPal caught the open source bug p40

4     LXF198 June 2015

www.linuxformat.com


On your FREE DVD Ubuntu 15.04 64-bit, Ubuntu 15.04 32-bit, Android 4.4 x86

Only the best distros every month. PLUS: Hotpicks, Roundup and more!

p96

Raspberry Pi User

Subscribe & save! p30

Don’t miss...

Pi news.................................... 60

Secure Linux!......................... 46

A special welcome from Liz Upton and all that’s new from the Raspberry Pi Foundation.

But Linux is already totally secure, right? Wrong. We delve into the current raft of exploits and Linux malware and how you can protect yourself.

Review: Explore HAT Pro.......61 Discover the latest expansion from Pimoroni. Is another HAT worth your outlay?

LEDs and the GPIO............... 62 New to the Raspberry Pi? Want to get started with programming the GPIO? Well, here’s an ideal project to get you started.

Build a Pi 2 server................. 64 Tap the true potential of the new Raspberry Pi 2 and fire it up as a full-fat Linux server.

Hackers are coming for your server.

Coding Academy

Tutorials Performance Sys_stat.............................. 70

System coding: CLI arguments....................... 84

Sean Conway poses a sysadmin’s question on performance, then using sysstat provides an insight into developing an answer.

We’re not starting arguments with Dr. Chris Brown, we’re processing them, which is more productive and can be done in C and Python!

Systemd Using Jounalctl..................74

Scala primer.......................... 88 The popular programming language is right up Mihalis Tsoukalos street as he loves a bit of functional programming, though Scala is flexible enough not to do just that.

We’d never accuse Neil Bothwick of being a proper journalist, so he explores and uses the features of Systemd journal instead.

Regulars at a glance News.............................. 6 Subscriptions............30 Back issues................68 Details of the Linux kernel 4.0 are here Amazing offers on all editions or else

You mad fools, why did you miss Dr.

and it’s sounding pretty epic. Ubuntu

Brown’s last coding tutorial? Quick

15.04 attack the cloud and more.

Mailserver.................... 11

it’s an Ubuntu Phone for you!

Sysadmin....................50 Mr. Brown is late, very, very late, but

snap up LXF197 while you still can!

Next month................98.

What’s grinding your gears this

there’s a good reason, he’s been

We’re thundering towards issue 200,

month? 32-bit distros and people

trying to attract women into the

but we have to print issue 199 and

wearing wizard hats, but there’s a lot

system administrator profession and

our Build a Linux PC feature!

of love for the rest of us 64-bit users.

playing with containers.

User groups.................15 HotPicks.....................54 Les Pounder is worrying the

Alexander Tolstoy might be Russian,

neighbours, asking about their LUG.

but he’s not drinking vodka, oh no,

Roundup.....................24

source software. Tipples to try:

Jonni Bidwell won’t come into the

Shotwell, Linphone, Fiziko, Audacity, Brackets, Netsurf, Geary, Pasang

desktop and his work is still virtual.

Emas, FreeCol, VirtualBox, FreeMind

Advanced monitoring SystemTap......................... 76 Mihalis Tsoukalos explains everything that you need to know to take the plunge and start using SystemTap on Linux with his hands-on guide to the built-in Linux monitoring system.

Hardware Hack your router.............. 80

he’s drunk on the wonderful open

office, he’ll only work through remote

The daemons are out to get y’all.

Our subscriptions team is waiting for your call.

www.tuxradar.com

Delve into the embedded open source OS that is DD-WRT. Matt Beilby gives you a rundown on how to power up the device at the heart of your home network.

June 2015 LXF198    5


This ISSUE: Ubuntu 15.04

Docker funding

Audacity’s future

Debian 8.0

Kernel news

Linux 4.0 and beyond The 4.0 kernel had a quiet launch, but 4.1 is already under way.

L

inux 4.0 has been released, but if the launch of a seemingly major release passed you by it’s thanks to a relatively straightforward and drama-free process. Sometimes when it comes to kernel releases, boring can be good. Linus Torvalds wrote on the Linux Kernel Mailing List to explain the reasons why the kernel was released on schedule: “Linux 4.0 was a pretty small release in linux-next and in final size, although obviously ‘small’ is relative. It’s still over 10,000 non-merge commits. But we’ve definitely had bigger releases (and judging by linux-next v4.1 is going to be one of the bigger ones)”. A fair few people might have expected a few more fireworks and headline features to come with a version number change release, but Torvalds seems pretty relaxed about 4.0’s lack of pizazz: “Feature-wise, 4.0 doesn’t have all that much special. Much has been made of the new kernel patching infrastructure, but realistically that wasn’t the only reason for the version number change. We’ve had much bigger changes in other versions. So this is very much a ‘solid code progress’ release.” Although Torvalds is playing down the features of 4.0, there are still a few choice updates to get enthused about. No-reboot patching is a prime example – it might not get the pulses racing, but it’s an incredibly convenient feature that will allow us to apply security patches and OS updates without the need to reboot our machines. Day-to-day Linux users will of course benefit from this, but the biggest beneficiaries of no-reboot patching will be web and cloud hosting services, which would normally need a restart, causing downtime for customers. Third party projects such as Oracle Ksplice

6     LXF198 June 2015

and Kpatch have brought live patching to Linux before, but it’s good to see it included in the kernel. Other features include improvements to Intel Skylake, Intel Quark SoC support, file systems tweaks to F2FS, BtrfFS and more, and various driver updates. If you’re one of those people who didn’t update their PlayStation 3 and can still run Linux on Sony’s games console, then there are a number of patches included to improve performance there as well. Distros are already working to implement Linux 4.0, with Red Hat announcing that Fedora 22 Alpha is already based on the PC1 version of 4.0. A spokesperson commented that “once we are certain that the next iterations of the Linux kernel, be it 4.0 or later, has the features and maturity that our customer base requires, we will begin packaging it into our enterprise portfolio with the intention of supporting it for 10 years…” Mark Shuttleworth, founder of Canoncial, also confirmed that Linux 4.0 will be included in Ubuntu products later this year, telling The Inquirer that the integration will “likely to be in this

4.0 Linux 4.0 is here! It’s got a shiney new number scheme, but otherwise it’s a rather low-key release.

“No-reboot patching is an incredibly convenient feature.” October release.” Although Ubuntu 15.04 has just released with 3.19, you can install Linux 4.0 already by getting the packages from Canoncial’s mainline kernel archive at http://kernel.ubuntu. com/~kernel-ppa/mainline. If you’re a little disappointed that the kernel release that ushered in a new

www.linuxformat.com

version number is nothing to get too excited about, at least you won’t have too long to wait for Linux 4.1, which, as Torvalds hinted at, will likely be a more extensive release. Within hours of the announcement of 4.0, 100 code changes had already been committed for Linux 4.1. These included restructuring changes, speedups and fixes in the x86 system call, irq, trap and other entry code, signal handling fixes and new x86 testcases. Although the speed of these code changes is impressive, there has been some concern that these changes could impact the x86 compatibility of the Linux Kernel. There are inherent risks involved with these kind of changes, though we have been assured that the developers have tested the code on a wide range of x86 boxes to check for regressions. Get all your hot kernel updates at www.kernel.org


Newsdesk distribution news

Vivid Vervet is in the wild Ubuntu 15.04 is here (and on this month’s DVD).

A

lthough Ubuntu 15.04 “Vivid Vervet” doesn’t ship with Linux 4.0, it does seem to have taken a similar light touch stance with this release, coming with a few solid improvements. This means bug fixes and usability improvements are the main order of the day, but there’s still a huge amount to get excited about and it leaves this release of the popular Debian-based distro, as one of the most solid and reliable feeling operating systems around. The controversial switch to the Systemd init system is present and correct, along with improvements to the Unity desktop environment with the 7.3 release. The Compiz window manager has been updated to 0.9.12 and plays nicer with alternative desktop environments. Although Ubuntu 15.04 is sticking with a Unity 7.x release, rather than the upcoming Unity 8, which will converge desktop and mobile versions of Ubuntu, according to Canonical 15.04 does form the base for the OS running on the BQ Aquarius E4.5 – the first commercially available Ubuntu Phone, and will be making its way to devices in the following weeks. Perhaps the most exciting thing about Ubuntu 15.04 is the inclusion of Snappy Ubuntu Core, a lightweight, yet secure,

build of Ubuntu that’s been designed from the ground up for Internet of Things devices – such as smart TVs, fridges and thermostats that will now be able to run a version of Ubuntu. Snappy supports both ARMv7 and x86-64 platforms and needs a least a 600MHz CPU, 4GB flash storage and 128MB of RAM. As well as home automation, Snappy will bring Ubuntu to drones, robots and much more, with a cloud interface and app store to bring a range of features that will make these smart devices even smarter. http://developer.ubuntu.com/en/snappy

Ubuntu 15.04 is now out, and it’s the first release to include Snappy Ubuntu Core for IoT devices.

container news

Docker wants $95m

Cash will help the team focus on long-term priorities.

D

ocker has just announced a new round of funding – labelled Series D – in a bid to raise $95m. This ambitious target will apparently help Docker deliver on a number of long term priorities, many of which were laid out at last year’s DockerCon event. The cash will also be used to deliver product, support and “community enablement”, all designed to keep up the not insignificant momentum that Docker has recently been building. This new round of funding follows hot on the heels of the Series C, which closed in September 2014, and Docker has been keen to stress that it doesn’t have an imminent need for additional funds, and is still a relatively small company of 120 full-time employees. Docker is still spending money that it raised back in its B round, so it hasn’t been splashing the cash willy-nilly. Docker’s rapid rise to success has

instead necessitated a further round of funding now so that it can support its popularity while preparing for what the future holds. Since the C round of fund raising, Docker has increased its contributors to over 1,200 while ‘Dockerized’ apps in the Docker Hub have grown to over 100,000. At the beginning of January 2014 there were 100 million Docker container downloads but that has now grown to over 300 million. At the moment Docker’s new round of fund raising certainly looks like a sign of strength, rather than weakness, so let’s hope that trend continues. Find out how you can contribute at www.docker.com. Docker is going from strength to strength, but it’s still after funding. A lot of funding.

www.tuxradar.com

Newsbytes LibreOffice is jumping from 4.5 to 5.0, but in a similar fashion to the latest Linux kernel update, this version number change concentrates on smaller bug fixes and updates, rather than ground breaking new features. Included in this update is better Microsoft Word compatibility, improved conditional formatting in Calc, improvements to PDF creation and updates to the user interface. Head over to www.libreoffice.org for more information. While new versions of the Linux kernel and LibreOffice haven’t ushered in a host of new features, Audacity, the popular free and open source audio editing software, has bucked this trend with version 2.1.0 which brings in a number of powerful new tools including real-time FX preview for LADSPA/VST/AU plugins, support for LV2 plugins, and basic spectral editing. However, the team aren’t resting on their laurels following this major update, and in a wideranging interview over on Libre Graphics World http://bit.ly/ AudacityInterview, the future of Audacity was laid out. One of the biggest changes will be to make the software easier to use for budding “bedroom musicians”, planting Audacity’s tanks firmly on GarageBand’s lawn. The release of Debian 8.0 “Jessie” was certainly hotly anticipated, but one surprising company marked the occasion with a party: Microsoft. The Redmond-based company’s Openness Team threw the party for the LinuxFest Northwest event, with Jose Miguel Parrella, a Debian developer and member of Microsoft’s Open Source Strategy team acting as host. Cake was included and attendants were told about how Microsoft Azure will bring Debian projects to hyperscale, which is at least slightly better party entertainment than a creepy clown.

http://bit.ly/LXFopenMS

Debian had a birthday celebration held by… Microsoft.

June 2015 LXF198    7


Newsdesk Comment

Editing on Android Michael Meeks This month Collabora has delivered the Android editing infrastructure work that we’ve been chewing through for the last months. This was funded by The Document Foundation – in turn funded by our stream of generous donors – a large volume of whom routinely give small sums which really add up; many thanks to our supporters. The work breaks into two parts: extending and improving the LibreOfficeKit API, and then using that to create the editing infrastructure for Android. LibreOfficeKit was created by a Google Summer of Code Student last year, and makes it trivial to take out the rendering and file-format converting core of LibreOffice and re-use it around the place.

Editing UI Editing was a new use-case for this API and a vital one, shared by both the Android Editing UI and by LibreOffice Online. We worked on the core to expose the concepts of selections through new APIs, covering such things as images, drawing shapes, table elements and, of course, text spans. Then we added UI elements to render selections of various types, such as pretty touch-suitable drag-handles, and alpha transparent selection polygons. A major advantage of doing this selection work on a separate layer, is that it avoids the need to redraw tiles for each change in selection – giving a smooth and responsive feel for ODF editing on Android. Our test-harness for this work: the GTK+ tiled viewer has attracted a student for Google Summer of Code 2015 to integrate it into Gnome Documents. My hope is that by enabling new shells for editing and viewing, we will go on to catalyse a flowering of UI innovation in productivity around the Linux desktop that we can all enjoy. Michael is a pseudo-engineer, semi-colon lover, SUSE LibreOffice hacker and amateur pundit.

8     LXF198 June 2015

Hitting the mirrors What’s behind the free software sofa?

GCC 5.1 The latest version of the GNU Compiler Collection has been released, bringing a number of powerful new features including C++14 language support for the C++ front-end and complete C++11 support for the Standard C++ Library. GCC 5.1 also defaults to C11 mode with GNU extensions for the C front-end, making life a lot easier for many users. IPA Identical Code Folding pass, OpenMP 4.0 support for Intel Xeon

Phi accelerators and OpenACC offloading support is also included. To find out more and download GCC 5.1, head over to https://gcc.gnu. org/gcc-5. The GNU Complier Collection has had a major update with a number of powerful new tools included.

Kubuntu 15.04 Ubuntu 15.04 is now out, which means a number of distros based on Canoncial’s operating system have also had major updates. Both Kubuntu (with the KDE desktop environment) and Xubuntu (which uses the Xfce 4.12 desktop) have been updated to 15.04. Kubuntu comes with Plasma 5, the latest version of KDE’s desktop, which has been rewritten to provide a smoother user experience.

A number of bug fixes and translation updates are included, while several applications have been updated to support the new desktop environment. www.kubuntu.org. Kubuntu has been updated to be in line with Ubuntu’s recent release, version 15.04.

Webconverger 28.0 A new update to Webconverger, a specialist Linux distro specially designed for web kiosks has been released for download. The big headline feature of version 28.0 is the instantupdate API, which enables users to change the home page on devices remotely in an instant without the need to restart the

machines. A host of security updates and bug fixes have also been included. Webconverger 28.0 is based on Debian 7, but a major update is due to bring Debian 8 “Jessie” to the distro. http://webconverger.org.

IPFire 2.17 Core 89 A new update to one of the best specialist firewall distros has just been released and it brings a number of helpful new features to IPFire that include OpenVPN Net-To-Net Statistics, giving users a collection of statistics for OpenVPN connections. A Dynamic DNS Updater tool, ddns, has also been extended and improved, enabling ddns to hold off updates if they have failed to be

www.linuxformat.com

implemented, and waiting for a period of time before attempting the update again. For more details head to www.ipfire.org. IPFire, based on Linux From Scratch, does a fine job of protecting your network.



rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe ue: clock.tick(30) for event in pygame.event.get(): if event.type == pygame.QUIT: exit(0) #!/usr/bin/perl $numstars = 100; use Time::HiRes qw(usleep); use = new Curses; noecho; curs_set(0); for ($i = 0; $i < $numstars ; $i++) { $star_x[$i] = rand(80); $star_y[$i] = rand(24); $star_s[$i] = rand(4) + 1; } while (1) { $scree 0; $i < $numstars ; $i++) { $star_x[$i] -= $star_s[$i]; if ($star_x[$i] < 0) { $star_x[$i] = 80; } $screen->addch($star_y[$i], $star_x[$i], “.”); } $screen->refresh; uslee rubyracer”, “~> 0.11.4” group :development, :test do gem “rspec-rails”, “~> 2.13.0” $ gem install bundler $ gem install rails --version=3.2.12 $ rbenv rehas list --skip-test-unit respond_to do |format| if @task.update_attributes(params[:task]) format.html { redirect_to @task, notice: ‘...’ } format.json { head :no_conte ml { render action: “edit” } format.json { render json: @task.errors, status: :unprocessable_entity } $ bundle exec rails generate migration add_priority_ nteger $ bundle exec rake db:migrate $ bundle exec rake db:migrate $ bundle exec rails server validate :due_at_is_in_the_past def due_at_is_in_the_pas TGG03 2015 _at, ‘is in the past!’) if due_at < Time.zone.now #!/usr/bin/en python import pygame from random import randrange MAX_STARS = 100 pygame.init() screen = et_mode((640, 480)) clock = pygame.time.Clock() stars = for i in range(MAX_STARS): star = [randrange(0, 639), randrange(0, 479), randrange(1, 16)] stars.appe

FULLY REVISED & UPDATED EDITION

POWER UP YOUR LINUX SKILLS • THE KERNEL • NETWORKS • SERVERS • HARDWARE 180 PAGES OF TUTORIALS MASTER NEW SKILLS YOU CAN APPLY TO ANY PROJECT


Write to us at Linux Format, Future Publishing, Quay House, The Ambury, Bath BA1 1UA or lxf.letters@futurenet.com.

Through the Arch First of all I want to thank you guys at Linux Format for the great job you do to bring us good quality Linux information. I’ve been using Linux since 2010, when I first discovered Ubuntu Linux after my PC got a BSOD and I had to wait two weeks for Dell to send me the Windows XP Recovery discs. I loved Ubuntu then and still love it now. Ever since then I’ve also played around with other distros and being a subscriber of your magazine I’m always delightfully treated to new distros that I otherwise would never had heard of via your DVDs. Linux Format will often have tutorials or feature articles on installing Ubuntu, Linux Mint etc for first time users, which is great. However, I was wondering if there’s a possibility that you guys do some sort of tutorial on

a very basic installation of Arch Linux for those of us who are willing to venture into nonmainstream distributions in order to learn the inner workings of Linux. Before you answer me I’d like to add that: yes I’m aware that the Arch Linux wiki is complete, very detailed and the best source for installing Arch Linux. Having said that, the main areas that make it difficult for someone like me is knowing what exactly it is that I absolutely need to get a system running. I’ve tried following the ArchLinux wiki while trying to install on VirtualBox and I’ve failed twice. Oscar Rivera, via email. Neil says: Jonni thinks Arch is awesome, you will too, once you’ve finished tearing your hair out. Jonni ran a feature on

just this topic [See Arch Linux: your Flexible Friend, p48, LXF188], he’s a big fan of Arch and even contributes to kernel tweaks for an obscure Asus netbook build, bless him.

Too complicated It’s all very well the magazine raising awareness of virus and trojan activity [Newsdesk, p6, LXF194], but it does nothing to help the non-geek domestic Linux user to tell him or her to “check outgoing traffic for connections to news-bbc. podzone.org or 80.248.65.183” as that ‘advice’ is gobbledygook. You need to say explicitly what and how the user is expected to do this! And following that, how to interpret whatever is the result of this action, and what steps to take following its results. All your Newsdesk item does in fact is to

Letter of the month

I

D for decorum

have been buying your magazine for a few years now and I always find it entertaining and helpful. I found the ‘Debian keeps Systemd’ article [News, p6, LXF183] a little disturbing. I will go and find the issue and read it again [Ed - it’s actually called Systemd kills Upstart]. It appears from the article that the Debian council held a democratic vote to choose between Systemd and SysVint. The supporters of Systemd won so in a democratic system the opponents should accept defeat and the decision made. It appears to me that the opponents are acting undemocratically and are trying to force their view on the majority, and now because they did not get their way they are throwing tantrums and making threats. I find the comment by Joey Hess that he has a regret about the Debian constitution that

was drawn up when Debian was formed. My question to him would be ‘Why did you not table this as a discussion item at one of the council meetings and discuss it?’ Any constitution can be changed, all that is required is sensible discussion and a vote. One of my concerns is how will this fight affect the distros based on Debian like Linux Mint, Zorin, Ubuntu etc in the future? This situation has gotten out of hand and in my view is unacceptable. It puts the whole open source community in a bad light. This just gives all the Linux detractors ammunition to verbally abuse, deride and mock our community. There will always be different views and positions in the open source community. These different views and positions are what make Linux and the open source community great. People throwing tantrums and acting like children

www.tuxradar.com

is unacceptable. Even in heated debates participants should try and behave like adults and act with decorum. Philip Gray, via email. Neil says: Debian has become just another in a long line of distros to adopt Systemd and I couldn’t agree with you more Philip. I continue to see the arguments about Systemd to this day on forums and it’s kind of ridiculous when Systemd is actually now the default init in the majority of distros from Red Hat to Ubuntu, Mint and now Debian. It’s been chosen both democratically and on technical merit, the only distro of note not to use it so far is Slackware, which has always been a law unto itself. Best to focus on what the future holds. Onwards and upwards.

June 2015 LXF198    11


Mailserver scare folk without any offer of real (understandable) help. If Linux is to become mainstream in the community, you will have to come down from the Olympian heights of all-knowing prophets and approach the levels of the ordinary ‘man-inthe-street’ who uses a PC as an everyday tool, like the car, for which knowledge of what goes on under the bonnet is neither needed or of any interest to the use and user of the device. It is this approach that made Microsoft and Apple so successful – the user can simply use the device! Linux is still being run by magicians in tall pointed hats and mysterious ways. That’s not needed to use a car [Ed – indeed, a pointed hat would just get crushed], and it shouldn’t be in order to use a computer! Linux was touted as the operating system that could run on almost any old PC, but there is a clear move now – seen in LXF – to only offer updates for

Can’t get WiDi to work on Linux? Try a Chromecast.

been any example of that trojan in the wild either. However to capture any packets sent to a specific IP you can use: sudo tcpdump -n host 80.248.65.183 I totally understand your wider point about wizards, but again I’d disagree with you when it comes to your car analogy. I’m assuming you don’t service your own car? You wouldn’t expect most people to service their cars, right? But many of the things we talk about in Linux Format are low-level techniques, about getting more from the system, hacking around with the kernel, coding. We’re not Linux Made Easy magazine, though we’re also accused of being that ironically enough. Linux does have an issue with those wizards that are the ones controlling development and that’s certainly hampered its ease of use and wider acceptance. That’s where Canonical did an amazing job with Ubuntu, but even it has become sidelined with its cloud, server and phone business objectives. Personally, I feel you’re looking for flaws and finding them. I’m happy with the way Linux is growing and being used by an ever-widening group of

shane_collinge@yahoo.com

Despite the demise of 32-bit processors many years ago, we’ve supplied a number of 32-bit distro builds on the LXFDVD over the last year.

64-bit machines, thus condemning all 32-bit ones to an enforced death. This may be good for manufacturers, but not for those having to pay for the machines! All my current three (and two others kept purely to run ‘obsolete’ machines) are all 32-bit PCs. David Hockin, Portishead. Neil says: We’ve talked about this before – you do realise almost no desktop 32-bit x86 processors have been made in over a decade? (OK, there’s a couple of budget exceptions up to 2007.) The final 32-bit Intel Celeron was a mobile processor in 2006 and was being phased out of existence. Despite this we have run 32-bit Bohdi Linux in LXF197, 32-bit Tiny Core with LXF196 and more in LXF195 and almost all Linux distros still do 32-bit builds, while there’s still a strong low-resource movement and community. So frankly your last point is just wrong – and to use your car analogy it’s like someone driving a Ford Model T complaining about all these whipper-snappers overtaking them all the time. I do take your point that the explanation in the news story was entirely lacking; it was also a little sensationalist, as looking into it there hasn’t

12     LXF198 June 2015

www.linuxformat.com

enthusiastic new users and on modern 64-bit PCs with 16GB of memory – you should try one.

Mirror mirror I am a Linux user for all my personal PCs and I love using Linux and trying out many distros. I work for a company that is all Windows and Citrix environment, but I run VMware for those needs on my personal PCs. There’s one area I’ve researched and cannot find any updated info on. I was wondering if you could help me or publish something regarding my inquiry. I use Ubuntu on my Dell laptop that has a built in Intel WiDi capable wireless card that I’ve only seen Windows drivers and software for. I was wondering if there is an implementation of drivers and software that I could install to my Ubuntu laptop to use wireless display capabilities? An easily accessible GUI preferably … I have researched Miracast and there’s nothing I can find for Linux usage of wireless display. This would really excite me to be able to stream HD to my TV and never have to use Windows for WiDi. Plugging in a cable via HDMI really looks tacky and


ENJOYED READING THIS MAGAZINE? Subscribe and make great savings at www.myfavouritemagazines.co.uk


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.