Brix media center Linux installation notes
Intro
These are my jots as I installed Linux Mint 18.1 on a Gigabyte GB-BACE-3160 Compact PC with a 240 GB SSD hard disk and 8 GB RAM, for the purpose of driving my TV in the living room. Not all issues are solved yet.
General notes
- Use ssh -X. It allows X-windows to open on the calling computer.
- Uname: Linux tv 4.4.0-53-generic #74-Ubuntu SMP Fri Dec 2 15:59:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
- Mint 18.1 (“Serena”) is a derivative of Ubuntu 16.04 (“Xenial”). This can be verified by looking at /etc/apt/sources.list.d/official-package-repositories.list.
- There are a lot of intel_* utilities to look at installed.
- Unsolved problem: System boots up with kswap0 taking 100% CPU, and no desktop comes up. The problem seems to be that since there’s no swap on my system + the “cinnamon” process running at 100%, requesting more and more memory until it runs out, and kswap0 tries to fix it.
WORKAROUND: Kill, as root, the “mdm” process, father of the X window tree. This restarts cinnamon.
Bad omen: cinnamon gets stuck sometimes and sometimes not, even in subsequent overlayfs mode bootups (so all files in the filesystems were the same initially).
There is nothing that stands out in .xsession-errors on a failed boot vs. a successful one (from cold or after killing mdm). - There’s still an issue with mouse pointer traces (in particular going on and off the shutdown confirmation dialog box), and it seems to be an HDMI-only issue. The disappearing and sluggish mouse seems to have been solved by disabling the splash on Grub (which plays with the DRM).
- Desktop background image:
$ gsettings get org.gnome.desktop.background picture-uri '/usr/share/backgrounds/linuxmint/default_background.jpg'
Installation flow
- BIOS is invoked by pressing the “Delete” button (constantly) during powerup
- Changed the OS in the BIOS to Linux (not clear why it matters)
- Always power on when AC power is applied: In the BIOS menu, Chipset > Restore AC Power Loss set to “Power on”.
- Pushed USB stick with Linux Mint 18.1 Cinnamon. Booted with no issues
- Installed ssh for remote access (ssh daemon starts immediately after installation)
# apt-get update # apt-get install ssh # passwd mint
- Set partition table manually: First partition for boot, 250 MB. Second partition for LVM, 120 GB. Leaving half the disk unpartitioned. LVM can easily use disk space from another partition in the future, if that’s needed. So it read in the end (fdisk):
Command (m for help): p Disk /dev/sda: 223.6 GiB, 240057409536 bytes, 468862128 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x34449fd0 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 514047 512000 250M 83 Linux /dev/sda2 514048 252172287 251658240 120G 8e Linux LVM
- Created one big logical volume on /dev/sda2:
# pvcreate /dev/sda2 Physical volume "/dev/sda2" successfully created # vgcreate vg_ssd2 /dev/sda2 Volume group "vg_ssd2" successfully created # lvcreate vg_ssd2 -l 100%FREE -n lv_root Logical volume "lv_root" created.
- Launched the “Install Linux Mint”
- During installation, enabled installation of third party software (mp3 and media stuff). Installation type: “Something else” to pick what goes where. No swap partition. Installation went through cleanly
- Installed git (“apt-get install git”) and created a repository in root
- Installed the ssh daemon (apt-get install ssh)
- Stop the Linux splash. Give me some real boot text output, and this probably also solves some weird issues with the graphics card (mouse pointer traces and sluggish mouse response?):
Edit /etc/default/grub, changing GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” to GRUB_CMDLINE_LINUX_DEFAULT=”", and then update the actual GRUB2 file from the /etc/grub.d and the file just edited into /boot/grub/grub.cfg# update-grub
- Also, make Grub’s menu always appear, since pressing Shift at bootup doesn’t work on this platform. So edit /etc/default/grub once again, uncommenting (explained in Ubuntu’s GRUB2 doc):
GRUB_HIDDEN_TIMEOUT=0
and setting
GRUB_TIMEOUT=2 GRUB_RECORDFAIL_TIMEOUT=2
and once again, run update-grub. The GRUB_RECORDFAIL_TIMEOUT part is required for all the times the computer is turned off abruptly (which is fine with an overlayfs). Otherwise GRUB sticks to 30 seconds all the time.
For more advanced GRUB trickery, see this post.
- DIDN’T: The kernel console boot output is given with some weird blocks instead of characters (The Matrix style) until the framebuffer module is initialized, and the screen goes into graphical mode, after which all looks OK. This can be fixed by uncommenting
#GRUB_TERMINAL=console
in /etc/default/grub, and running update-grub. The result is that these two seconds of kernel messages that are OK, but GRUB’s own menu is shown painfully slow. So I remain with the Matrix kernel.
- Ditch Apparmor, because it messes up things with overlayroot, and probably would cause all kind of weirdnesses regardless, exactly like SELinux did in the past (no chkconfig in Xenial).
$ sudo update-rc.d apparmor remove
- Fix /bin/sh symlink: By default, it goes to /bin/dash (someone had a bad sense of humor). Change it /bin/bash. Won’t make any difference in the matters of this post, but it will bite sometime in the long term.
- Add LSB (Linux Standard Base), among others for getting ld symlinks in /lib64/. Once again, won’t make any difference right now, but it should be there:
# apt-get install lsb-core
- Add group eli manually:
# addgroup --gid nnn eli
- And user:
# adduser --gid nnn --uid nnnn eli Adding user `eli' ... Adding new user `eli' (nnnn) with group `eli' ... Creating home directory `/home/eli' ... Copying files from `/etc/skel' ...
- Allow no-password access of all members of sudo group (only added NOPASSWD part). From /etc/sudoers:
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
- Enable auto login: Pick the “Login Window” GUI application
- Assign a fixed address on DHCP daemon and a host name at /etc/hosts
- Install NFS client:
# apt-get install nfs-common
- Copy my own .bashrc stuff into “eli” and “root” users
- Install Xemacs:
# apt-get install xemacs21
- Allowing X-sessions over ssh from root user, following this post. As root,
# xauth merge /home/eli/.Xauthority xauth: file /root/.Xauthority does not exist # cd ~/ # ln -s /home/eli/.Xauthority
Note that I symlinked the file only because it didn’t exist before, and copying it makes the trick only until the next reboot.
- Set the power options (never turn off screen) and screensaver (ditto, it’s done separately)
- Install kodi, MythTV and mplayer (vlc was already installed):
$ sudo apt-get install --install-suggests kodi $ sudo apt-get install --install-suggests mythtv $ sudo apt-get install --install-suggests mplayer
- Install PVRs (mythtv and dvbviewer were probably redundant)
# apt-get install kodi-pvr-iptvsimple # apt-get install --install-suggests kodi-pvr-dvbviewer # apt-get install kodi-pvr-mythtv # apt-get install kodi-pvr-hts
- Install DVB command-line utilities, which didn’t prove very useful (previously dvb-utils)
# apt-get install dvb-apps
- Install w_scan, useful for DVB channel scanning
# apt-get install w-scan
- After changing the resolution to 1920x1080 the menu panel at the bottom was too low down, making it almost invisible. This was the Samsung monitor’s fault, which needed to be adjusted to show the full screen.
- (No need to install kernel headers nor Make / compiler. All included out of the box)
- Install apt-file:
$ sudo apt-get install apt-file $ apt-file update
- Installed intel-graphics-update-tool_2.0.2 (I messed up a bit with it, see below. Problem was that I attempted to install 2.0.3, which relates to Ubuntu 16.10, but Mint 18.1 is Ubuntu 16.04). It refused, as it looked at /etc/lsb-release, founding out that the distro is Mint. So I faked it.
$ sudo dpkg -i intel-graphics-update-tool_2.0.2_amd64.deb $ sudo apt-get -f install $ sudo intel-graphics-update-tool
- Some DVB command line tests (see separate post)
- Overlay root (see separate post)
- Turn off ureadahead service (for faster boot, but does it make sense on a SSD device?)
# systemctl disable ureadahead
- Install Tvheadend (see separate post)
- Add Kodi and Terminal as Startup Applications (using the desktop’s Menu > Startup Applications). Don’t. It’s important to see the desktop screen so the computer’s mode is clear.
Kodi setup
General note: Kodi remembers the navigation position in sub-menus when a category is entered. If things get too confusing, just restart Kodi, so the navigation paths in the docs match.
- Change setting level to Advanced
- System > Settings > Enable TV
- Enable and Configure PVR IPTV Simple Client with a local file playlist (System > Settings > Add-ons > My add-ons > PVR Clients > PVR IPTV Simple Client). Grab a playlist from http://localhost:9981/playlist and append hand-picked entries. In the EPG Settings tab, set Location to Remote Path, and XMLTV URL to http://localhost:9981/xmltv. This requires a recent (post-4.0.9) version of Tvheadend.
- On exit, use Ctrl-Alt-F1 and then Ctrl-Alt-F7 to get back from the blank screen it leaves (if necessary)
- Don’t install a TVheadend plugin. It got the original Tvheadend stuck, and the newer one requires picking a channel twice to view it. Besides, the Simple Client covers all needs with a single playlist.
Fixing graphics issues
Downloaded intel-graphics-update-tool_2.0.3_amd64.deb from Intel Graphics for Linux and ran
$ sudo dpkg -i intel-graphics-update-tool_2.0.3_amd64.deb
but that failed due to a dependency problem:
Selecting previously unselected package intel-graphics-update-tool. (Reading database ... 207385 files and directories currently installed.) Preparing to unpack intel-graphics-update-tool_2.0.3_amd64.deb ... Unpacking intel-graphics-update-tool (2.0.3) ... dpkg: dependency problems prevent configuration of intel-graphics-update-tool: intel-graphics-update-tool depends on libpackagekit-glib2-18 (>= 0.9.4); however: Package libpackagekit-glib2-18 is not installed. intel-graphics-update-tool depends on fonts-ancient-scripts; however: Package fonts-ancient-scripts is not installed. dpkg: error processing package intel-graphics-update-tool (--install): dependency problems - leaving unconfigured Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ... Processing triggers for desktop-file-utils (0.22-1ubuntu5) ... Processing triggers for mime-support (3.59ubuntu1) ... Errors were encountered while processing: intel-graphics-update-tool
Rumor has it that apt-get -f install can fix that, but it said:
$ sudo apt-get -f install Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Done The following packages will be REMOVED: intel-graphics-update-tool 0 upgraded, 0 newly installed, 1 to remove and 128 not upgraded.
Remove? Why? What have I done? How about this:
$ sudo apt-get install --fix-missing
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
intel-graphics-update-tool : Depends: libpackagekit-glib2-18 (>= 0.9.4) but it is not installable
Depends: fonts-ancient-scripts but it is not installed
So I ran apt-get -f install and dropped intel-graphics-update-tool.
Directories that change
In the event of restoring the entire root filesystem from backup, try to retain these:
- /.git (the main git repository)
- /home/eli (of course)
- /home/eli/.kodi (included in /home/eli, but this is where Kodi keeps its info)
- /home/hts/ (where Tvheadend keeps its settings and logs)