Difference between revisions of "COMP 3000 2011 Report: LinHES"
Line 114: | Line 114: | ||
===Software Packaging=== | ===Software Packaging=== | ||
Since current versions of LinHES are based on Arch Linux, the packaging format used is pkg.tar.xz. This package format uses the Pacman packaging utility to manage packages<ref name = "Build a LinHES package">[http://linhes.org/bugs/projects/linhes/wiki/Build_a_LinHES_Package] Lang, J.-P. (2011). Retrieved November 13, 2011, from LinHES Official Site: http://linhes.org/bugs/projects/linhes/wiki/Build_a_LinHES_Package</ref><ref name = "Package Formats">[http://en.wikipedia.org/wiki/Linux_package_formats]Wikipedia contributors. "Linux package formats." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 9 Aug. 2011. Web. 13 Nov. 2011.</ref>. The detailed specifics of how to use Pacman to manage packages can be found [https://wiki.archlinux.org/index.php/Pacman here]. However, as a brief overview several of the primary operations that can be performed with Pacman will be outlined in this section. Pacman does not have an official GUI interface, thus all the following operations will be outlined using command line inputs. To get a list of installed packages on your system simply type <tt>pacman -Q</tt>.<ref name = "Pacman">[https://wiki.archlinux.org/index.php/Pacman] Wikipedia Contributors. (2011, November 10). pacman. Retrieved November 13, 2011, from ArchWiki: https://wiki.archlinux.org/index.php/Pacman</ref>. A package can be added using one of two different ways, depending on if you want to install a single package or a package group. To install a single package type <tt>pacman -S package_name1 package_name2 ...</tt> (with your desired package names substituted in for package_name1 and package_name2 etc.)<ref name = "Pacman"/>. A package group can be installed using the same command with the package name replaced by a package group. For example, "pacman -S myGroup" would install all the packages in the group named myGroup<ref name = "Pacman"/>. You can see what packages belong to a group by running <tt>pacman -Sg myGroup</tt><ref name = "Pacman"/>. To remove a single package and leave all of its dependencies run <tt>pacman -R package_name</tt><ref name = "Pacman"/>. To remove a package and its dependencies which are not required by another installation package run <tt>pacman -Rs package_name</tt><ref name = "Pacman"/>. | Since current versions of LinHES are based on Arch Linux, the packaging format used is pkg.tar.xz. This package format uses the Pacman packaging utility to manage packages<ref name = "Build a LinHES package">[http://linhes.org/bugs/projects/linhes/wiki/Build_a_LinHES_Package] Lang, J.-P. (2011). Retrieved November 13, 2011, from LinHES Official Site: http://linhes.org/bugs/projects/linhes/wiki/Build_a_LinHES_Package</ref><ref name = "Package Formats">[http://en.wikipedia.org/wiki/Linux_package_formats]Wikipedia contributors. "Linux package formats." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 9 Aug. 2011. Web. 13 Nov. 2011.</ref>. The detailed specifics of how to use Pacman to manage packages can be found [https://wiki.archlinux.org/index.php/Pacman here]. However, as a brief overview several of the primary operations that can be performed with Pacman will be outlined in this section. Pacman does not have an official GUI interface, thus all the following operations will be outlined using command line inputs. To get a list of installed packages on your system simply type <tt>pacman -Q</tt>.<ref name = "Pacman">[https://wiki.archlinux.org/index.php/Pacman] Wikipedia Contributors. (2011, November 10). pacman. Retrieved November 13, 2011, from ArchWiki: https://wiki.archlinux.org/index.php/Pacman</ref>. A package can be added using one of two different ways, depending on if you want to install a single package or a package group. To install a single package type <tt>pacman -S package_name1 package_name2 ...</tt> (with your desired package names substituted in for package_name1 and package_name2 etc.)<ref name = "Pacman"/>. A package group can be installed using the same command with the package name replaced by a package group. For example, "pacman -S myGroup" would install all the packages in the group named myGroup<ref name = "Pacman"/>. You can see what packages belong to a group by running <tt>pacman -Sg myGroup</tt><ref name = "Pacman"/>. To remove a single package and leave all of its dependencies run <tt>pacman -R package_name</tt><ref name = "Pacman"/>. To remove a package and its dependencies which are not required by another installation package run <tt>pacman -Rs package_name</tt><ref name = "Pacman"/>. To remove a package,its dependencies and all the packages that depend on that package run <tt>pacman -Rsc package_name</tt><ref name = "Pacman"/> It should be noted that this operation is recursive and could remove many needed packages. The available packages for LinHES fall into two categories: Core (the set of packages needed to create a fully functioning system) and Extra (packages used by LinHES but not necessarily needed to create a fully functioning system)<ref name = "LinHES Build README">[http://linhes.org/cgit/cgit.cgi/linhes_dev/plain/README]LinHES Build README. Retrieved November 13, 2011. </ref>. As of November 13, 2011 the Core contains 538 packages and Extra contains 315 packages (making a total of 853 packages available in the software catalog for LinHES)<ref name = "LinHES PKGBUILD">[http://linhes.org/cgit/cgit.cgi/linhes_pkgbuild/tree/abs] LinHES PKGBUILD Repository. Retrieved on Novemeber 13, 2011.</ref>. A full list of the available packages can be viewed [http://linhes.org/cgit/cgit.cgi/linhes_pkgbuild/tree/abs here]. | ||
===Major Package Versions=== | ===Major Package Versions=== |
Revision as of 15:23, 5 December 2011
![](/wiki/images/thumb/4/41/LinHESsplash.png/250px-LinHESsplash.png)
A screenshot of LinHES' start up splash screen
Name: LinHES
Developer: Cecil Watson
Latest Stable Version: 6.04<ref name = "Current">ftp://linhes.org/R6/Current/</ref>
Website: http://www.linhes.org/bugs/
Part I
Background
LinHes (Linux Home Entertainment System) is, as the name suggests, a Linux based distribution intended for home theater PC use<ref name = "LinHES Wiki">[1] Lang, J.-P. (2011, October 18). Wiki. Retrieved October 18, 2011, from LinHES Official Site: http://www.linhes.org/bugs/projects/linhes/wiki</ref>. The primary functionality of LinHes is built around MythTV (an open source, freeware alternative to products like Tivo and Windows Media Center)<ref name = "MythTV Wikipedia">[2] Wikipedia contributors. "MythTV." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 22 Sep. 2011. Web. 19 Oct. 2011</ref>. One of MythTV's biggest complaints is the complicated nature of its setup and installation. LinHES aims to correct this issue with its operating system. The primary goal of LinHES is to provide a simple easy to use interface for MythTV and to streamline its setup into a more accessible process<ref name = "LinHES Wiki"/>. In order to make installation and setup as easy for the user as possible, LinHES is compatible with most standard home theater PC hardware, much of which is configured automatically by LinHES <ref name = "KnoppMyth Wikipedia">[3] Wikipedia contributors. "KnoppMyth." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 31 May. 2011. Web. 19 Oct. 2011</ref>. As an added bonus to users who want an especially easy setup, there are specific high performance hardware bundles listed on the website and forums that have been tested with LinHES and are guaranteed to work properly, easily and effectively<ref name = "KnoppMyth Pamphlet">[4] Watson, C. H. (2011, September 14). The Pamphlet of KnoppMyth. Retrieved October 18, 2011, from My Set Top Box: http://mysettopbox.tv/pamphlet.html</ref>.
LinHES is developed by Cecil Hugh Watson<ref name = "KnoppMyth Wikipedia"/>. The first release was in August of 2003 under the name KnoppMyth <ref name = "KnoppMyth Wikipedia"/>. KnoppMyth refers to the fact that until recently the operating system was based on Debian Linux with configuration scripts from the Knoppix Linux distribution. Since its release LinHes has gone through about a dozen major and minor versions <ref>http://www.knoppmyth.net/CHANGELOG.txt</ref>, although officially its most recent release is referred to as release 6. LinHES retained the KnoppMyth name from its creation right up to its most recent version (release 6). For release 6 KnoppMyth was modified to an architecture loosely based Arch Linux. This architecture change prompted Cecil Watson to rename KnoppMyth to a more generic name, descriptive of its purpose opposed to its architecture. On his original KnoppMyth site, Cecil Watson mentions that LinHES "is what [he] called [his] home entertainment system"<ref name = "KnoppMyth Pamphlet"/>.
LinHES can be downloaded from its official website's downloads page. This page includes the most recent stable release (release 6) as well as beta releases for release 7. Release 6.04 (the current stable release) is 682<ref name = "Current"/> megabytes. Although the exact size varies slightly between versions, most are roughly 700 megabytes in size (generally just under 700 megabytes).
Installation/Startup
Before LinHES even begins the boot up process, the user is presented with some special customization options for LinHES. These options include things as trivial as removing the splash screen from the installation to much more useful options like configuring the installation to a specific recommended hardware system. The complete list is:
- LinHES (default)
- LinHES without splash screen,
- Special Hardware (which takes the user to a list of hardware options)
- Debug Options (which takes the user to a list of specific debug options)
- Boot from local drive
As a first time user, unfamiliar with the system, I will be sticking to the LinHES (default) installation route for the remainder of this report. Once this option is selected, the kernel is booted and the user is taken to a installation type menu (shown on the right). From here you have the option to:
- Install or Upgrade
- Run MythFrontend
- Exit
- Close menu
We will proceed with the "Install or Upgrade" option. Next the available hard drives on your system and their sizes will be listed and you will be asked to select which one you want to install to. You will then be asked to specify whether you are upgrading an older version or installing a new one and some addition hard drive space usage and file system preferences. These options are presented in a simple drop down menu screen (pictured on the left). I set the installation type to "Full/Auto" and left the rest of the options as their default values (as these details are trivial in regards to the operating system as a whole). The next step is to specify your internet options:
- Wireless or Wired
- Static or Dynamic IP
- Network device
- Hostname
Once again, my exact choices are irrelevant to this report. Next you will be asked to specify the type of system you are installing. You are given the following choices (the descriptions given by LinHES are given beneath each option):
- Standalone
- Complete system that doesn't allow outside connections.
- Frontend_only
- Frontend only, needs a master backend already on the network
- Master_backend
- Tuners, scheduling and database. This allows for remote frontend and slave backends.
- Slave_backend
- Extra tuners
As this was my first installation and a did not have multiple computers that I wanted to access the system, I selected Standalone. The next option is your resolution (800x600(SD),1280x720(HD),Auto). You may also setup a remote at this menu, if you have one. Since I do not own a remote I simply set the resolution to "Auto" and then selected finish. At this point you are treated to a retro image of the globe (pictured on the right) while you select your time zone, if LinHES cannot auto-detect one. After a few more irrelevant options menus (Network File System options if your media is stored on a remote NFS share, whether you want automatic updates and user account settings) you will be presented will one last chance to confirm installation. From here LinHES completes the install on its own and reboots when complete.
Basic Operation
The interface of LinHES is meant to resemble a console interface, such as you would find on TV service menus (start up options menu pictured to the right). This menu is only shown on start up the first time you boot the system; it is just meant to configure some of the final details of your system (file locations, etc.). From this menu you have the following options:
- General
- This contains all the options for LinHES across multiple menus (such as Locale Settings, Shutdown/Wakeup Options etc.)
- Capture Cards
- This allows you to setup the capture card on your system, if you have one, to work with LinHES.
- Video Sources
- This allows you to setup the video sources you want to be able to view on LinHES.
- Input Connections
- This allows you to manage the various input sources you may have connected your LinHES.
- Channel Editor
- This allows you to allocate video sources to channels on LinHES (from a TV tuner or other sources) and set how you would like the channel in filter your feed, the specific display setting and general channel information.
- Storage Directories
- This allows you to specify groupings for the video sources on you system (live TV,trailers etc.)
Once you have finished specifying your options, press the escape key to be redirected to the main menu. The main usage menu lists the following options (no descriptions will be given as these options are self explanatory):
- Watch TV
- Media Library
- Watch Recordings
- Watch Videos
- Listen to Music
- Play Online Streams
- Image Gallery
- Play Games
- Manage Recording
- Schedule Recordings
- Recording Rules
- Upcoming Recordings
- Previously Recorded
- Set Priorities
- Information Center
- News Feeds
- Weather
- System Status
- Hardware Profile
- Optical Media
- Play DVD
- Play VCD
- Archive Files
- Import video files from DVD
- Import CD
- Eject media
- Service Menu
- MythTV configuration
- LinHES configuration
- Backup LinHES
- Restore LinHES
- Upgrade LinHES
As I do not have a TV tuner, a capture card or cable I was not able to fully enjoy all the features of LinHES. However, since using these features would mainly consist of me watching TV this did not reduce my ability to assess LinHES' operation. I was still able to watch DVDs, listen to music, watch online streams, play games and enjoy many other features. One feature I found particularly fun was the "Play Online Stream" option. This option contains a sub-option of "Apple Trailers", which lists all the trailers from the Apple Trailers website in a handy alphabetical list (which can be traversed very quickly). When selected the trailers are fully loaded (to save the user from buffering during playback) and then played automatically when ready. Upon completion LinHES returns to the trailer list again. Most of the other features act fairly predictably, which is a very good thing in this case, as entertainment systems should make all their options clear and intuitive for easy use.
Usage Evaluation
Overall, I was very happy with the performance of LinHES. Its interface was simple and elegant. It did not feel cluttered or over categorized to the point of tedious menu traversal. In many ways I would say that LinHES goes above and beyond its goal of providing an easy to use home theater PC setup. Not only does it do everything you would expect a media center to do, it has many features that you would not expect to find in alternative media centers that provide a more complete multimedia experience. In addition the installation process was fairly painless; LinHES walks you through the more complicated options and can be up and running in no more than 20 minutes. The boot up time was also very fast. I found the boot up time to be much faster than most operating system I have dealt with in the past. However, this is not surprising since you cannot do as much on a home theater as a standard PC. As a final note, I am quite fond of the interface's look. It was nicely laid out and used a pleasing color scheme that I would be happy to see every day when I used it.
References
<references/>
Part II
Software Packaging
Since current versions of LinHES are based on Arch Linux, the packaging format used is pkg.tar.xz. This package format uses the Pacman packaging utility to manage packages<ref name = "Build a LinHES package">[5] Lang, J.-P. (2011). Retrieved November 13, 2011, from LinHES Official Site: http://linhes.org/bugs/projects/linhes/wiki/Build_a_LinHES_Package</ref><ref name = "Package Formats">[6]Wikipedia contributors. "Linux package formats." Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 9 Aug. 2011. Web. 13 Nov. 2011.</ref>. The detailed specifics of how to use Pacman to manage packages can be found here. However, as a brief overview several of the primary operations that can be performed with Pacman will be outlined in this section. Pacman does not have an official GUI interface, thus all the following operations will be outlined using command line inputs. To get a list of installed packages on your system simply type pacman -Q.<ref name = "Pacman">[7] Wikipedia Contributors. (2011, November 10). pacman. Retrieved November 13, 2011, from ArchWiki: https://wiki.archlinux.org/index.php/Pacman</ref>. A package can be added using one of two different ways, depending on if you want to install a single package or a package group. To install a single package type pacman -S package_name1 package_name2 ... (with your desired package names substituted in for package_name1 and package_name2 etc.)<ref name = "Pacman"/>. A package group can be installed using the same command with the package name replaced by a package group. For example, "pacman -S myGroup" would install all the packages in the group named myGroup<ref name = "Pacman"/>. You can see what packages belong to a group by running pacman -Sg myGroup<ref name = "Pacman"/>. To remove a single package and leave all of its dependencies run pacman -R package_name<ref name = "Pacman"/>. To remove a package and its dependencies which are not required by another installation package run pacman -Rs package_name<ref name = "Pacman"/>. To remove a package,its dependencies and all the packages that depend on that package run pacman -Rsc package_name<ref name = "Pacman"/> It should be noted that this operation is recursive and could remove many needed packages. The available packages for LinHES fall into two categories: Core (the set of packages needed to create a fully functioning system) and Extra (packages used by LinHES but not necessarily needed to create a fully functioning system)<ref name = "LinHES Build README">[8]LinHES Build README. Retrieved November 13, 2011. </ref>. As of November 13, 2011 the Core contains 538 packages and Extra contains 315 packages (making a total of 853 packages available in the software catalog for LinHES)<ref name = "LinHES PKGBUILD">[9] LinHES PKGBUILD Repository. Retrieved on Novemeber 13, 2011.</ref>. A full list of the available packages can be viewed here.
Major Package Versions
Of the 538 major packages that comprise the core of LinHES, only 11 of the most important ones will be discussed here. When discussing the how much the authors have modified the package used, the PKGBUILD file is observed. It stands to reason that the more code included in the PKGBUILD file, the more the authors have modified the package. The packages are as follows:
- Linux Kernel
- Version included:2.6.39<ref name = "Kernel Build">[10] LinHES PKGBUILD for Kernel. Retrieved on November 13, 2011.</ref>
- Current Version:3.1.1<ref name = "Current Kernel"> [11] The Linux Kernel Archives. Retrieved on November 13, 2011.</ref>
- Version Difference: The Linux Kernel used is two versions behind the current version (both which were released on November 11). Since the most recent Kernel was only released 2 days ago (as of November 13, 2011), it is incredibly likely that the lapse is only due to the short time since its release. This theory is further supported by the fact that the most recent release of LinHES was released on the same day (giving them no time to incorporate the new kernel).
- Modifications: PKGBUILD file is 286 lines of code (13kb). Likely had moderate modifications. <ref name = "Kernel Build"/>
- Original 2.6.39 Source:here
- GNU C Library
- Version Included: 2.14 <ref name = "Libc Build">[12] LinHES PKGBUILD for libc. Retrieved on November 13,2011.</ref>
- Current Version: 2.14 <ref name = "Current Libc">[13] GNU Official Site. Retrieved on November 13,2011. </ref>
- Version Difference:None
- Modifications: PKGBUILD file is 188 lines of code (7kb). Likely had low to moderate modifications<ref name = "Libc Build"/>.
- Original 2.14 Source: here.
- GNU Bourne Again Shell
- Version included: 4.1 <ref name = "Bash build">[14] LinHES PKGBUILD for Bash. Retrieved on November 13, 2011.</ref>
- Current Version: 4.2 <ref name = "Current Bash">[15] GNU Bash FAQs. Retrieved on November 13, 2011.</ref>
- Version difference: There is only 1 minor release between the version used and the current version. Since the current version was released long before the release of the current LinHES it is likely that they are simply waiting for major releases to bash before incorporating them since it plays such a small role in the overall running of the system.
- Modifications: PKGBUILD file is 69 lines of code (3kb). Likely minimal modifications<ref name = "Bash build"/>.
- Original 4.1 Source: here
- Qt Framework
- Version Included: 4.7.3 <ref name = "Qt build">[16] LinHES PKGBUILD for Qt. Retrieved on November 13, 2011.</ref>
- Current Version: 4.7.4 <ref name = "Current Qt">[17] Qt Downloads Page. Retrieved on November 13,2011. </ref>
- Version Difference: There is only 1 minor version difference between the included version and the current version. A minor version change is not likely to affect the operation of LinHES in any substantial way and thus the difference is probably simply to save work changing things that would not make a noticeable difference on the system.
- Modifications: PKGBUILD file is 143 lines of code (5kb). Likely low to moderate modifications.<ref name = "Qt build"/>
- Original 4.7.3 Source: here
- gzip
- Version Included: 1.4 <ref name = "Gzip build">[18] LinHES PKGBUILD for Gzip. Retrieved on November 13,2011.</ref>
- Current Version: 1.4 <ref name = "Current Gzip">[19] GNU Gzip downloads page. Retrieved on November 13,2011.</ref>
- Version Difference: none
- Modifications: PKGBUILD file is 34 lines of code (1kb). Likely no modifications have been made. <ref name = "Gzip build"/>
- Original 1.4 Source: here
- grep
- Version included: 2.9 <ref name = "Grep build"> [20] LinHES PKGBUILD for Grep. Retrieved on November 13,2011. </ref>
- Current Version 2.9 <ref name = "Current grep"> [21] Grep downloads page (Canadian Mirror). Retrieved on November 13, 2011. </ref>
- Version difference: none
- Modifications: PKGBUILD file is 33 lines of code (1kb). Likely no modifications have been made. <ref name = "Grep build"/>
- Original 2.9 Source: here
- vi
- Version included: 050325 <ref name = "Vi build"> [22] LinHES PKGBUILD for vi. Retrieved on November 13, 2011. </ref>
- Current Version: 050325 <ref name = "Current vi"> [23] The Traditional Vi. Retrieved on November 13, 2011. </ref>
- Version Difference: none
- Modifications: PKGBUILD file is 40 lines of code (1kb). Likely no modifications have been made. <ref name = "Vi build"/>
- Original 050325 Source: here
- which
- Version included: 2.20 <ref name = "Which build">[24] LinHES PKGBUILD for which. Retrieved on November 13, 2011. </ref>
- Current Version: 2.20 <ref name = "Current which"> [25] Which download page. Retrieved on November 13, 2011. </ref>
- Version difference: none
- Modifications: PKGBUILD file is 24 lines of code (1kb). Likely no modifications have been made<ref name = "Which build"/>
- Original 2.20 Source: here
- mailx
- Version included:8.1.1 <ref name = "mailx build"> [26] LinHES PKGBUILD for mailx. Retrieved on November 13,2011. </ref>
- Current Version:8.1.1 <ref name = "Current mailx"> [27] Arch Linux mailx download page. Retrieved on November 13,2011. </ref>
- Version difference: none
- Modifications: PKGBUILD file is 24 lines of code (1kb). Likely no modifications have been made. <ref name = "mailx build"/>
- Original 8.1.1 Source: here
- MythWeb (Web Interface for MythTV's Backend)
- Version included: 0.24 <ref name = "mythweb build"> [28] LinHES PKGBUILD for MythWeb.
Retrieved on November 13,2011. </ref>
- Current Version: 0.24 <ref name = "current mythweb"> [29] MythTV official site. Retrieved on November 13, 2011. </ref>
- Version Difference: none
- Modifications: PKGBUILD file is 46 lines of code (1kb). Likely small modifications (if any) have been made. <ref name = "mythweb build"/>
- Original 0.24 Source: here
- Pacman
- Version included: 3.5.3 <ref name = "pacman build"> [30] LinHES PKGBUILD for pacman. Retrieved on November 13, 2011. </ref>
- Current Version: 3.5.4 <ref name = "current pacman"> [31] Pacman homepage change log. Retrieved on Novmeber 13, 2011. </ref>
- Version difference: There is 1 minor release version difference. The version included was likely used for simplicity (to avoid making changes to the build that did not affect its ability to operate).
- Modifications: PKGBUILD file is 71 lines of code (3kb). Likely only small modifications were made to the package. <ref name = "pacman build"/>
- Original 3.5.3 Source: here
Initialization
According to the LinHES page on ArchWiki, "LinHES uses /etc/runit/1.local for startup scripts"<ref name "ArchWiki">[32] Wikipedia Contributors. (September 21 2011). LinHES. Retrieved November 13, 2011, from ArchWiki:https://wiki.archlinux.org/index.php/LinHES</ref>. From this file I have been able to conclude that the first 5 commands run are<ref name = "runit scripts">[33] Runitscripts/1 from LinHES packages files. Retrieved on November 15 2011.</ref>:
- /etc/rc.sysinit
- /etc/rc.conf
- /etc/rc.functions
- hostname 'cat /etc/hostname'
- /sbin/sysctl -p 2>/dev/null >/dev/null
Once the scripts in /etc/runit/1 are finished I assume that the init scripts in /etc/runit/2 and /etc/runit/3 are run to complete the necessary actions to load the rest of the system. From there the scripts in the /etc/runit/services directory are probably run to complete the system initialization.
References
<references/>
Part III
Due: December 5, 2011