Starbeamrainbowlabs

Stardust
Blog


Archive

Mailing List Articles Atom Feed Comments Atom Feed Twitter

Tag Cloud

3d account algorithms announcement archives arduino artificial intelligence assembly async audio bash batch blog bookmarklet booting c sharp c++ challenge chrome os code codepen coding conundrums coding conundrums evolved command line compiling css dailyprogrammer debugging demystification distributed computing downtime embedded systems encryption es6 features event experiment external first impressions future game github github gist graphics hardware hardware meetup holiday html html5 html5 canvas interfaces internet io.js jabber javascript js bin labs learning library linux low level lua maintenance network networking node.js operating systems performance photos php pixelbot portable privacy programming problems project projects prolog protocol protocols pseudo 3d python reddit reference release releases resource review rust secrets security series list server software sorting source code control statistics svg technical terminal textures three thing game three.js tool tutorial tutorials twitter ubuntu university update updates upgrade version control visual web website windows windows 10 xmpp

Debug your systemd services with journalctl

Some nice bulbs and bits of wood.

The chances are that if you're using linux, you will probably have run into systemd. If you find yourself in the situation where you've got a systemd service that keeps dying and you don't know why (I've been there before several times!), and there's nothing helpful in /var/log, before you give up, you might want to give journalctl a try. It's systemd's way of capturing the output of a service and storing it in it's logging system (or something).

When I first found out about it, I read that apparently journalctl -xe servicename would show me the logs for any given service. It turned out that it wasn't the case (it just threw a nasty error), so I went trawling through the man pages and found the correct command-line switch. If you've got a service called rocketbooster.service, and you want to see if systemd has any logs stored for it, then you can execute this command:

journalctl --unit rocketbooster.service

...or for short

journalctl -u rocketbooster.service

It should open the logs (if there are any) in less - with the oldest logs at the top, so you might need to scroll all the way down to the bottom to see anything that's relevant to your problem (shift + G will take you to the bottom of the file).

I've found that systemd has a habit of rotating the logs too - and journalctl doesn't appear to know how to access the rotated logs, so it's best if you use this command as soon as possible after failure (suggestions on how to access these rotated logs are welcome! Post down in the comment :D).

I thought I'd document it here in case it was useful to anyone - and so I don't forget myself! :P

Drive Naming Schemes in Linux

If you've used linux before, you'll probably have seen your flash drive or hard drive appearing as /dev/sdc4 at one point or another. You may have a cd drive which appeared as /dev/sr2 or /dev/cdrom. If you're really lucky, you might even have a tape drive that appears as /dev/st0.

What do all of these letters mean? I was wondering the same thing, so I looked it up and am writing up what I found in this post.

It would appear that in linux devices have a prefix and then an identifier. Before I explain the identifiers, I should outline each of the prefixes that I've come across (or looked up) first. You can find them below.

sd*

By far the most common device name prefix that I have come across is sd. This apparently originally stood for SCSI (SATA?) Device, but today it represents any regular block device that can be used for storage. This includes hard drives and flash drives for example.

hd*

The hd prefix originally stood for Hard Disk and was used for IDE drives, but it was dropped as of Linux 2.6.19 and sd* is now used instead.

sr*

sr stands for SCSI ROM and is used for CD / DVD drives (It might be used for blu-rays too, but I don't have one to check. Please post in the comments if you do!). On my machine, I have a number of symbolic links leading back to this drive in my /dev called cdrom, cdrw, dvd, and dvdrw.

st*

I have not come across a device with this prefix yet. If you have one, please post in the comments below! It stands for SCSI Tape drive.

Identifiers

The numbers and / or letters after the prefix refer to the device number, and, if appropriate, partition on the device. For example, /dev/sdb4 refers to the 4th partition on the 2nd disk, /dev/sr2 refers to the 3rd CD / DVD drive, and /dev/hdc3 refers to the 3rd partition on the 3rd IDE hard drive.

Sources

Ubuntu: Second Impressions

Ubuntu's Default Background I've had my laptop dual booted with Ubuntu for a while now, and I've been using Ubuntu in a Virtual Machine and as a live CD, but I've only just gotten around to rearrenging my partitions and reimaging my Ubuntu partition with Ubuntu 15.04. Previously, I had a bunch of issues with ubuntu (for example my laptop kept heating up), but I seem to have solved most of them and I thought that I'd post here about the problems I encountered, how I fixed them, and what I think of the latest version of ubuntu.

Firstly, I installed ubuntu from a live CD iso on my flash drive. Annoyingly, I used the 32 bit version by accident, and had to do it again. It would be nice if it told you which version you were about to install. Anyway, I found the installer to be rather temperamental. It kept freezing for ages, and all I could do was wait.

After the installation finished, I was left with a brand new, and very buggy, 64 bit Ubuntu 15.04 installation. As soon as it booted, the first job was to stop my cursor from flickering. Because I have an Nvidia GeForce 550M GPU, Ubuntu didn't recognise it properly (it detected it as a second 'unknown display') and so custom drivers were needed to fix it. I found this post, which guided me through the installation of both bumblebee (to control which of my two GPUs I use), and the official Nvidia drivers for my graphics card.

After banishing the flickering cursor, I found my laptop cooler, though it still wasn't right. Next up was to install thermald, indicator-cpufreq and lm-sensors. This trio of packages automatically controls the frequency of your CPU to both save power and prevent overheating. Normally, linux doesn't pay any attention to the frequency of the CPU of it's host system, leaving to run at it's maximum speed all the time - which causes battery drain and overheating.

Now that my laptop wasn't overheating too much, I could focus on other problems. When in Windows 7, I have something called SRS Premium Sound. It is brilliant at tweaking audio just before it reaches the speakers to improve it's quality. I quickly found when I got this laptop that it was essential - the speakers are facing downwards and the output sounds 'tinny' or 'hollow' without it. Since linux doesn't have SRS, the next best thing was PulseAudio, which provides you with an equaliser to tune your sound output with. Note that PulseAudio does actually work with Ubuntu 14, even though some people have said that it has been discontinued (I don't think it has?).

The other thing that needed changing was my touchpad. I felt like I had to hammer it in order to get it to recognise my touch, whereas in Windows it picked up the lightest of touches. My solution was to add the following to my .profile:

synclient FingerLow=2
synclient FingerHigh=3
synclient AccelFactor=0.145
synclient TouchpadOff=0
synclient MinSpeed=1.25
synclient MaxSpeed=2
synclient CoastingFriction=30

This improved the responsiveness of my touchpad a whole lot to the point where I could actually use it without getting frustrated :)

That covers the main problems I came across. As for what I think, I'm finding Ubuntu to be a great operating system to work with - now that I've worked most of the bugs out. Things like indicator-cpufreq and thermald ought to be automatically installed on systems that support them at install time. You should also be prompted to install bumblebee and the offical nvidia graphics drivers at install time too, as a system with multiple GPUs (i.e. integrated graphics and a graphics card) are pretty unusable without them. Sensible default settings would be nice too - nobody likes hammering their touchpad just to get a response.

The Ubuntu unity desktop developers seem to have remvoved a bunch of configuration options from the GUI in recent releases. Hopefully they wil readd them - it's rather annoying to have to enter the terminal to change something as simple as the login screen background.

On the plus side, Ubuntu seems to load much faster than Windows 7, and is more responsive too. I also feel like I have more screen space to work with as there isn't a task bar taking up space at the bottom of the screen. The customisability is amazing too. I am finding that there are far more things that you can tweak and fiddle with in Ubuntu compared to Windows.

To finish off this post, here's a list of smaller problems I had, and a link to the appropriate post that fixed it for me:

Creating a UEFI + BIOS multi-boot + Data flash drive

This post is slightly different - It is mainly to document the process of creating a flash drive that boots into Grub2 with both a BIOS and UEFI firmware that you can also store data on in Windows.

First of all, you need to make sure that your flash drive has a GPT (GUID Partition Table) and not an MBR. If you don't know, it is safe to assume that you are currently using a MBR (Master Boot Record).

Switching to a GPT

If you don't have a GPT, then you need to backup the contents of your flash drive because you will need to wipe it clean in order to switch it over.

Make sure you are in a linux environment (start a virtual machine and pass the flash drive in if you don't have one). Work out where your flash drive is (in this instance ours is at /dev/sdx) and then execute the following commands:

sudo apt-get install gdisk
sudo sgdisk --zap-all /dev/sdx

The above will wipe all partition tables from the device. Before continuing, you may need to remove and re-plug-in the flash drive you are working in. Run this pair of commands to add a "Microsoft basic data" partition, and format it with FAT32:

sudo sgdisk --new=1:0:0 --typecode=1:0700 /dev/sdx
sudo mkfs.vfat -F32 -n GRUB2EFI /dev/sdx1

The type code 0700 is the bit that determines the type of partition that we are creating. In this case, we are creating a Microsoft basic data partition. The tutorial I followed (see the source at the bottom) set the type ef00, which is a EFI System Partition. If you experience problems, try changing the type to this.

Next up, we need to mount the new partition. Do it like this:

sudo mount -t vfat /dev/sdb1 /mnt -o uid=1000,gid=1000,umask=022

The above will mount it to the directory /mnt. next, you need to go to the first source below and download the zip that can be found under the text pack with all necessary files for you to modify as you need. Extract this to the root of the flash drive (/mnt in our case):

cd ~/Downloads/
unzip usb-pack_efi.zip
rsync -auv usb-pack_efi/ /mnt

Next, we need to install grub2 in BIOS mode. It will complain horribly, but apparently it works :D

sudo grub-install --force --removable --boot-directory=/mnt/boot /dev/sdb

Now you should have a flash drive with Grub2 installed, that you can also see in Windows!

Credit to sysmatck of ubuntuforums.org sudodus for the guide.

Sources:

  1. How to Create a EFI/UEFI GRUB2 Multiboot USB Drive to boot ISO images

Windows 10: My thoughts

Welcome to another review post here at starbeamrainbowlabs.com. Sorry for the lack of posts lately, I have been busy with my Programming 2 coursework (there will be a post about this soon!). This post, however, is going to be all about my thoughts on Microsoft's new operating system, Windows 10. Brace yourselves: this might be a long post.

Recently I have obtained a copy of Windows 10 though Microsoft's DreamSpark program for university students. After a managing to download it (I had at least 1 failed attempt), I had to try it out in a virtual machine and write this blog post.

Positives

Lets start with the good aspects of Windows 10. After using Windows 8, the ability to use the 'metro' apps (Yes I do know that they changed the name, but I don't know what they changed it to) in the windowed mode is really nice. Even though I liked the idea of using them in full screen mode, it got confusing quickly when multitasking.

I also noticed the new "Storage Spaces" option in the Control Panel. It look like you can pool the storage space on multiple drives to create one larger drive. I think it's a nice idea to make an interface to allow the average user to create RAID setups. It is also intelligent enough to put the most frequently used files on the SSDs in a setup, which is awesome.

The new (returning!) start menu is also a huge improvement. Although I haven't used it enough to know if your most frequently used programs appear at the top of your start menu (it really should), it still looks cool.

The other cool thing are the multiple desktops. You can create and remove desktops at will by pressing WIN + TAB. In this menu you can also manage the programs that you have open, just as you could before. Linux has had this feature for ages - it is good to see it finally landing in Windows 10 too.

Negatives

Now that I have talked about the positives, I would also like to mention the negative things about windows 10. Sadly, this list is rather longer than the list of positives.

Firstly, when freshly installed, Windows 10 takes up about 10.1GB of space. I wanted to include this - I don't really know if this is better or worse than Windows 8.1. The first real bad thing about Windows 10 that I found was that the operating system's interface looks even flatter than the interface of Windows 8.1. What I mean by this is that the number of colours that have been used in the interface has been reduced again. Although it gives it more of a 'minimalist' feel, I don't think they have got it quite right. Google have it right with Chrome, but I think that Windows 10 takes it just a bit too far. That is just my opinion though.

The search box takes up a lot of valuable space on the taskbar, leaving less room for the program I have open. This shouldn't be a huge issue for those with large wide-screen monitors, but many of us (myself included) don't have one so quickly find that we have run out of room on our taskbars. The search box, in my opinion, belongs in the start menu and not the taskbar.

Another small tweak I found most annoying is that I couldn't set windows update to check for update but let me choose when to download and install them. You see, I prefer to check what is going to be installed before it happens - that way I can check on the internet to make sure that there aren't any major bugs in the updates that I am about to install. There is a workaround for this - you can set your internet connection to be a "Metered Connection" (another new feature of Windows 10), but that feels clunky and makes the metered connection setting feel useless to me.

The Apps, though improved, also have several issues associated with them. I would like the option to choose which apps I install at first during the setup - I found that a lot of (for me) useless apps got installed when I first installed Windows 10. That way I can save on hard drive space.

It would also be nice if your installed apps were shown in the "Programs and Features" section of the Control Panel (currently they are not shwon there). That would provide an easy mechanism with which I can remove the ones I don't want.

The apps don't freeze / hang as much as they did in Windows 8, but I still feel like they are a little bit too unstable - they can take a long time to load. This loading time feels even longer without a determinate progress bar to show that the app hasn't crashed. I feel that it is important to let your user's know that your program (and operating system!) is actually doing something. Advanced users may also like it if the operating system told you what is doing in addition to the fact that it is doing something.

I found that I couldn't remove OneDrive app (I assume that it's one). Since I don't use OneDrive (I have a different backup system in place), I didn't want OneDrive starting every time Windows started. I did (eventually) find that you can actually prevent it from starting with the operating system through the "Start up" tab of the task manager.

This leads me into the final point I wish to make: I think that they have tried too hard to make it 'integrated' with their other services such as their Microsoft Accounts and OneDrive. This reduces the number of choices that the user has and make the user feel as though they are forced into something that they perhaps do not want.

Conclusion

All in all, Windows 10 looks like a definite improvement on Windows 8.1, but it still isn't quite right. I feel as though Microsoft isn't providing it's users with the choice that it used to - this is one of the key reasons I am using a Windows operating system now (I find Windows 7 to be both easy to use and flexible). For most purposes, Windows 10 will be a splendid operating system for the average user. I feel that advanced users will begin to grow frustrated by Microsoft's new operating system due to the lack of choice that is beginning to creep in.


Wow. That was a long post! Anyway, in the next post I will (hopefully) be releasing both the code and the binaries behind the coursework I have recently done.

Art by Mythdael