ebook img

Learn Raspberry Pi with Linux PDF

273 Pages·2013·9.279 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Learn Raspberry Pi with Linux

www.it-ebooks.info For your convenience Apress has placed some of the front matter material after the index. Please use the Bookmarks and Contents at a Glance links to access them. www.it-ebooks.info Contents at a Glance About the Authors ��������������������������������������������������������������������������������������������������������������xv About the Technical Reviewer ������������������������������������������������������������������������������������������xvii Acknowledgments �������������������������������������������������������������������������������������������������������������xix Introduction �����������������������������������������������������������������������������������������������������������������������xxi ■ Chapter 1: Your First Bite of Raspberry Pi �������������������������������������������������������������������������1 ■ Chapter 2: Surveying the Landscape �������������������������������������������������������������������������������31 ■ Chapter 3: Getting Comfortable ���������������������������������������������������������������������������������������53 ■ Chapter 4: The File-Paths to Success ������������������������������������������������������������������������������69 ■ Chapter 5: Essential Commands ��������������������������������������������������������������������������������������89 ■ Chapter 6: Editing Files on the Command Line ��������������������������������������������������������������109 ■ Chapter 7: Managing Your Pi �����������������������������������������������������������������������������������������129 ■ Chapter 8: A LAMP of Your Own ������������������������������������������������������������������������������������149 ■ Chapter 9: WiPi: Wireless Computing ����������������������������������������������������������������������������181 ■ Chapter 10: The Raspberry sPi ��������������������������������������������������������������������������������������199 ■ Chapter 11: Pi Media Center ������������������������������������������������������������������������������������������223 Index ���������������������������������������������������������������������������������������������������������������������������������243 v www.it-ebooks.info Introduction Despite sounding like something Grandma would bake on Sunday afternoons or a noise that would make people glare and tut, the Raspberry Pi is in fact a computer. That much you probably knew (although, let’s be honest, the name and logo don’t really give much away) but the Raspberry Pi promises more than that. An awful lot more. The venerable Commodore 64 was released in 1982, and with sales reaching upwards of 17 million, it is often considered the best-selling computer of all time. More importantly (at least from my perspective), it was also my first computer. For Christmas, just before my ninth birthday (when the C64 was nearly a decade old) I received the new model (C64C), which was identical to the classic machine in all but cosmetics. It arrived all set up and attached to a nice new 14-inch television (it even had a remote control!). I suspect my dad had hatched what he believed to be a most cunning plan; if he could sneak in and set everything up while I was asleep, come Christmas morning, I would be so busy playing with the computer that my parents might get an extra few minutes of sleep. Sadly, things did not go quite according to plan. Although everything was set up, and even though the television was tuned to the computer’s signal, one simple but key thing had been forgotten: it hadn’t occurred to anyone to tell me how to actually load a game. Needless to say, a lie in was not forthcoming . . . Games came on cassette tape. This was before CDs, and at least on the C64 had to be played in a special tape recorder called a datasette. (What do you mean what’s a CD?) Sadly, the datasette spent more time in the shop than being attached to my computer and as it was the only way to load anything into it, I had no choice but to occupy myself with the manual. This I used to great effect and taught myself how to program good old BASIC (Beginners All Purpose Symbolic Instruction Code—can you believe I actually remembered that?). While I’m sure this story is very gripping, you could be forgiven for wondering why I am boring you with it. Those events happened more than two decades ago, so what possible relevance could they have today? Well tinkering with that machine and then the Amiga that followed it (still my favorite machine of all time) gave me a real appreciation for what a computer could do. The Amiga was severely underpowered compared with PCs of the same era, yet it consistently beat them with better graphics, better reliability, and better sound. It was able to do all of this because the hardware was exquisitely designed. Amiga enthusiasts were some of the most resourceful people I’ve ever seen. Who’d have thought you could turn a real–time clock port into a connector for high-speed storage? All of this was only possible because people really understood how all the parts fit together. They knew how to get the best out of the machine because they really knew how the machine worked. These days, I spend my working day trying to make fast things go faster. To have any hope of success, I too need to know how everything works. Companies need people like me to push things forward, but they’re coming across a bit of a problem. People who really know computers inside out are getting much harder to find—we are a dying breed, and this is the situation that the Raspberry Pi Foundation is desperately trying to reverse. So what happened? Well, things changed. Computers went from being the curiosity in the corner to being a basic part of everyone’s lives. They evolved to the point where they just work and everyone knows how to use them. This is similar to the family car. Everyone has a rough idea how a car works, but few people are very interested. The car takes them from place to place, and that capability is what is interesting, not how the car achieves it. Computers are generally seen in the same light. People have a rough idea about turning them on, installing software and so forth, but how they actually work at a low level isn’t really seen as relevant or interesting. This in turn means that not only are fewer people getting excited by computing itself but even fewer people think that there’s more to it than double- clicking an icon. xxi www.it-ebooks.info ■ IntroduCtIon This problem has drifted up through schools and into universities. Teaching programming is a relatively challenging task. It requires a certain way of thinking that for many people is tough to get a handle on. Traditionally, universities would start a computer science course by teaching about logic gates, how memory works, and how to program a CPU. Only once you understood what the bare metal was doing would you try to learn C because although C is a higher language, it reflects the hardware it runs on. Understanding the hardware makes understanding C that much easier. But with larger class sizes, more limited teaching time, and students arriving with less and less knowledge of computing fundamentals, universities have had to adapt. Rather than teaching all that low-level stuff, now they teach Java and other scripting languages. Because these languages handle all of the “fiddly bits” for you, you can effectively pretend that they don’t exist (although this can cause some issues; see “The Infinite Memory Myth”). This is simply fantastic from a productivity point of view, but when you do want to take it to the next level (maybe you’re processing data and your script is just too slow), you have no idea where to turn. Worse, when someone tells you the technique for improving that performance, you have no idea what they’re talking about. Of course not all universities have taken this route. I’m studying at the Hong Kong Polytechnic University, and its course on Computer Architecture is very detailed and covers a lot of ground. If you want to get the top grade, you will need to implement a CPU cache for the CPU simulator program. Needless to say, there is a lot to learn for everyone on this course. That said, we need more than this. It’s too late to capture people’s interest when they’re starting graduate studies. I taught seven-year-olds how to program BBC BASIC when I was in my last year of primary school (they even got presented certificates by the school) and they loved it. Computing lets you create a virtual world with your mind (the children liked to create little text–based adventure games) and ultimate power rested in their hands. They got creative; they added spells, new roads, secret entrances, and much more. Okay, they needed a helping hand (they were only seven) but they had the desire to create and to build cool new things. INFINITE MEMORY MYTH over the years, I’ve done a lot of consultancy work with large enterprise customers and that has inevitably meant I’ve come across Java on many occasions. one of the interesting things I have come across is what I’ve termed the Infinite Memory Myth. this seems to crop up more in Java applications than in other languages, but that’s probably because Java tends to be more widely used in those settings. the short version of the myth is that developers seem to constantly create new objects, often to the point where the application consumes huge amounts of memory or crashes altogether. they tend to have no idea how much memory each object takes or, more worryingly, why they should care. As far as they are concerned, they request a new object and one is provided. When an object is no longer used (i.e., nothing points to it any more), Java will at some point get around to cleaning it up (called garbage collection). All of this is automatic; the developer doesn’t need to do anything. the problem is that this leads people to forget (or in many cases were never taught at all) that memory is finite, and at some point it simply runs out. You can’t assume that you can read in every row in a table and that it will always work. You can’t assume that just because your test file is 50MB in size that the application will never be given a 5,000MB file to work on. this lack of understanding stems from not being able to appreciate all the hard work Java is doing on the programmer’s behalf. It is running about and managing memory allocation and garbage collection, and the programmer remains blissfully unaware. A good understanding of computing fundamentals would give a developer keen insight into what Java is doing (both the how and the why) and thus appreciate that just because creating new objects is easy, memory itself is not free. xxii www.it-ebooks.info ■ IntroduCtIon So this is what Eben Upton and the Raspberry Pi Foundation are trying to bring back to the world. They want to rekindle that lost art and make computers cool and interesting again. To do that, it has created a computer that even by today’s standards is no slouch. Is it as powerful as your laptop? Well no, probably not, but can you buy your laptop for $35, slip it into your pocket (possibly not a great idea), generate relatively little heat, and drink very little in the way of power? If you answered yes to those questions, I really really want to hear from you—that sounds like a laptop I need to buy! However you choose to look at it, the main selling point (no pun intended) is the price. Anyone can pick up a Raspberry Pi without having to think too much about it. With a modest laptop clocking in at around $500 + and a MacBook pro nearly four times that, it’s not the sort of thing you can just splurge on without thinking, especially if it’s going to be for experimentation and playing about. However at $35, the Pi is cheaper than some monthly movie subscriptions, you could almost buy a new Pi every month! Why Eat Raspberry Pi? Whichever way you look at it, you will come back to the price. Whatever else the Raspberry Pi is and whatever other promises it has in store for us, all of them are interesting because of the price. There are two types of people who will be rushing out to get a Pi. The first group is already clued up on Linux and computing, and for them the Pi represents a server in a pocket and a cheap one at that. No longer do they need a full-size PC monster guzzling electricity and generating enough heat to rival a bar heater. Oh sure, you can get low-powered systems in nice shiny boxes, but they’re still not all that cheap to buy, even if they’re cheaper to run. However, a device like the Pi is cheap to run and cheap to buy, and it has just what you need to build a pretty respectful server. If you’re not one of those people, don’t worry because this book is for you. You like the idea of a cool little computer for $35 and you think you can do some pretty awesome stuff with it; you’re just not really sure how. For us, the big benefit is that the Pi is at the sort of price where we can afford to buy it just for fun and use it for experimentation. It’s not going to replace the family PC and you’re not going to need to take out a mortgage to buy one. You can play around with a Pi completely guilt-free and try all manner of weird and interesting things without having to worry about cost or destroying your main computer (and thus incurring the wrath of everyone you live with). Because the Pi is close enough to a normal PC (even though the architecture is a bit different) you can do PC-type things with it. In fact, that’s the first thing we show you in this book. Thus you don’t have to start from scratch; all that you know already you can apply to a Pi (it rhymes if you say that really fast) and so you can hit the ground running. No doubt you will want to do all the things that the first group of people wanted to do as well. Fear not, we have you covered—by the time you’ve finished this book you’ll be able to do all that and more! There are lots of reasons why everyone should rush out right now and get some Pi. Actually at the time of writing, there is still a three-week lead time for delivery, and when the Pi was initially released, one of the resellers took 100,000 preorders in just one day. That’s a lot of Pi! Although the lead time will naturally keep changing, the short version is that the sooner you order, the sooner you will get your Pi! So why all this interest? What is so special about the Raspberry Pi that it has achieved an almost cult-like following and has remained in heavy back order for months? It Only Costs $25 Okay, hands up all of you who are only interested in the Pi because it costs significantly less than a night on the town? If you put up your hand, you’re not alone. The goals of the Raspberry Pi Foundation are laudable but they all center on getting this powerful machine into our mitts at a price point that won’t break the bank. What really has everyone drooling is not the fact that as far as computer hardware goes, the Pi is effectively free, but more that it is a full computer that can run Linux. That means servers, home automation, video streaming, and pretty much anything else you can imagine. xxiii www.it-ebooks.info ■ IntroduCtIon WAIT, IS IT $25 OR $35? throughout the book we do bring up the price of the Pi a fair bit; after all, it is one of its most distinctive features. However, we also mention two prices, $25 and $35, so which is it? Well there are two versions of the Pi, the Model A and the Model B (as uninspiring as those names sound, they’re taken from the BBC computers, and from a geeky point of view, the names are quite inspired). there isn’t a great deal of difference between the two models, with Model B having 10/100 ethernet built in and an additional usB port. Model B also draws a bit more power. the ethernet adapter is actually connected internally via usB, so there is no different between the build in ethernet and a usB device that you could plug into the usB port itself. so which should you buy? Well if you think networking will be useful, the built-in ethernet port is pretty much required. I love having built-in ethernet connectivity because it just makes life so much easier. However if you aren’t planning on using it much, there really is no need to get Model B. that said, for $10, it might be worth spending more just in case you decide you want to play with networking later on… MORE PI! If one Pi is good, two must be better. Right? Well, $50 would get you two Pis and while this doubles the cost, it also more than doubles the fun. Now you can experiment with networking and getting the Pis to talk to each other. After all, it’s good to talk! Experiment in Safety When my computer is out of commission for even a short period of time, it is pretty inconvenient. I certainly don’t want to fiddle about with something and accidentally erase my hard disk (been there, done that). You’d also be well advised not to try over-clocking your CPU on the brand-new computer that you were just given as it’s not much fun to think you’ve totaled the machine within an hour of turning it on! To kill hardware takes a fair bit of effort (such as taping over a pin on the CPU and removing the CPU speed multiplier lock), but it’s fairly easy to remove your family photo album and the latest draft of the book you’ve been working on for the past six months (there is a reason why we dedicated a whole chapter and personal plea in the book to backups). If you have a Pi and you nuke it, the worst case is $25 down the drain, which is a lot better than what would happen if you toasted your main machine. Independence I’m sure some people will point out (quite correctly) that most of the horrors I just described can be avoided if you play in a VM rather than on your main machine. Apart from it not being as much fun (real hardware just smells better), it doesn’t give you all the benefits of a separate piece of kit. For a start, a virtual machine is only on when your main machine is running. If you happen to have a laptop that follows you everywhere, a virtual machine won’t be a great option for a home web server. Also, if you ever reboot your main machine, your virtual machine will go down with it. If you were using it to stream movies to your TV, you could end up with some very displeased family members. By having a real piece of hardware, you can keep your experimentation completely separate from anything else that you might be doing. xxiv www.it-ebooks.info ■ IntroduCtIon Low Power The Pi has a very modest power footprint. In fact, the Model A Pi only draws 300ma, which means you can power the whole thing from your USB port. According to Apple, my iMac draws 94 watts at idle and up to 241 watts when the CPU is maxed out. The Model A Pi draws at most 1.4 watts, and the Model B draws at most 3.5. That’s an awful lot of power saved. Understandably, these figures only take into account the power requirements of the Pi itself, with a bit extra put aside to power modest USB devices. If you add lots of power-hungry devices to your Pi, these figures would increase accordingly. APPLES TO ORANGES I just know someone is going to cry foul about my power comparison—and for good reason. It is true that compared to an iMac, the Pi draws basically no power at all. However, it is also true that an iMac does a lot more. First, it has a big screen, hard disk, and CPu that would blow the ArM on the Pi into the middle of next week. so if I know that I’m comparing two totally different systems and I’m admitting that they’re very different(who compares a golf cart to a Formula one car?) why am I wasting ink and paper with this description? Well, although we are comparing two very different machines, we are comparing the same sort of tasks. If you want to have a little web server or stream video to your tV set, a Pi is more than powerful enough to do that for you. Bear in mind that the Pi is clocked in at 700Mhz; not too long ago, that was what you’d find on a very powerful desktop. It’s not that long ago that you’d find this sort of performance on an enterprise grade server. ten years ago, it was just a fantasy. In short, the Pi has more than enough juice to do most of the things you’d want from a server and it won’t require a small nuclear power station to do it. The Ingredients for a Raspberry Pi After seeing all its benefits, you might be wondering why a $35 computer stacks up so well to ones that cost many times that. If you’re thinking that, it won’t be long before you wonder why there is such a big difference in price. Surely if you could get something this cheap that does most of the things your main machine can do, something must be up with the price of the other machines. After all, if a powerful laptop could be made significantly cheaper, it would easily make more money in increased sales than it would lose in reduced profit margin. Well that’s true to a point, but the Pi, powerful as it is, will probably never be a direct replacement for your main computer. It’s not any particular one thing that limits the Pi, but a combination of design decisions to balance features with cost that will ultimately prevent it from taking the crown. That said, it is still a fantastic platform, and we’ll look at some of those highlights right now. ARM CPU The major and most obvious difference between the Pi and your desktop is that your desktop will almost certainly have a processor from either Intel or AMD at its core, whereas the Pi has an ARM-based CPU. The Central Processing Unit (CPU) is the part that actually runs the programs you provide. Before a CPU can run a program, it must be translated into a language that the CPU can understand. So all CPUs execute programs, but the program has to be in a language they can understand. An ARM CPU cannot understand instructions written for an Intel or AMD CPU, which effectively means that most off-the-shelf software (such as Microsoft Windows and games) cannot run on a Raspberry Pi. Okay so you’re not going to be running Windows XP on the Pi, but does the ARM offer any advantages? The first advantage is that ARM CPUs draw much less power. This isn’t overly surprising as ARM really came from the embedded hardware industry where power usage and heat generation are a really big deal. In fact, you’ll find some xxv www.it-ebooks.info ■ IntroduCtIon form of ARM in almost every modern cellphone including the iPhone 4s and Samsung Galaxy S3. In fact they are one of the most widely used processors in the world and can be found in all manner of devices such as DVD players, appliances, and even cars. ARM CPUs also generate very little in the way of heat. If you look at the Pi itself, you will notice the CPU doesn’t have a heat sink. If you look at any Intel or AMD CPU, you can’t fail to miss the huge cooling fan that it requires in order to prevent it burning out. Some people even user water cooling systems to keep their PC processors running at a reasonable temperature. The last benefit is really a cost-to-performance ratio. For the vast majority of things, the real bottleneck is not CPU power but how fast data can be fed to it. CPUs have long been much faster than hard disks, and even the bus that links all the computer components together can’t keep up with even a modest CPU. So what do you get out of this? A low-cost processor that almost certainly will do everything you need without the cost penalty. WINDOWS 8 ON ARM early last year, Microsoft announced that Windows 8 would support ArM processors. this is not overly surprising as ArM is present in practically every modern mobile device; and with the performance of the high end chips gaining significant ground on Intel and AMd offerings, it probably won’t be long before we start to see more powerful desktops being powered by these beasts. Microsoft has long dominated the PC market and regardless of your thoughts on who should be leading the way, everyone agrees that Microsoft is far from done. of course, where Microsoft leads, others will follow. If Microsoft starts supporting the ArM platform directly, it won’t be long before hardware manufacturers will start providing the necessary drivers and support for their devices. Game developers will also need to pay attention to ArM- based platforms and that could create some very interesting challenges and compromises. What does it mean for your Pi? Well, you probably won’t be able to run Windows 8 on it; it just wasn’t built with that in mind, but it does mean that the technology underpinning your Pi is not based on some old bits and pieces found at the back of someone’s bottom desk drawer. rather it is quite possibly based on the platform of the future! 512MB of RAM The Model B Pi comes with 512MB of RAM (originally 256MB, but they changed to 512MB in October 2012), which is shared between the system and the Graphics Processing Unit (GPU). Now considering that the laptop I’m using to write this has 8GB of RAM, my desktop at home has 16GB (that is 32 and 64 times, respectively), and that up to half of this is shared with the GPU, it sounds a little weak. What can you really do in 512MB of RAM? Or even 256MB if you have a Model A or an older Model B? Well the answer to that is a lot more than you might think. Remember, Windows 95 was able to operate with a couple of running programs in just 8MB of RAM (which conveniently enough is 32 times less than the Pi), and the good old Commodore 64 came with only 64KB (the Pi has something like 4,000 times that) and it was able to run thousands of games to entertain the masses. So why do we have so much memory in new machines? Memory is cheap these days, and although we could do lots of great stuff in very little memory, it’s a skill that has gone out of fashion. Why spend so much effort on optimization memory usage when it will most likely never matter? If 8GB of RAM costs $50, is it worth hours if not days of a programmer’s time to save a few megabytes here and there? Probably not. Remember, the Pi is meant as an experimentation platform, not as a general PC replacement, and Linux (especially without a GUI) will run with plenty of memory to spare for all your programs. By keeping the memory to a reasonable minimum, the Pi is able to hit its price point without greatly hindering what you can do with it. xxvi www.it-ebooks.info ■ IntroduCtIon GPU The GPU is really a specialized form of a CPU. A CPU is generic in what it can do, and it tries to be good at everything it does, the classic jack-of-all-trades. A GPU, on the other hand, does one thing and one thing well. It is specifically designed to handle the intense mathematical calculations needed to render complex displays. This started off predominantly in 3D graphics rendering, but has more recently gained traction in day-to-day computing in which rather than computing graphics for display, a GPU can be harnessed to execute similar types of instruction for the user. For example, when an application such as Photoshop enhances a photograph, it applies an algorithm to the image and historically the CPU would do this. Today, Photoshop can offload that processing work on to the GPU, which because of its very specialized design can do the work much faster—all without needing any assistance from the CPU itself. The main reason why a GPU is important in a device like the Pi is that even with a modest processor, it can still handle high-quality displays and decode high-quality video streams. This makes the Pi useful as a media device as well as allowing for a full graphical display that still feels snappy even with a slower processor. For the most part, the GPU is not something you will directly care about, but by knowing that the heavy duty graphics work can be offloaded somewhat from the main CPU, you can be more confident that the ARM that powers the Pi will be able to deliver enough brute force for your needs. Ethernet Port (Model B only) You might think that there’s not really much to say about an Ethernet port. After all, it’s pretty straightforward: you plug it in and you can access the network. If you don’t have one, then you can’t. Simple enough? For me, the ability to connect to a wired network is essential. WiFi can often have issues and sometimes isn’t even available (especially if you decide to turn your Pi into a WiFi access point). Although this feature costs an additional $10, in my experience not having the network card when you really need it will cost you much more than $10 in time, effort, and general hassle. It is true you can add a USB network card to the Model A (and technically the card attached to the Model B is actually connected via USB), but that would cost at least $10 and then you’d have a USB device flapping in the wind. You might say to yourself “If it’s USB, I can use it with my other devices, too!” but in reality, you probably never will and you’re far more likely to lose the damned thing altogether (right when you most need it) than it is to come to your rescue in a time of need. However, one reason why you might decide on a Model A is that because it doesn’t have these extra components, it consumes significantly less power. This probably won’t be a major concern for most users, but if you’re planning on using the Pi in a battery-powered product, you would be very keen to lower the power requirements as much as possible. Overall, my recommendation is to get the Model B because you get the network card. If you’re absolutely 100% positive that you’ll never ever need Ethernet (or you want the smallest possible power footprint), there’s probably little point paying the extra cash for this version. USB This isn’t so much a feature these days as a true requirement. Almost all peripherals connect this way and the Pi is no exception. It will work with all standard USB keyboards and mice, and assuming Linux has a driver for it, other USB devices as well (such as the Ethernet card in the Model B). Both models come with USB 2.0 support, although Model A only has a single port, whereas Model B has two. If you want to be able to plug multiple USB devices into your Pi, you might want to consider Model B, but if you’re setting it up as a basic desktop, you could use an external USB hub to get a similar effect. GPIO Ports General Purpose Input/Output (GPIO) ports are a very interesting and key addition to the Pi. They provide an easy way to connect hardware to your Pi that you can then control through software. If, for example, you wanted to add a thermometer or light sensor, you could build a device that connects to your Pi via the GPIO ports. xxvii www.it-ebooks.info

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.