Learning Linux as a tester.

Learning Linux- may the source be with you
Source of the image: www.geekstir.com

I’ve been a Linux user for a while and I’ve been a tester for a while and I always thought that the two are basically connected and since I am mostly testing in Linux environment right now I decided to state publicly my opinion on why learning Linux is vital for testers and how they could benefit from this.

Why is learning Linux is important for you as a tester?

We all switch positions occasionally and when we find a suitable offer in technical skills part it says something like that:

  • Good knowledge of network protocols (TCP/IP, ICMP, UDP, etc)
  • Good knowledge of at least one scripting language is a plus (Python, Perl, Ruby)
  • Knowledge in OS – Windows or Unix

Now, I know that you’re probably noticing that only the last one mentions Linux/Unix, so what does the other two have to do with learning Linux. Well, that’s the coolest part, by learning Linux, you are actually developing your skills and knowledge as a tester. Here’s why:

  • Linux is an open source OS and allows you to poke as deeper as you wish (normally until you break stuff so bad, the only way to fix it is re-install), which is a need rooted in our testing mindset – to explore things and look how deep we could inspect them. So, in the context of network protocols, you have plenty of ways and tools in Linux to learn and have a “hands on” experience and by that improve your knowledge on a topic that’s vital for testers and IT professionals in general.
  • Learning Linux, you are practically learning scripting language on the fly, because the “language” of commands you are using in terminals and consoles is a script language itself (bash, zsh, ksh, etc). It all looks like you are making yourself a great favour by learning Linux, but most importantly…

Open code means an open mind.

It’s a long topic and I won’t get too deep in it, but there’s a great valuable lesson in using Linux and learning Linux and it’s in the power of community. It opens you to the world of open source software which is huge and profound and complex … and annoying sometimes, but it could always teach you something. Many important testing tools are open source as well – Selenium for example.

I believe that the most valuable lesson that you could gain by learning Linux is how to figure out solutions for your problems on your own. And I think that’s a skill that’s really valuable in software industry at all. Because let’s be honest, when you are a rookie, dealing with Linux is such a pain in the ass. I mean, you come from Windows where everything is restricted and polite and gives you alert messages and you step into a totally non-dummy proof OS where you could practically mess up stuff so bad, that you will wonder what the fuck happened.

Then you have the Linux community, which is mostly consisted of trolling geeks that will answer to your problem with – “READ THE FUCKING MAN PAGE !!!”, like you know wtf a man page is. No, there’s cool and helpful guys, of course, but all that has its own charm, because it drives you to be more independent, to act, to search, to explore, to investigate. All these skills are really important for a tester, because we all know that if we bump into an issue, we could ask a senior or a lead for advice, but that doesn’t really develop our skills very good, on the other hand dealing with problem, finding solutions, sharpens our skills just like grinder sharpens a sword.

Natural drive to explore.

It’s a concept that was many times covered by Richard Stallman in his talks and lectures – the freedom to explore and change the insides of a tool or operating system you are using. This is not only essential for your career as an engineer, but as a tester, too. It is our distinct skill to be able to try to disassemble stuff, bring back components in different order and then fix them. We are, as everyone in technology, scientists and in order to develop, we must experiment. The best way to experiment is by learning what you are dealing with, it’s functions and components, if we don’t count reverse engineering, of course.

O, Kali.

Another great reason to learn Linux, besides the fact that 90% of the servers in the world are running it, is one really awesome skill set, that’s highly valued and really rare in software testing and this is security and penetration testing. And to cover these, there’s a great Linux distribution called Kali Linux, you can find it here: https://www.kali.org/

Basically Kali is a fully functional Linux distribution, which is loaded with any possible security, penetration, packet sniffing or social engineering tool you could think of. Of course, because security testing is so bad ass, this doesn’t come packed with a ribbon and with a nice and shiny UI, oh no. Almost any tool in Kali is a command line tool, meaning you will have to learn scripting, writing specific commands, etc. But this is definitely something that pays off, and the more you dig in it, the more tech savvy you become.

Here’s a small intro to Kali, including setup and installation on Vbox, by a fellow blogger. And here is a whole blog, dedicated to Kali Linux, for the more advanced users.

How to start learning Linux.

And after we concluded, that learning Linux is important, there comes the big question – how do we start? Well, starting is easy, just download it install it on a VM or as a live CD and give it a try. And here I hear people screaming, “but how, it’s complicated, it’s hard to use, you have to know the commands, only admins can use it…”. This is in the past, Linux nowadays has nice user interface, easy installer (Next, Next, Ok, Finish) and many other Windows like features. The thing is, sooner you forget about them – the better. Because when you have to use Linux to log into a server, there won’t be a GUI, so get used to the console, it’s nice and easy, just a bit weird in the beginning.

So, what distribution should you pick? Well, there are thousands of them, but here are my suggestions:

  • Easy to install and use – junior level – Ubuntu, Mint, CentOS – these are really user-friendly and meant to be easy to use.
  • A bit more complex – intermediate level – Fedora, Debian – these are, let’s say, the above’s big brothers, it might be a better idea to dive into them if you have previous Linux experience.
  • The elders – senior level – Arch, Slackware – these are intentionally hard to use, at least to a novice user. The reason is, they want to keep things as Unix-like as possible and as simplistic as possible. You have a lot to learn from them, because you have to do almost everything manually – disk partitioning, configuring interfaces, installing GUI, if you want one, etc. Definitely a must see, but you need to arm yourself with a lot of patience and knowledge.

Here are some resources for the novice Linux-ers:

In this blog topic I wrote about edx.org‘s course, I’ve finished it, it’s awesome and a great beginning for total noobs in Linux.

If you like a more visual tutorials – Eli The Computer Guy is your man. This guy is amazing, really good at explaining stuff in a simplistic and understandable manner, obviously knowledgeable in various OSs and networking, protocols, programming and I don’t know what more, but he has a whole section on Linux, with nice tutorials.

Nixcraft, is a great blog, where almost every problem you search for has solution, with really cool examples and explanations.

Of course, there’s a lot of paid courses and programs to learn and certify about Linux, but I am just trying to give an introduction including free and accessible materials here.

So, don’t forget to comment and share with your friends… and don’t forget to use Linux – open source, means an open mind. Good luck! 🙂

 

Linux foundation starts new free course along with EDX

Linux foundation and EDX are releasing the course called “Introduction to Linux”. images

The course was paid until now and this is it’s first start as a part of the EDX and it will be totally free.

According to the description the course will start in the third quater of the year and will cover basic knowledge over the three main OS Linux families.

The goals of the course will be:

  • Indtroduction to Linux’s three biggest OS families.
  • Good knowledge and ability to interact with Linux from both graphical and command line perspective.
  • Various techniques commonly used by Linux devs and admins.

The course will be mentored by Jerry Cooperstein – a PhD working in Linux since 1994, developing and delivering training in both kernel and user space.

If you would like to register for free, you could do it here: Introduction to Linux

What’s Linux:

Linux is light weight open source operating system, commonly used in big scientific projects, servers and complicated software architectures. Linux is in the hearth of one of the most popular mobile operating systems – Android.
I have a lot of reasons to beleive that Linux will reach even further as one of the main competitors in the game industry since the release of the Steam machine and Steam OS – a fork of the Debian distribution.

Good luck guys and thank you for the great intiative.

Ten good reasons to use Linux OS

It was 2 years ago…

It was 2 years ago when I first started a Linux OS on my PC and from that moment I started to evolve as a Linux die-hard fan with every single moment. As I recall it was some version of wubi, which is a Linux installer for Windows that lets you install Linux over your Windows file system, so you don’t have to install it as a dual boot. So since than I’ve changed 2 or 3 distributions and re-installed some of them 4 or 5 times (Linux is not dummy proof, so the most common way to learn when you don’t know what you do is – break it, fix it). So I decided to list 10 of the most important things that kept me using Linux through these 2 years, and will keep me using it for much longer.

1. Freedom – you are allowed to do whatever you want.wallaceTux

Isn’t it all about freedom. We are digital generation, we adopted new technologies before we could even figure them out, so this brought so many troubles to our heads. One thing we desire most, is to shape our own digital world where we are our own masters, not any company. And Linux really does provide it to us, you are no longer obliged to connect any kind of account or provide any kind of personal information about you to some company. One of the things I liked most, are the updates, when you were a Windows user, you probably know how annoying was the constant bugging messages that new updates are received and you SHOULD install them other wise doomsday comes. And if you don’t do so, the “nice guys” from Microsoft will do a feature that will do it for you on shutdown. So congrats, now you have Bing bar in you browser and a 10000-th security update that still sux.  Which brings us to the next point…

2. Better security.

The best part, you install Linux and you don’t need an antivirus program. Why, well I will use a quote here from Wikipedia:

The vast majority of viruses (over 99%) target systems running Microsoft Windows

And it’s true too, without going too deep in technical details, let’s just say, that Linux’s system files and folders, all the secure information has a specific access level that can not be gained by any 3-rd party software. Another reason is, it’s not that easy to run an executable file (.exe)  that most viruses use as a carrier, on a Linux operating system.

3. Better options for customization.

Everything in Linux is customizable. From the wallpaper to the cursor icons, to the way windows look, fonts, panels arangement,  everything. And the even cooler part is, you can customize the behavior of you operating system. It is in the “very advanced” section, of course, but it is possible.

4. Performance, performance, performance

I believe this is the section where Linux kicks Windows’ ass reaalllyyy bad. Linux boots, reboots, shuts down and operates times faster than Windows. This is the reason why Linux is still number one in the servers, growing faster in mobile devices OSs where performance is a must, and that’s the reason why scientific giants in NASA and CERN are using Linux.

5. Better support for open source software.

As we stated in the beginning, we are living in a free world and we like to be masters of our own destiny. One of the ways to do so, is by using open source software. It won’t be a surprise of course if we mention that proprietary operating systems are not very friendly for most of the open source software that’s out there. Well of course a good reason for that is, no one who actually develops an open source  software would actually care about proprietary OSs support. Good example for this is if you try to compile an open source flash player from source code on Windows. Linux, on the other hand is free and open source by design. All the software that you gain access to is free and open source.

6. Better usage of hardwarelinux_logo

It is well known that since the performance of your machine is better with Linux, there’s something going on under the hood, that uses your hardware in more meaningful manner. You will be surprised to find out that your old hardware could run perfectly with most of the modern Linux distributions. Why don’t you try running Windows 8 🙂
Here are some exact numbers taken from the pages of Ubuntu, and Microsoft. We will be comparing minimum requirements of Ubuntu 12.10 (last version of Ubuntu) and Windows 8.1 (last released version of Windows):

Ubuntu 12.10

Ubuntu Desktop Edition
700 MHz processor (about Intel Celeron or better)
512 MiB RAM (system memory)
5 GB of hard-drive space (or USB stick, memory card or external drive but see LiveCD for an alternative approach)
VGA capable of 1024×768 screen resolution
Either a CD/DVD drive or a USB port for the installer media
Internet access is helpful

Windows 8.1

Windows 8.1
If you want to run Windows 8.1 on your PC, here’s what it takes:

Processor: 1 gigahertz (GHz) or faster with support for PAE, NX, and SSE2 (more info)

RAM: 1 gigabyte (GB) (32-bit) or 2 GB (64-bit)

Hard disk space: 16 GB (32-bit) or 20 GB (64-bit)

Graphics card: Microsoft DirectX 9 graphics device with WDDM driver

I think facts speak for themselves.

7. Faster installation and easier maintenance.

This is one of the points I love most, the installation. If you ever installed a Windows OS, you probably spent a day doing it. Because you will need about a 30 to 45 mins to install it, but after that hell comes on earth. Yes, you have a brand new operating system, but nothing else, no chat programs (well I thinк they have Skype, since Win 8.1) , no multimedia, no browser other than IE, no office software etc. To install, register and update all the above,  you would need about a day, and I really mean it, because Windows updates take forever.

Let’s see how it goes on the Linux side, installation is about 20 mins, and guess what – it’s all there, everything you need, or at least all the basic stuff to start with. Because almost every Linux distribution has various chat clients, media players, torrent client, open office, several browsers, and many, many useful applications. And if you need more, you can reach it with importing additional repositories or through a graphic interface called software center or something similar. It’s not up to date, of course but an update would take 10 to 15 minutes max. How about that ?

8. User friendly.

There is a myth to be buried here, and it’s a belief that Linux is a “geek only” operating system, that you have to be a software developer or admin to use it. That you have to write some magic commands in the console in order to have a normal workflow in your machine. Yes, this was true, but for 10 years ago. And there’s still few distributions of Linux that keep it simple and old school, but they are definitely not the most common ones and I don’t think a new user would try them. Almost all others distributions have user friendly interface, almost everything is maintainable through UI, but if you are advanced user you can always use the console. And that’s the beauty in it, it’s flexible and fits your demands, no matter of your experience as a PC user.

9. You don’t have to pay anything.

No trials, no registration, CD keys, cracks and stuff, everything is free and meant to be free, and not only, it is a policy of sharing and mutual support among Linux users, and as a Linux user you will start to feel exactly the same way.

10. Huge variety of distributions spins.

There’s thousands of Linux distributions out there, each having several spins – a different set of applications and graphic interface, to perfectly fit everyone’s taste. You can try one, and if you don’t like it you can try another. There’s actually logic behind every distribution, reasons what group is targeted with it, or why something is made different here. In other words, Linux cares about who we are, and what we do and shapes the development to serve us, not the software’s manufacturer.

Well there’s cons, too …

I know, I know, I know … the Linux haters will be already screaming and in order to be objective I have to point out these, too, but since this post is not about the disadvantages of using Linux, I will just list them, so here they are:

  • Poor graphics driver support – this is a problem since too long, and it still does damage, most of the proprietary drivers for Linux are done lazy from their manufacturers, they lack documentation and the only alternative is a open source – reverse engineered drivers. This leads us to our next issue …
  • Poor gaming support – since the graphics are f**ked up, it is normal to figure out no gaming will be done soon here. Yes, there’s a really good tries to bring gaming in Linux by steam, and Wine but it still a pain in the a** to run a game in Linux.  Plus, let’s face it, gaming is totally not open source. Hopefully this will change pretty soon with the rise of the Steam machine and Steam OS.
  • Really poor support for profession specific software – this has to do with the compatibility of proprietary software on  open source OS but anyway, if you are a designer willing to use Photoshop on Linux, you are screwed, same with AutoCad, 3D studio Max and many more. Yes, of course these programs have alternative, but learning to use an alternative doesn’t always fit your work schedule, plus they very often lack certain features.
  • Extended learning curve – using open source software is challenging but learning to use it in a proper way comes with a prize, you simply have to read a lot.
  • Worse support – Not valid in all cases but quite normal, if you pay in the general case you have 24/7 support. In the open source world the support is provided by the community. Sometimes, specific products are developed by one guy and in some moment he just quits. This is part of the game.

Conclusion.

I don’t say you should use Linux and I don’t say you shouldn’t. My opinion is – give it a try. You will be really amazed of what incredible stuff you will be able to do with it. It has a lot of good features and provides you the freedom that we all cherish. So what are you waiting for …

Lubuntu 13.10 reduce brightness issue

Since the last version of Ubuntu – 13.10 – “saucy salamander”, I’ve been experiencing several issues, apps stopped working, crashes etc. This is kind of normal stuff, with each new release of an open source distribution, there’s a period in which you have to be patient to have the communities release some patches of what got broken. To me I think the worst was screen brightness, I am still quite new to Ubuntu, I’ve been using Lubuntu for a month or so, but I had no luck with finding some GUI or terminal tool to reduce brightness using the open source amd/ati driver, and believe me it was burning my eyes, literally.

Occasionally my function keys were working and I was able to control the brightness, but not for too long, as I said it was on occasion. So, I had 2 choices – to sell my soul to the devil and install the proprietary driver, which by the way SUX, or find myself a solution.
I started looking for a solution and I can’t say it was easy. That’s why I decided to share the solution here, and save some poor user from buying new glasses.

The solution for having your screen brightness reduced, so you don’t get sun burn was pretty simple to me, hope it works for anyone who needs it.
Here what you have to do: open terminal (Ctrl + Alt +T) and execute the following command:


nano /etc/rc.local

The important part here is: nano is a text editor, we use it to edit the file, and /etc/ rc.local is a file specific for all Debian based distributions which runs at the end of all multi-user boot levels, which makes it pretty easy to put stuff in it. By opening the file we have the following output:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0

As it says at the end, by the way – it does nothing.
First we need to comment the “exit0” statement and add the magic line:

echo * > /sys/class/backlight/acpi_video0/brightness

Where * is a number from 0 to 10, standing for the level of brightness you desire, in my case 8. After the changes the file should look like this:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#exit 0
echo 8 > /sys/class/backlight/acpi_video0/brightness

Save it, reboot your system and voila!
Hope that will help anyone, good luck 😉

Инсталиране на Virtual Box под Linux, практически tutorial

Без да имам претенции да съм true master във виртуализацията, реших да кача едно кратко предимно картинно туториалче затова как се инсталира Virtual Box  и виртуална машина на него, под Linux. За целта ползваме host Fedora 18 x86-64, а на виртуалката ще качим Cent  OS 6.

Започваме със стандартното преминаване към root с командата su (switch user):

Изображение

След като въведем паролата за root юзъра, трябва да свалим Virtual Box (нашия hypervisor), на който ще направим виртуалната машина. За целта ползваме следната команда:

yum install VirtualBox

(Не се импортва никакво repository, инсталацията е напълно достъпна и така)

Изображение

След като инсталираме успешно програмата, можем да се върнем в стандартен юзърски режим като напишем “exit”. Продължаваме като стартираме hypervisor-a. Тъй като няма заредени виртуални машини, ще съсдадем нова, избираме бутона “New”.

Изображение

Wizard-ът, който се извиква е напълно разбираем и достъпен дори и за технически неграмотен или полуграмотен юзър, така че дори само натискането на Next би трябвало да даде резултат. Първо, въвеждаме името на виртуалната машина и операционната система.

Изображение

След него следва прозорец, за избор на количеството RAM памет, което желаем да заделим за виртуалната машина. Съветът на вендора тук е да не алокирате повече от 50 % от наличната RAM, но всеки може да прецени сам за себе си.

Изображение

Следва създаването на хард диск, тук има малка особеност, може да се избере размерът на диска да е fixed – работи по-бързо, създава се малко по-бавно и алокира място върху host машината за постоянно, или dynamic, който е малко по бавен, но за сметка на това алокира пространството, едва когато се напълни до максималния си size. За мен това върши идеална работа, тъй като не искам да губя място на host машоината, а и ползвам виртуалката само, за да чупя разни неща по нея.

Изображение

Типа hard drive, лично мен не ме касае, така че го оставям unchanged от default.

Изображение

Разбираемо, за харда също трябва да определим размер по свой вкус и нужди, както и име, с което ще го кръстим.

Изображение

След като изберем “Create”, имаме вече готовата конфигурация. Имаме възможност да попипнем някои компоненти, като да речем колко ядра да е процесора, как да се държи видео картата, но това е optional, видим ли тази картинка, имаме си вече виртуална машина.

Изображение

Естествено, след стартиране на машината установяваме, че тя е празна, както погледа, с който я гледаме, затова е време да се захванем за работа и да си намерим операционна система. Аз лично препоръчвам за целта да си свалите image файл, iso, което да е и live CD, за да ползваме по- user friendly интерфейса. За да импортнем iso-то във виртуалната машина отваряме setings>storage и избираме да вкараме image файл в празното виртуално CD, чрез натискане върху иконката с дискчето вдясно.

Изображение

След импортването на CD-то, животът става една идея по-лесен, може да се наложи да натиснете F12 и да укажете на виртуалната машина да boot-не от диска, но това не е сложно. Появява се прозорец, в който можем да изберем дали да инсталираме или само да тестваме ОС, естествено избираме инсталация.

Изображение

Инсталационния процес е стандартен за всяка Linux ОС, така че няма да се спирам на него, избира за парола за root, час и дата, общо взето стандартни неща. След като системата изцикли и и подкараме интернет, вече всичко е наред.

Изображение

Няколко малки забележки, касаещи Virtual Box:

  • Ако имате проблеми с образа и лагване при работа с виртуалката, може би не сте активирали BIOS-ната опция за виртуализация на Вашата машина, това оикновено е VT екстеншън. Дори и да не ползвате виртуализация, не пречи ако е активирана.
  • Друг гаден проблем с Virtual Box под Linux e, че модулите са kernel specific, т.е. при всеки upgrade на kernel-а ще трябва да си сваляте нов модул, да си го инсталирате и да си го активирате, малко е досадно, но се преживява, става със следните, команди, като root:

uname -r : за да разберете коя е текущата версия на kernel-a, примерен резултат –       3.8.5-201.fc18.x86_64

yum search kmod-virtualbox – намира, модулите като ги подрежда по версия не kernel-a.

Избираме този, който ни трябва и го инсталираме:

yum install kmod-VirtualBox-3.8.5-201.fc18.x86_64.x86_64

След като се инсталира, го активираме ръчно, командата е:

/etc/sysconfig/modules/VirtualBox.modules

След това вече можем да стартираме Virtual Box спокойно.

Успех ще се радвам да споделите Вашия опит.