<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://www.novell.com/communities" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>SUSE Linux Enterprise Cool Solutions</title>
 <link>http://www.novell.com/communities/coolsolutions/slemag</link>
 <description>Area where SUSE Linux Enterprise users gather.</description>
 <language>en</language>
<item>
 <title>Early Bird Discount: Save $300 on BrainShare</title>
 <link>http://www.novell.com/communities/node/9240/early-bird-discount-save-300-brainshare</link>
 <description> &lt;p&gt;Novell has taken steps to make BrainShare more affordable by dropping the full price of the conference from US$1,895.00 to US$1,695.00. You can save an additional $300 with the &quot;early bird&quot; registration. The &quot;early bird&quot; rate of US$1,395.00 will be available until February 19, 2010. Learn more at &lt;a href=&quot;http://www.novell.com/brainshare&quot; title=&quot;http://www.novell.com/brainshare&quot;&gt;http://www.novell.com/brainshare&lt;/a&gt;&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9240/early-bird-discount-save-300-brainshare#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Fri, 06 Nov 2009 13:31:43 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9240 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Using the OpenSUSE Build Service to Create and Distribute Kernel Module Packages</title>
 <link>http://www.novell.com/communities/node/9226/using-opensuse-build-service-create-and-distribute-kernel-module-packages</link>
 <description> Using the OpenSUSE Build Service to Create and Distribute Kernel Module Packages

&lt;p&gt;&lt;a href=&quot;#1&quot;&gt;1.	Introduction&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#2&quot;&gt;2.	Scope&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#3&quot;&gt;3.	What is OBS?&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#4&quot;&gt;4.	Using OBS to Create KMPs&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.1&quot;&gt;4.1	Code Preparation&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.1.1&quot;&gt;4.1.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.2&quot;&gt;4.2	Creating an OBS Project&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.2.1&quot;&gt;4.2.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.3&quot;&gt;4.3	Defining Target Distributions&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.3.1&quot;&gt;4.3.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.4&quot;&gt;4.4	Adding Packages to a Project&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.4.1&quot;&gt;4.4.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.5&quot;&gt;4.5	Setting Target Distributions for a Package&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.5.1&quot;&gt;4.5.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.6&quot;&gt;4.6	Building KMPs&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.6.1&quot;&gt;4.6.1	Example&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.7&quot;&gt;4.7	Publishing KMPs&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#4.7.1&quot;&gt;4.7.1	Example&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#5&quot;&gt;5.	Using OBS Repositories&lt;/a&gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;#5.1&quot;&gt;5.1	Example&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#6&quot;&gt;6.	Summary&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#Appendix A&quot;&gt;Appendix A – Sample Files&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#Appendix B&quot;&gt;Appendix B – Building for Red Hat Enterprise Linux (RHEL)&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;#References&quot;&gt;References&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;&lt;a name=&quot;1&quot;&gt;&lt;/a&gt;1.	Introduction&lt;/h3&gt;

&lt;p&gt;As Linux gains market-share in the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2314&quot;&gt;&lt;acronym title=&quot;A powerful computer running software that supplies network clients with services, such as file, print, communication, or application services. Examples of servers include1. Routing servers, which connect nodes and networks of similar architectures2. Gateway servers, which connect nodes and networks of different architectures by performing protocol conversions3. Terminal servers, print servers, disk servers, and file servers, which provide an interface between compatible peripheral devices on a local area network&quot;&gt;server&lt;/acronym&gt;&lt;/a&gt;, desktop, and laptop &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/631&quot;&gt;&lt;acronym title=&quot;The master control program that runs the computer. It is the first program loaded when the computer is turned on, and its main part, called the kernel, resides in memory at all times. The operating system performs basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers. The operating system acts as an interface between the user and the computer, enabling the user to operate software applications and access all resources available on the computer, including the CPU, media drives, memory, printers, and storage devices.&quot;&gt;operating system&lt;/acronym&gt;&lt;/a&gt; space, demand for Linux drivers and kernel modules is increasing.  Independent hardware and software vendors (IHVs and ISVs) can expand their customer bases significantly by providing proper kernel-space support for their products.&lt;/p&gt;

&lt;p&gt;Novell promotes having all Linux drivers in the official kernel.org source tree.  However, Novell also recognizes that sometimes IHV and ISV partners do need to provide drivers separate from the Linux kernel.  Novell encourages partners who need to provide such external driver(s) to use specially-built rpms called Kernel Module Packages (KMPs).  By using KMPs, partners can ensure that their modules will be installed appropriately and handled correctly during &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1997&quot;&gt;&lt;acronym title=&quot;operating systemThe master control program that runs the computer. It is the first program loaded when the computer is turned on, and its main part, called the kernel, resides in memory at all times. The operating system performs basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers. The operating system acts as an interface between the user and the computer, enabling the user to operate software applications and access all resources available on the computer, including the CPU, media drives, memory, printers, and storage devices.&quot;&gt;OS&lt;/acronym&gt;&lt;/a&gt; updates..&lt;/p&gt;

&lt;p&gt;Novell&#039;s Partner Linux Driver Process web site&lt;sup&gt;&lt;a href=&quot;#r1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; provides full instructions for building KMPs on one&#039;s local development systems.  But Novell also provides another way to build packages:  the openSUSE Build Service (OBS).  OBS allows developers to build rpms (including KMPs) remotely on hardware maintained by Novell.  By using OBS, partners can 1) build KMPs for multiple architectures and distributions, and 2) easily provide KMPs in repositories that customers can access and that interact well with the SUSE Linux installation and update utilities.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;2&quot;&gt;&lt;/a&gt;2.	Scope&lt;/h3&gt;

&lt;p&gt;This document explains how to use OBS to build KMPs for the Code 11 SUSE Linux distributions.  However, Appendix B includes information on how to use OBS to build KMPs (from the same &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/668&quot;&gt;&lt;acronym title=&quot;A program in the form of an ASCII text file. Programs as they are written in a programming language, such as C and Pascal. To run, the program source code must be translated into machine code by either an interpreter or a compiler.&quot;&gt;source code&lt;/acronym&gt;&lt;/a&gt; and packaging files) for Red Hat Enterprise Linux (RHEL) as well.&lt;/p&gt;

&lt;p&gt;With respect to the OBS web and command-line interfaces, this document only describes the specific steps and commands required to build a KMP.  For complete information on the OBS web and command-line interfaces, see the full OBS user documentation&lt;sup&gt;&lt;a href=&quot;#r2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;This document does not provide information about developing or porting driver source code.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;3&quot;&gt;&lt;/a&gt;3.	What is OBS?&lt;/h3&gt;

&lt;p&gt;The openSUSE Build Service is an open and complete distribution development platform which provides software developers with tools to compile, release and publish their software for different Linux distributions and hardware architectures2.  Novell/SUSE&#039;s development teams use OBS to build packages for openSUSE, SLES, SLED, etc.  For the purposes of this document, the term &quot;OBS&quot; refers to both the web interface as well as the systems used to perform actual builds.&lt;/p&gt;

&lt;p&gt;There are a number of benefits to building packages using OBS rather than local development or build systems.  Developers who build locally must install physical and/or virtual machines for each architecture and distribution they wish to support.  Obtaining and maintaining such a large number of build systems can be expensive and cumbersome.  By using OBS, developers can concentrate on developing code and offload much of their build work to the automated OBS processes.&lt;/p&gt;

&lt;p&gt;Another benefit to using OBS is the ability to easily create repositories and publish packages.  Traditionally, developers have had to build their packages then work with their distribution and/or IS&amp;T departments to provide those packages to customers.  But OBS takes care of the distribution work:  after building, OBS places packages in automatically-created YUM repositories that SUSE Linux (and other Linux distributions) can use as installation and update sources.&lt;/p&gt;

&lt;p&gt;Even given the above benefits, it is important to note that OBS is not suited to all development projects.  Partners are encouraged to consider the following points before using OBS to build KMPs:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;OBS is essentially public:  Any source code uploaded to OBS is visible and available to all other persons with OBS logins.&lt;/li&gt;
	&lt;li&gt;Source code uploaded to build KMPs must be licensed under the GPL in order to comply with legal and &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3000&quot;&gt;&lt;acronym title=&quot;In ZENworks Desktop Management, ZENworks Handheld Management, and ZENworks Server Management, a set of rules that define how workstations, handheld devices, and servers can be configured and controlled, including application availability and access, file access, and the appearance and contents of individual desktops. Policies are contained within policy packages, where they are also administered and customized.&quot;&gt;policy&lt;/acronym&gt;&lt;/a&gt; requirements.&lt;sup&gt;&lt;a href=&quot;#r3&quot;&gt;3&lt;/a&gt;,&lt;a href=&quot;#r4&quot;&gt;4&lt;/a&gt;&lt;/sup&gt;  OBS must not be used to build non-GPL kernel modules.&lt;/li&gt;
	&lt;li&gt;Partners should not use OBS to mark their modules as &quot;supported: external&quot; without prior explicit approval from Novell.  (The privilege of marking modules as &quot;supported external&quot; is reserved for partners with whom Novell has L3-level support agreements.)&lt;/li&gt;
	&lt;li&gt;Currently, OBS does not provide a means to build for specific SLE service pack versions or security/maintenance updates.  OBS only supports building for the first customer ship version of each major SLE release.&lt;/li&gt;
	&lt;li&gt;Currently, OBS only supports building packages for ix86 and x86_64 architectures.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4&quot;&gt;&lt;/a&gt;4.	Using OBS to Create KMPs&lt;/h3&gt;

&lt;p&gt;The following sections detail the basic steps to follow when using OBS to build and publish a KMP. Each sub-section describes a particular step in the process, then provides a hands-on example.  The example in each sub-section builds upon the example from the previous sub-section.&lt;/p&gt;

&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;  Although the instructions in this section describe how to use OBS, they do not delve into the details of how to interact with the OBS web interface.  It is assumed that the OBS web interface is  intuitive and that partners will be able to determine how to use the interface to execute the steps listed.&lt;sup&gt;&lt;a href=&quot;#r2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;4.1&quot;&gt;&lt;/a&gt;4.1	Code Preparation&lt;/h3&gt;

&lt;p&gt;OBS creates packages from source code and packaging files.  Therefore, before using OBS to build a KMP, a partner needs to have source code that is ready to be packaged:  development should be complete, the code should build as an external module in compliance with the information in /usr/src/linux/Documentation/kbuild/modules.txt, and the resulting module(s) should function as desired.  As a simple test, if a partner&#039;s source code builds by simply issuing a &quot;make -C &amp;lt;target-kernel-source-directory&amp;gt; M=`pwd`&quot; command in the source code&#039;s top-level directory, then it should be very straightforward to package the code into a KMP.&lt;/p&gt;

&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Note 1:&lt;/b&gt;  As the above paragraph implies, it is certainly possible to have code which builds but whose build structure does not work well with the standard process for building KMPs.  Build structures that do not comply with /usr/src/linux/Documentation/kbuild/modules.txt, or build structures that perform steps in addition to basic module build and install, may require modification in order to &quot;fit&quot; with the steps outlined in the following sections.  Working with such build structures is outside the scope of this document.
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Note 2:&lt;/b&gt;  Often, the impetus to create an external module is the need to make a module from one kernel (the source kernel) work on a different kernel (the target kernel).  This is generically referred to as &quot;backporting&quot;, since the most common scenario is for a developer to start with module source code from the upstream kernel and build it for an older kernel version.  Depending on the complexity of the module source code and the differences between the source and target kernels, backporting can be difficult and is beyond the scope of this document.&lt;/p&gt;&lt;/div&gt;

&lt;h3&gt;&lt;a name=&quot;4.1.1&quot;&gt;&lt;/a&gt;4.1.1	Example&lt;/h3&gt;

&lt;p&gt;The example used in this and following sections is structured around the common use case of a system vendor needing to provide an external driver to support SLE 11 on a particular system.  To work through the example, assume the following:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;The system to be supported is &quot;samplesystem&quot;.&lt;/li&gt;
	&lt;li&gt;The driver to be provided is &quot;sampledriver&quot;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To complete the &quot;Code Preparation&quot; portion of the example:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Create a &quot;sampledriver&quot; directory in a work location on your development system.  E.g.:

	&lt;pre&gt;mkdir -p /work/sampledriver
	
	&lt;/pre&gt;&lt;/li&gt;

	&lt;li&gt;Create a &quot;sampledriver-1.0&quot; directory in the sampledriver directory:

	&lt;pre&gt;mkdir /work/sampledriver/sampledriver-1.0
	
	&lt;/pre&gt;&lt;/li&gt;

	&lt;li&gt;In the sampledriver directory, create a sampledriver.spec file by copying and pasting the text from the sampledriver.spec file in Appendix A.&lt;/li&gt;
	&lt;li&gt;In the sampledriver-1.0 directory, create a sampledriver.c file by copying and pasting the text from the sampledriver.c file in Appendix A.&lt;/li&gt;
	&lt;li&gt;In the sampledriver-1.0 directory, create a Kbuild file by copying and pasting the text from the Kbuild file in Appendix A.&lt;/li&gt;
	&lt;li&gt;Your &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/1267&quot;&gt;&lt;acronym title=&quot;The filing system of volumes, directories, and files that the NetWare server uses to organize data on its hard disks.&quot;&gt;directory structure&lt;/acronym&gt;&lt;/a&gt; should now look like:


&lt;pre&gt;work
    sampledriver
       sampledriver.spec
       sampledriver-1.0
             sampledriver.c
             Kbuild

&lt;/pre&gt;
&lt;/li&gt;

&lt;li&gt;From within the sampledriver-1.0 directory, test building this source code by issuing the command&lt;/p&gt;

&lt;pre&gt;make -C /usr/src/linux M=`pwd`

&lt;/pre&gt;

&lt;p&gt;and verifying that it creates a sampledriver.ko file.  Note:  In order for this make command to succeed, /usr/src/linux should be the top-level directory of a SLE 11 kernel source tree which has been prepared for module build in accordance with the instructions in section 2.4 of /usr/src/linux/Documentation/kbuild/modules.txt.&lt;/p&gt;&lt;/li&gt;

	&lt;li&gt;From within the sampledriver directory, create a tarball of the sampledriver-1.0 directory:&lt;/p&gt;

&lt;pre&gt;tar cvjf sampledriver-1.0.tar.bz2 sampledriver-1.0

&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a name=&quot;4.2&quot;&gt;&lt;/a&gt;4.2	Creating an OBS Project&lt;/h3&gt;

&lt;p&gt;The next step in using OBS to build a KMP is to create an OBS project.&lt;/p&gt;

&lt;p&gt;An OBS project is basically an abstract container for packages that are related in some way.  OBS projects may contain sub-projects to further categorize packages.  OBS projects and sub-projects correspond to how repositories are presented to users.&lt;/p&gt;

&lt;p&gt;OBS projects can be created at the root level or in existing OBS project containers such as &quot;home&quot; or &quot;isv&quot;.  The root level is generally reserved for official community projects, the &quot;home&quot; container is intended for individual developers to use as a testing area, and the &quot;isv&quot; container is where Novell encourages partners to create their projects.&lt;/p&gt;

&lt;p&gt;Note that any OBS project repository &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2554&quot;&gt;&lt;acronym title=&quot;Uniform Resource LocatorThe addressing system used in the World Wide Web and other Internet resources. The URL contains information about the method of access (http://, for example), the name of the host and domain (such as www.suse.de) to be accessed, and the path of any file or document (such as /company/index.html) to be accessed. The complete URL of this example is http://www.suse.de/company/index.html.&quot;&gt;URL&lt;/acronym&gt;&lt;/a&gt; contains the name of its associated project.  For this reason, Novell encourages partners to establish project names that reflect their organizations.  E.g., a Novell partner with the name &quot;AAA Computers&quot; might wish to establish the project &quot;aaa-computers&quot; in the &quot;isv&quot; container.  The URL for a SLE 11 repository associated with the &quot;aaa-computer&quot; project would be  &lt;a href=&quot;http://download.opensuse.org/repositories/isv://aaa-computers/SLE_11&quot;&gt;http://download.opensuse.org/repositories/isv://aaa-computers/SLE_11&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;
While no authorization is needed to create projects in the &quot;home&quot; container, projects in the &quot;isv&quot; container are more controlled.  Partners who wish to create a project in the &quot;isv&quot; container should post a request to the opensuse-buildservice mail list2 or contact their Novell representative.&lt;/p&gt;

&lt;p&gt;IHV/ISV partners can certainly use their main projects for all their KMPs.  However, often partners have sets of packages that apply to different hardware and software configurations.  For instance, a partner &quot;AAA Computers&quot; might wish to provide one set of drivers for &quot;Peripheral-A&quot; and another set of drivers for &quot;Peripheral-B&quot;.  The partner could use a main &quot;isv:aaa-computers&quot; project for both the Peripheral-A and Peripheral-B drivers...  with the result that all the KMPs would be provided in a single repository (e.g., &lt;a href=&quot;http://download.opensuse.org/repositories/isv://aaa-computers/SLE_11&quot;&gt;http://download.opensuse.org/repositories/isv://aaa-computers/SLE_11&lt;/a&gt; ).  A more useful approach might be for AAA Computers to create two sub-projects: &quot;isv:aaa-computers:peripheral-a&quot; and &quot;isv:aaa-computers:peripheral-b&quot;, each containing its own drivers and each providing its own repository.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.2.1&quot;&gt;&lt;/a&gt;4.2.1	Example&lt;/h3&gt;

&lt;div class=&quot;callout&quot;&gt;Note:  Because OBS users are automatically provided with a &quot;home:&amp;lt;loginname&amp;gt;&quot; project (no authorization needed), this example demonstrates how to create a sub-project in the user&#039;s &quot;home:&amp;lt;loginname&amp;gt;&quot; project rather than in the OBS &quot;isv&quot; container.&lt;/div&gt;

&lt;p&gt;To create the samplesystem sub-project using the OBS web interface:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Login to &lt;a href=&quot;http://build.opensuse.org&quot;&gt;http://build.opensuse.org&lt;/a&gt; using your Novell login.  (The &lt;a href=&quot;http://build.opensuse.org&quot;&gt;http://build.opensuse.org&lt;/a&gt; website also provides a link to obtain a Novell login if necessary.)&lt;/li&gt;
	&lt;li&gt;On the main OBS page, click the &quot;Home Project&quot; link to display your OBS home:&amp;lt;loginname&amp;gt;:samplesystem project page.&lt;/li&gt;
	&lt;li&gt;Click to create a &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/885&quot;&gt;&lt;acronym title=&quot;In exteNd Director, a project included within another project. For example, a Web Archive (WAR) can include JAR projects; and an Enterprise Application Archive (EAR) can include WAR, EJB, and JAR projects.&quot;&gt;subproject&lt;/acronym&gt;&lt;/a&gt;.  Name the subproject &quot;samplesystem&quot;.  Enter and save the appropriate information, then OBS should display your samplesystem subproject page.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4.3&quot;&gt;&lt;/a&gt;4.3	Defining Target Distributions&lt;/h3&gt;

&lt;p&gt;Once an OBS user has created a project, he/she can define the target distributions that apply to the project.  A project should include a distribution as a target if any of the packages in the project will --- or even may ---  need to be built for that distribution.  Whether a particular package is to be built for a particular target distribution can be specified on a package level; the project should include all distributions that might be needed.&lt;/p&gt;

&lt;p&gt;Note that OBS refers to a project&#039;s target distributions as &quot;Build Repositories&quot;:  collections of packages needed to build project components against a particular target.  With respect to OBS projects, there are the Build Repositories that users select as target distributions (i.e., repositories used during build)... and there are the Build Repositories that OBS creates to provide the project&#039;s built packages.  Any Build Repositories that OBS creates to provide a project&#039;s built packages can be selected as target distribution repositories for other projects.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.3.1&quot;&gt;&lt;/a&gt;4.3.1	Example&lt;/h3&gt;

&lt;p&gt;To set target distributions for your OBS samplesystem project:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;On the OBS samplesystem subproject page, use the &quot;Build Repositories&quot; section to add SLE_11 and RHEL_5.  (While the bulk of this document discusses building for SLE 11, Appendix B describes how to use the same build structure and source code to build for RHEL 5 as well.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4.4&quot;&gt;&lt;/a&gt;4.4	Adding Packages to a Project&lt;/h3&gt;

&lt;p&gt;OBS projects can contain one or more packages, but the name of each package must be explicitly specified on the OBS project page before uploading any source code.  (Using the OBS project page to add a package name is analogous to adding a directory which will hold the package&#039;s source code and packaging files.)  Once an OBS user adds a package name to his project, he can upload his source code (generally in the form of a tarball).  As noted in section 4.1 above, partners who wish to build KMPs should ensure that their source code is structured in accordance with /usr/src/linux/Documentation/kbuild/modules.txt.&lt;/p&gt;

&lt;p&gt;Uploading module source code (including Kbuild files and/or Makefiles) provides OBS with the information needed to create the pertinent kernel modules.  But to create rpms, OBS also needs package meta-data provided via a *.spec file.&lt;/p&gt;

&lt;p&gt;The basic spec file template for building SLE 11 KMPs is available in the Kernel Module Packages Manual – Code 115.  By using this template as a basis to create his own spec file, an IHV/ISV can ensure that his modules will be installed and configured to interact correctly with SUSE Linux.  The spec file in Appendix A is taken from the KMP spec file template and modified to apply to the &quot;sampledriver&quot; package.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.4.1&quot;&gt;&lt;/a&gt;4.4.1	Example&lt;/h3&gt;

&lt;p&gt;To add a sampledriver package to your samplesystem project:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;On the OBS home:&amp;lt;loginname&amp;gt;:samplesystem project page, click the appropriate link to add a package.  Name the package &quot;sampledriver&quot;.  Complete the required fields and save the data, then OBS will display the sampledriver package page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that the sampledriver package exists, source code and build files can be uploaded to it.  Uploading files to OBS can be done using either the OBS web-interface or command-line client.  To upload the sampledriver files using the OBS web-interface:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;In the &quot;Files&quot; section, click to add a file to the sampledriver package.  Upload the sampledriver-1.0.bz2 tarball from the /work/sampledriver directory.&lt;/li&gt;
	&lt;li&gt;In the &quot;Files&quot; section, click to add a file to the sampledriver package.  Upload the sampledriver.spec file from the /work/sampledriver directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To upload the sampledriver files using the OBS command-line client:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Install the &quot;osc&quot; package from the SLE 11 SDK ( &lt;a href=&quot;http://developer.novell.com/wiki/index.php/SLES_SDK&quot;&gt;http://developer.novell.com/wiki/index.php/SLES_SDK&lt;/a&gt;).  The osc package provides the &quot;osc&quot; utility, which is used to interact with OBS.  (Note:  Readers familiar with the Subversion Version Control System may find it useful to analogize the &quot;osc&quot; command to the &quot;svn&quot; command.  Use the &quot;osc help&quot; command to view options.)&lt;/li&gt;
	&lt;li&gt;From a staging area on your development system (e.g., /work), check out the sampledriver package from the home:&amp;lt;loginname&amp;gt;:samplesystem project:

	&lt;pre&gt;co home:&amp;lt;loginname&amp;gt;:samplesystem sampledriver&lt;/pre&gt;
	&lt;/li&gt;

	&lt;li&gt;The above command will create the following directory structure:

	&lt;pre&gt;work
		home:&amp;lt;loginname&amp;gt;:samplesystem
			.osc
			sampledriver
			&lt;/pre&gt;
&lt;/li&gt;


&lt;div class=&quot;callout&quot;&gt;(&lt;b&gt;Note: &lt;/b&gt; The &quot;.osc&quot; file provides information that the osc tool uses to interact with OBS.)&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;li&gt;Copy the sampledriver.spec and sampledriver-1.0.tgz files from /work/sampledriver into the empty /work/home:&amp;lt;loginname&amp;gt;:samplesystem/sampledriver directory:

&lt;pre&gt;	cd /work/home:&amp;lt;loginname&amp;gt;:samplesystem/sampledriver
	cp /work/sampledriver/* .
	
	&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Upload (check in) the sampledriver source code and build files to OBS:

&lt;pre&gt;	osc add *
	osc ci
	
	&lt;/pre&gt;
&lt;/li&gt;
&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;  The &quot;osc ci&quot; command will prompt for a check-in message.&lt;/div&gt;

&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4.5&quot;&gt;&lt;/a&gt;4.5	Setting Target Distributions for a Package&lt;/h3&gt;

&lt;p&gt;By default, a package is &quot;enabled&quot; to build for all the target distributions associated with the package&#039;s parent project.  However, OBS users can override this default and disable building a specific package for a particular target distribution.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.5.1&quot;&gt;&lt;/a&gt;4.5.1	Example&lt;/h3&gt;

&lt;p&gt;To set the target distributions for your sampledriver package:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;On your OBS sampledriver package page, click the appropriate links in the &quot;Package Flags&quot; section to specify that the package should be built for SLE 11 only (i.e., disable building for RHEL 5).&lt;/li&gt;&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4.6&quot;&gt;&lt;/a&gt;4.6	Building KMPs&lt;/h3&gt;

&lt;p&gt;When an OBS package is enabled to build on a specific target distribution, the package will be built/rebuilt automatically whenever updates are made to the package or to the target distribution.  However, OBS users can also manually trigger builds for each distribution by clicking on appropriate items in the &quot;Build Status&quot; section of the OBS package page or by using the OBS command-line client.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.6.1&quot;&gt;&lt;/a&gt;4.6.1	Example&lt;/h3&gt;

&lt;p&gt;To build your sampledriver package using the OBS web interface:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;In the &quot;Build Status&quot; section of the OBS sampledriver page, click on the SLE_11 icon to trigger rebuilds for this target distribution.&lt;/li&gt;
	&lt;li&gt;Refresh the page (by using the &quot;Build Status&quot; refresh icon) until the status changes for the SLE_11 sampledriver builds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To build your sampledriver package using the OBS command-line interface:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Change directory to the directory containing the home:&amp;lt;loginname&amp;gt;:samplesystem project (e.g., /work or other staging location created in section 4.1.1).&lt;/li&gt;
	&lt;li&gt;Tell OBS to rebuild the sampledriver package (for all enabled target distributions):
	
	&lt;pre&gt;osc rebuildpac home:&amp;lt;loginname&amp;gt;:samplesystem sampledriver&lt;/pre&gt;&lt;/li&gt;

	&lt;li&gt;After issuing the above command, view the status from your build request:

	&lt;pre&gt;osc results home:&amp;lt;loginname&amp;gt;:samplesystem sampledriver&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;4.7&quot;&gt;&lt;/a&gt;4.7	Publishing KMPs&lt;/h3&gt;

&lt;p&gt;One of the great benefits that partners gain by using the openSUSE Build System is the ability to provide not just packages (or in this case, KMPs), but also repositories that end-users can access to install the KMPs.  OBS makes it very simple to provide a repository that is fully compatible and integrated with the SUSE Linux installation and update utilities.&lt;/p&gt;

&lt;p&gt;By default, OBS creates and publishes a separate repository for each of a project&#039;s target distributions.  The OBS project page &quot;Goto Repository&quot; link for each target distribution provides an easy way to view the actual repositories.  Alternatively, users can access each repository directly by using the URL  &lt;a href=&quot;http://download.opensuse.org/repositories/home://loginname&amp;gt;/&amp;lt;sub-project-name&amp;gt;/&amp;lt;target-distribution&amp;gt;/&quot; title=&quot;http://download.opensuse.org/repositories/home://loginname&amp;gt;/&amp;lt;sub-project-name&amp;gt;/&amp;lt;target-distribution&amp;gt;/&quot;&gt;http://download.opensuse.org/repositories/home://l...&lt;/a&gt; .  Note that while publishing is enabled by default, OBS users can enable or disable publishing for specific repositories as desired.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;4.7.1&quot;&gt;&lt;/a&gt;4.7.1	Example&lt;/h3&gt;

&lt;div class=&quot;callout&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;  Completing this step may require waiting for OBS to finish any scheduled builds and create/populate appropriate repositories.&lt;/div&gt;

&lt;p&gt;To view the repositories for the samplesystem subproject:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Access the OBS home:&amp;lt;loginname&amp;gt;:samplesystem project page.  In the &quot;Build Repositories&quot; section, click the &quot;Goto Repository&quot; link for the SLE_11 target distribution.  Navigate into the separate architecture directories to view the built sampledriver KMPs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;5.&quot;&gt;5.&lt;/a&gt;	Using OBS Repositories&lt;/h3&gt;

&lt;p&gt;Once a partner makes KMPs available in an OBS repository, anyone (partners, customers, etc.) can add the repository URL as an installation/update source from which to install the KMPs.  There are several common use cases in which OBS repositories might be used:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;A system integrator might wish to sell pre-loaded systems that include the OBS repository as a pre-configured installation/update source.  In this case, registering the repository (and installing appropriate initial KMP(s) from the repository) would be done by system integrator as part of the system installation process.  After customers purchase the systems, they might access the repository to get updated KMPs.&lt;/li&gt;
	&lt;li&gt;An IHV might wish to provide a KMP to support a particular hardware product.  In this case, the partner might provide customers with documentation that details the repository URL and explains how to register the repository and install KMPs from it.&lt;/li&gt;
	&lt;li&gt;A partner who creates a SLE-based appliance might wish to include an OBS repository as an installation/update source.  In this case, the process of registering the repository (and installing appropriate initial KMP(s) from the repository) would be part of the appliance build process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;5.1&quot;&gt;&lt;/a&gt;5.1	Example&lt;/h3&gt;

&lt;p&gt;To add the OBS samplesystem repository and install the sampledriver KMPs from it:&lt;/p&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;Install a system with SLES/SLED 11.  Using YaST2-&amp;gt;&quot;Software Repositories&quot; or YaST2-&amp;gt;&quot;Add-on Product&quot;, add the OBS SLE 11 samplesystem repository by specifying the URL  &lt;a href=&quot;http://download.opensuse.org/repositories/home://&amp;lt;loginname&amp;gt;/samplesystem/SLE_11/&quot; title=&quot;http://download.opensuse.org/repositories/home://&amp;lt;loginname&amp;gt;/samplesystem/SLE_11/&quot;&gt;http://download.opensuse.org/repositories/home://&amp;lt;...&lt;/a&gt; .&lt;/li&gt;
	&lt;li&gt;Using YaST2-&amp;gt;&quot;Software Management&quot;, click to show packages in the samplesystem repository, then install the desired KMP(s).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a name=&quot;6.&quot;&gt;&lt;/a&gt;6.	Summary&lt;/h3&gt;

&lt;p&gt;IHVs and ISVs who provide drivers and other kernel modules face some unique development challenges in ensuring that their products will interact correctly with the SUSE Linux operating environments.  By using Novell&#039;s openSUSE Build Service, these partners can greatly simplify the process to build, package and distribute their kernel-space products.&lt;/p&gt;

&lt;h3&gt;&lt;a name=&quot;Appendix A&quot;&gt;&lt;/a&gt;Appendix A – Sample Files&lt;/h3&gt;

&lt;p&gt;The following sampledriver.c and Kbuild files may be used to build the sampledriver.ko module referenced in Section 4 above.  The following sampledriver.spec file is based on the spec file template in the Kernel Module Packages Manual – Code 11&lt;sup&gt;&lt;a href=&quot;#r5&quot;&gt;5&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;

&lt;p&gt;sampledriver.c&lt;/p&gt;
&lt;pre&gt;
/* 
 * sampledriver.c - A sample driver which simply creates an entry in the proc filesystem.
 * 
 * Copyright (C) 2009
 * Ann Davis &amp;lt;andavis@novell.com&amp;gt;, Novell Inc. 
 * 
 * This program is free software; you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation.
 * 
 * A copy of the GNU General Public License can be obtained from &lt;a href=&quot;http://www.gnu.org/&quot;&gt;http://www.gnu.org/&lt;/a&gt;.
 * /

#include &amp;lt;linux/module.h&amp;gt;
#include &amp;lt;linux/init.h&amp;gt;

MODULE_AUTHOR(&quot;Ann Davis &amp;lt;andavis@novell.com&amp;gt;&quot;);
MODULE_DESCRIPTION(&quot;Sample driver&quot;);
MODULE_LICENSE(&quot;GPL&quot;);

static struct proc_dir_entry *proc_entry;
static char *sampledriver_message = &quot;Hello from sampledriver.&quot;

int sampledriver_read(char *page, char **start, off_t off, int count, int *eof, void *data);
{
	int retVal = 0;

	retVal = sprintf(page, &quot;%s\n&quot;, sampledriver_message);

	return retVal;
}

int __init init_sampledriver(void)
{
	int retVal = 0;

	printk(KERN_INFO &quot;In sampledriver init function...\n&quot;);

	proc_entry = create_proc_entry(&quot;sampledriver_info&quot;, 0644, NULL);
	if (proc_entry == NULL) {
		printk(KERN_INFO &quot;sampledriver:  Unable to create proc entry.\n&quot;);
		retVal = -ENOMEM;
	}
	else {
		proc_entry-&amp;gt;read_proc = sampledriver_read;
	}
	
	return retVal;
}

void __exit exit_sampledriver(void)
{
	printk(KERN_INFO &quot;In sampledriver exit function...\n&quot;);
	remove_proc_entry(&quot;sampledriver&quot;, NULL);
}

module_init(init_sampledriver);
module_exit(exit_sampledriver);
&lt;/pre&gt;

&lt;p&gt;Kbuild&lt;/p&gt;

&lt;pre&gt;obj-m += sampledriver.o

&lt;/pre&gt;

&lt;p&gt;sampledriver.spec&lt;/p&gt;

&lt;pre&gt;
#norootforbuild 

Name:			sampledriver 
BuildRequires:	%kernel_module_package_buildreqs 
License:		GPL 
Group:			System/Kernel 
Summary:		Sample Driver 
Version:		1.0 
Release:		0 
Source0:		%name-%version.tar.bz2 
BuildRoot:		%{_tmppath}/%{name}-%{version}-build

%kernel_module_package

%description 
This package contains the sampledriver.ko module. 

%prep 
%setup 
set -- * 
mkdir source 
mv &quot;$@&quot; source/ 
mkdir obj 

%build 
for flavor in %flavors_to_build; do 
        rm -rf obj/$flavor 
        cp -r source obj/$flavor 
        make -C %{kernel_source $flavor} modules M=$PWD/obj/$flavor 
done 

%install 
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT 
export INSTALL_MOD_DIR=updates 
for flavor in %flavors_to_build; do 
        make -C %{kernel_source $flavor} modules_install M=$PWD/obj/$flavor 
done

%changelog
Mon Oct 19 2009 – &lt;a href=&quot;mailto:andavis@novell.com&quot;&gt;andavis@novell.com&lt;/a&gt;
- Initial version.

&lt;/pre&gt;

&lt;h3&gt;&lt;a name=&quot;Appendix B&quot;&gt;&lt;/a&gt;Appendix B – Building for Red Hat Enterprise Linux (RHEL)&lt;/h3&gt;

&lt;p&gt;Red Hat and Novell have participated with other Linux community members in the Linux Foundation&#039;s efforts to establish cross-vendor standards for building, installing, and distributing drivers.&lt;sup&gt;&lt;a href=&quot;#r6&quot;&gt;6&lt;/a&gt;&lt;/sup&gt;  While differences still exist between distributions, partners can now create SLES kernel-module-package build structures that need very few (or even no) modifications to build correctly for RHEL..&lt;/p&gt;

&lt;p&gt;Because Red Hat&#039;s Driver Update Program&lt;sup&gt;&lt;a href=&quot;#r7&quot;&gt;7&lt;/a&gt;&lt;/sup&gt; spec file template is very similar to Novell&#039;s, the sampledriver code provided in Appendix A requires only a minor modification to build appropriately for RHEL 5:  While the SLE install location for external modules is /lib/modules/&amp;lt;kernel-version&amp;gt;/updates, the RHEL 5 install location is /lib/modules/&amp;lt;kernel-version&amp;gt;/extra/%{name}.  Fortunately, OBS has the ability to perform distro-specific functions (see &lt;a href=&quot;http://en.opensuse.org/Build_Service/cross_distribution_package_how_to&quot;&gt;http://en.opensuse.org/Build_Service/cross_distribution_package_how_to&lt;/a&gt; ), so there is no need to create a separate OBS sampledriver package (or even a separate sampledriver.spec file) for RHEL.  All that is required to build for both RHEL and SLE is to modify the sampledriver.spec file as noted below, then enable both the RHEL and SLE target distributions for the OBS home:&amp;lt;loginname&amp;gt;:samplesystem project.&lt;/p&gt;

&lt;p&gt;sampledriver.spec (modified to build for both SLE and RHEL)&lt;/p&gt;

&lt;pre&gt;#norootforbuild 

Name:			sampledriver 
BuildRequires:	%kernel_module_package_buildreqs 
License:		GPL 
Group:			System/Kernel 
Summary:		Sample Driver 
Version:		1.0 
Release:		0 
Source0:		%name-%version.tar.bz2 
BuildRoot:		%{_tmppath}/%{name}-%{version}-build

%kernel_module_package

%description 
This package contains the sampledriver.ko module. 

%prep 
%setup 
set -- * 
mkdir source 
mv &quot;$@&quot; source/ 
mkdir obj 

%build 
for flavor in %flavors_to_build; do 
        rm -rf obj/$flavor 
        cp -r source obj/$flavor 
        make -C %{kernel_source $flavor} modules M=$PWD/obj/$flavor 
done 

%install 
export INSTALL_MOD_PATH=$RPM_BUILD_ROOT 
%if 0%{?rhel_version} == 501
export INSTALL_MOD_DIR=extra/%{name}
%else
export INSTALL_MOD_DIR=updates
%endif
for flavor in %flavors_to_build; do 
        make -C %{kernel_source $flavor} modules_install M=$PWD/obj/$flavor 
done

%changelog
* Tue Oct 20 2009 – &lt;a href=&quot;mailto:andavis@novell.com&quot;&gt;andavis@novell.com&lt;/a&gt;
- Add RHEL support.
* Mon Oct 19 2009 – &lt;a href=&quot;mailto:andavis@novell.com&quot;&gt;andavis@novell.com&lt;/a&gt;
- Initial version.

&lt;/pre&gt;

&lt;h3&gt;&lt;a name=&quot;References&quot;&gt;&lt;/a&gt;References&lt;/h3&gt;

&lt;ul class=&quot;spread&quot;&gt;
	&lt;li&gt;&lt;a name=&quot;r1&quot;&gt;&lt;/a&gt;[1]  Novell, Inc.  Partner Linux Driver Process (PLDP).  Project website at &lt;a href=&quot;http://developer.novell.com/wiki/index.php/Partner_Linux_Driver_Process&quot;&gt;http://developer.novell.com/wiki/index.php/Partner_Linux_Driver_Process&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r2&quot;&gt;&lt;/a&gt;[2]  openSUSE Build Service (OBS).  Documentation website at &lt;a href=&quot;https://build.opensuse.org/documentation/obs&quot;&gt;https://build.opensuse.org/documentation/obs&lt;/a&gt; .  Forums website at &lt;a href=&quot;http://forums.opensuse.org/opensuse-build-service-obs/&quot;&gt;http://forums.opensuse.org/opensuse-build-service-obs/&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r3&quot;&gt;&lt;/a&gt;[3]  Free Software Foundation.  Licenses website at &lt;a href=&quot;http://www.gnu.org/licenses&quot;&gt;http://www.gnu.org/licenses&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r4&quot;&gt;&lt;/a&gt;[4]  Linux Foundation.  Kernel Driver Statement.  Website at &lt;a href=&quot;https://www.linuxfoundation.org/en/Kernel_Driver_Statement&quot;&gt;https://www.linuxfoundation.org/en/Kernel_Driver_Statement&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r5&quot;&gt;&lt;/a&gt;[5]  Partner Linux Driver Process, Andreas Gruenbacher.  Kernel Module Packages Manual for Code 11.  &lt;a href=&quot;http://developer.novell.com/wiki/index.php/Image:Kmpm-code11.pdf&quot;&gt;http://developer.novell.com/wiki/index.php/Image:Kmpm-code11.pdf&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r6&quot;&gt;&lt;/a&gt;[6]  Linux Foundation.  Driver Backport Workgroup.  Website at &lt;a href=&quot;http://www.linuxfoundation.org/collaborate/workgroups/driver-backport&quot;&gt;http://www.linuxfoundation.org/collaborate/workgroups/driver-backport&lt;/a&gt; .&lt;/li&gt;

	&lt;li&gt;&lt;a name=&quot;r7&quot;&gt;&lt;/a&gt;[7]  Red Hat, Inc.  Driver Update Program.  Website at &lt;a href=&quot;http://dup.et.redhat.com/&quot;&gt;http://dup.et.redhat.com/&lt;/a&gt; .&lt;/li&gt;
&lt;/ul&gt; &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9226/using-opensuse-build-service-create-and-distribute-kernel-module-packages#comments</comments>
 <category domain="http://www.novell.com/communities/content-type/appnote">AppNote</category>
 <category domain="http://www.novell.com/communities/product/opensuse">openSUSE</category>
 <category domain="http://www.novell.com/communities/taxonomy/term/79">SUSE Linux Enterprise</category>
 <category domain="http://www.novell.com/communities/coolsolutions/sled">SUSE Linux Enterprise Desktop</category>
 <category domain="http://www.novell.com/communities/product/suse+linux+enterprise+server">SUSE Linux Enterprise Server</category>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Wed, 04 Nov 2009 11:21:02 -0700</pubDate>
 <dc:creator>andavis</dc:creator>
 <guid isPermaLink="false">9226 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Heads Up!  Novell Pulse Coming Your Way</title>
 <link>http://www.novell.com/communities/node/9225/heads-novell-pulse-coming-your-way</link>
 <description> &lt;p&gt;Novell just announced the first real-time collaboration platform for the enterprise, called Novell Pulse.  Novell and Google jointly announced that they are working together to enable Novell Pulse users and Google Wave users to seamlessly work together across both systems.  Novell is the first collaboration provider to integrate Google Wave.&lt;/p&gt;
&lt;h2&gt;What is Novell Pulse?&lt;/h2&gt;
&lt;p&gt;Novell Pulse is the first enterprise class, real-time collaboration platform that unites communication, authoring and social messaging tools.  Novell Pulse helps drive enterprise productivity and innovation by making it easier to communicate digitally, generate ideas and share information.  People continents apart can share and edit documents, jointly browse websites, and have a digital conversation, all in real-time.  Individuals can also manage content overload by filtering for people and topics to follow as well as storing files—both native and office type—along with their related groups and conversations.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What can you do with Pulse? &lt;/b&gt;&lt;br /&gt;
Novell Pulse is an enterprise real-time collaboration solution. Real-time collaboration tools allows people to easily share and work together on documents, have real-time conversations, interact using social media tools, and much more. &lt;/p&gt;
&lt;p&gt;Novell Pulse was designed specifically for the enterprise user, so it includes robust security and management capabilities. Novell Pulse will also interoperate with other real-time technologies like Google Wave, as well as existing collaboration solutions.&lt;/p&gt;
&lt;h2&gt;How would you use it in a business setting?&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;Communication.&lt;/i&gt;  Say you have a project that requires input from 5 people.  Before Novell Pulse, you would email those 5 people and receive separate responses—some of which would be responding to your email, while others would be responding to other emails from the distribution list, depending on when each was composed.  Then you&#039;d have to aggregate all the responses, synthesize them, and begin the cycle of emails all over again. &lt;/p&gt;
&lt;p&gt;With Novell Pulse, you send one, synchronous message, and all 5 people can  respond to you and each other in real-time.  No aggregation, missed information or repetition of efforts—and if you make the conversation public, you may get valuable input from someone you weren&#039;t expecting.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Intra- and Inter-company Collaboration. &lt;/i&gt; For example, you plan to issue a product datasheet jointly with one of your partners.  You work in different document publishing environments such as OpenOffice and MS Word.  Before Novell Pulse, you would have written the press release and sent it as an OpenOffice attachment to everyone on your team within your company for input, then aggregated all the input, edited it down for redundancy, and then converted it to MS Word before sending as an attachment to your partner for input.  Then you&#039;d begin the cycle again for every round of edits.  &lt;/p&gt;
&lt;p&gt;With Novell Pulse, you and your partner could simply collaborate on the document in real-time and then both companies could export the document into their preferred format when it&#039;s final.  This also works seamlessly if you are using Novell Pulse and your partner is using Google Wave.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Breaking Through the Clutter. &lt;/i&gt;  Information overload is a serious concern for companies today. Users are hit with information from all directions—email, instant messenger, blogs, micro-blogs, social networks, calendars.  By unifying all these information mediums into one, easy-to-use interface with folders, filtering and search, Novell Pulse enables users to make sense of it all and focus on what&#039;s really important.&lt;/p&gt;
&lt;h2&gt;Working With Google&lt;/h2&gt;
&lt;p&gt;This is a technical collaboration between Google and Novell to bring federation to both systems, using the Wave Federation Protocol. We&#039;re the first company to show federation using the WFP, and we&#039;re the first collaboration solution to integrate with Google Wave. Novell Pulse and Google Wave systems can operate in tandem so that users of the two platforms can work together in real time, each using their preferred tool. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;What does federation with Google Wave involve?&lt;/b&gt;&lt;br /&gt;
Federation involves using a &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/785&quot;&gt;&lt;acronym title=&quot;1. Short for protocol stack.2. A uniform set of rules or an agreed-upon method of communication that enable two devices to connect and transmit data or to send particular types of information between computer systems. Protocols determine how data is transmitted between computing devices and over networks. AFP, ALAP, RTMP, NCP, and IPX are examples of network protocols. AFP, ALAP, RTMP, NCP, and IPX are examples of network protocols. TCP/IP (Transfer Control Protocol/Internet Protocol), HTTP (Hypertext Transfer Protocol), and FTP (File Transfer Protocol) are examples of Internet protocols.&quot;&gt;protocol&lt;/acronym&gt;&lt;/a&gt; call the Wave Federation Protocol to enable messages (or Waves) to be shared in real-time, character-for-character, as they are being created or edited between two or more separate systems.  &lt;/p&gt;
&lt;p&gt;The sharing is based on addressing.  You place addresses ( which look just like e-mail addresses) from potentially different domains on a message or Wave, then the message is live and any edits made by anyone will be automatically shared in real-time.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;How is Novell Pulse different from Google Wave?&lt;/b&gt;&lt;br /&gt;
The design point for Novell Pulse is the enterprise user, so we&#039;ve placed a strong emphasis on features such as security and management controls. We&#039;ve also drawn on our 20+ years experience in the enterprise collaboration space with products like GroupWise, and worked to address enterprise and business use-cases. &lt;/p&gt;
&lt;p&gt;Novell Pulse is a key component in Novell’s collaboration strategy and open collaboration architecture, working standalone or in concert with Novell’s broader product portfolio. Novell Pulse is very complementary to Google Wave and to our existing collaboration products such as GroupWise. Key features, which draw on the best of e-mail, instant messaging, document sharing, social connections, real-time co-editing and enterprise controls, include:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Security&lt;br /&gt;
Provisioning, sign-on and permissions leverage enterprise identity and access management systems, directory servers and audit tools to integrate with established processes, keep data safe and support compliance requirements.&lt;/li&gt;
&lt;li&gt;Real-time collaboration&lt;br /&gt;
Collaborative editing and document sharing enables users to get work done with other users in real-time, from co-editable online documents to the ability to share and comment on traditional office documents in real time.&lt;/li&gt;
&lt;li&gt; Unified Inbox&lt;br /&gt;
A single interface allows users to see, sort and filter all their personal and professional content from various social messaging services, email, Wave, etc. all in one place.&lt;/li&gt;
&lt;li&gt; Enterprise social messaging&lt;br /&gt;
Social Blog allows users to share, follow and comment on topics and ideas.&lt;/li&gt;
&lt;li&gt;Real-time awareness and chat&lt;br /&gt;
Allows users to know exactly when their colleagues are available via people, group and message activity monitoring.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Novell Pulse will be available in both cloud and on-premise deployments.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Is Novell Pulse designed for the consumer or the enterprise customers?&lt;/b&gt;&lt;br /&gt;
Novell Pulse is focused on the enterprise customers. It addresses the needs of a global, knowledge-based workforce and gives enterprises the confidence to embrace real-time collaboration technologies. Novell Pulse leverages Novell&#039;s expertise and experience developing enterprise collaboration and communication tools, as well as industry leadership in creating strong identity and security management solutions.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Is Novell Pulse open source?&lt;/b&gt;&lt;br /&gt;
No.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;When will Novell Pulse be available? What will it cost? &lt;/b&gt;&lt;br /&gt;
Novell Pulse will be generally available in the first half of 2010 in a cloud deployment, and with an on-premise deployment option in a subsequent release.  Pricing will be announced at general availability.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;How can I get access in when this goes to beta availability?&lt;/b&gt;&lt;br /&gt;
We&#039;ll be announcing that later this year.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Where can I see Novell Pulse in action?&lt;/b&gt;&lt;br /&gt;
Novell Pulse was demonstrated on Nov. 4, 2009 during the Integrating Google Wave into the Enterprise keynote at Enterprise 2.0 in San Francisco. We&#039;ll be giving previews of the technology over the coming weeks via Novell blogs and video. Stay tuned. A select beta is scheduled for early 2010.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Where can I get more information about Novell Pulse?&lt;/b&gt;&lt;br /&gt;
You can find more information at  &lt;a href=&quot;http://www.novell.com/pulse&quot; title=&quot;www.novell.com/pulse&quot;&gt;www.novell.com/pulse&lt;/a&gt; . We&#039;ll be previewing more of Novell Pulse over the coming weeks too.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/partners/endusercomputing&quot; class=&quot;og_links&quot;&gt;End-User Computing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9225/heads-novell-pulse-coming-your-way#comments</comments>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/partners/endusercomputing" xmlns="http://drupal.org/project/og">End-User Computing</group>
 <pubDate>Wed, 04 Nov 2009 09:28:47 -0700</pubDate>
 <dc:creator>ssalgy</dc:creator>
 <guid isPermaLink="false">9225 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>BrainShare Jacket Promotion</title>
 <link>http://www.novell.com/communities/node/9223/brainshare-jacket-promotion</link>
 <description> &lt;p&gt;Get a free jacket by being one of the first 400 to register for BrainShare 2010 using this registration code: jacket. Sign up and share the news with your friends. The red and gray, athletic jacket is the perfect jacket for the spring weather in Utah. Jackets will be available for pick up at the registration booth on Monday, March 22, 2010.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9223/brainshare-jacket-promotion#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Tue, 03 Nov 2009 00:00:00 -0700</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9223 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>BrainShare - Flip the Switch</title>
 <link>http://www.novell.com/communities/node/9201/brainshare-flip-switch</link>
 <description> &lt;p&gt;Here&#039;s a link to a great article about some of the changes and modifications we&#039;ve made for BrainShare 2010. Check it out to see how  we&#039;ve incorporated your feedback to make this year&#039;s conference better than ever.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.novell.com/connectionmagazine/2009/10/brainshare_2010_preview.html&quot; title=&quot;http://www.novell.com/connectionmagazine/2009/10/brainshare_2010_preview.html&quot;&gt;http://www.novell.com/connectionmagazine/2009/10/b...&lt;/a&gt;&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/zenworks&quot; class=&quot;og_links&quot;&gt;ZENworks Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9201/brainshare-flip-switch#comments</comments>
 <category domain="http://www.novell.com/communities/topic/brainshare-2010">BrainShare 2010</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/gwmag" xmlns="http://drupal.org/project/og">GroupWise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ism" xmlns="http://drupal.org/project/og">Identity &amp;amp; Security Management Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/ntc" xmlns="http://drupal.org/project/og">Teaming &amp;amp; Conferencing Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/zenworks" xmlns="http://drupal.org/project/og">ZENworks Cool Solutions</group>
 <pubDate>Tue, 27 Oct 2009 00:00:00 -0600</pubDate>
 <dc:creator>mattclayton</dc:creator>
 <guid isPermaLink="false">9201 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Performance Scripting for GNOME Desktop</title>
 <link>http://www.novell.com/communities/node/9019/performance-scripting-gnome-desktop</link>
 <description> &lt;p&gt;This &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/791&quot;&gt;&lt;acronym title=&quot;The outermost layer of a program. Shell is another term for user interface. Operating systems and applications sometimes provide an alternative shell to make interaction with the program easier. For example, if the application is usually command driven, the shell might be a menu-driven system that translates the user&#039;s selections into the appropriate commands.&quot;&gt;shell&lt;/acronym&gt;&lt;/a&gt; script optimizes some of the Gnome configuration options for simplicity and performance.  The last two steps also reapply these settings making them the defaults forced on every start of a Gnome session.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. Create shell script&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;$ vi /etc/profile.d/gnome-perf.sh
#!/bin/sh 
# Gnome Performance of SUSE Linux
# By: Sontaya Photibut, , 2009
# Website: &lt;a href=&quot;http://www.susethailand.com&quot; title=&quot;http://www.susethailand.com&quot;&gt;http://www.susethailand.com&lt;/a&gt;
# Path Schemas &quot;/etc/gconf/schemas&quot;

### gnome-session.schemas ##
# Don&#039;t show the Gnome splash page (Default=false)
gconftool-2 --type bool --set /apps/gnome-session/options/show_splash_screen false

##  apps_nautilus_preferences.schemas ##
# Don&#039;t count how many files and their sizes in the Nautilus windows (Default=local_only)
gconftool-2 --type string --set /apps/nautilus/preferences/show_directory_item_counts never
# Don&#039;t try to preview a sound (Default=local_only)
gconftool-2 --type string --set /apps/nautilus/preferences/preview_sound never

# Don&#039;t show the text below the icon that describes the file (Default=local_only)
gconftool-2 --type string --set /apps/nautilus/preferences/show_icon_text never

## desktop_gnome_background.schemas ##
# Don&#039;t use wallpaper (Default=zoom)
gconftool-2 --type string --set /desktop/gnome/background/picture_options none
# Don&#039;t use a gradient backdrop (Default=solid)
gconftool-2 --type string --set /desktop/gnome/background/color_shading_type solid
# Set the background color to blue - Really purple :) (Default=#66ba00)
gconftool-2 --type string --set /desktop/gnome/background/primary_color \#666699
# Disable desktop picture background
gconftool-2 --type bool --set /desktop/gnome/background/draw_background false

## desktop_gnome_interface.schemas ## 
# Set the Icon theme to gnome
gconftool-2 --type string --set /desktop/gnome/interface/icon_theme gnome
# Set the GTK them to Sample (Default=&amp;gt;Clearlooks)
gconftool-2 --type string --set /desktop/gnome/interface/gtk_theme Simple

## desktop_gnome_sound.schemas ##
# Don&#039;t start ESD (Default=false)
gconftool-2 --type bool --set /desktop/gnome/sound/event_sounds false
gconftool-2 --type bool --set /desktop/gnome/sound/enable_esd false

## apps_nautilus_preferences.schemas ##
# Don&#039;t show hidden files (Default=false)
gconftool-2 --type bool --set /desktop/gnome/file_views/show_hidden_files false
# Don&#039;t show backup files (those marked with a ~)
gconftool-2 --type bool --set /desktop/gnome/file_views/show_backup_files false

&lt;/pre&gt;&lt;p&gt;
&lt;b&gt;2. Setting permission&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;$ chmod 755 /etc/profile.d/gnome-perf.sh

&lt;/pre&gt;&lt;p&gt;
&lt;b&gt;3. Restart system&lt;/b&gt;&lt;/p&gt;
&lt;pre&gt;$ reboot

&lt;/pre&gt;&lt;p&gt;
END.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9019/performance-scripting-gnome-desktop#comments</comments>
 <category domain="http://www.novell.com/communities/taxonomy/term/79">SUSE Linux Enterprise</category>
 <category domain="http://www.novell.com/communities/coolsolutions/sled">SUSE Linux Enterprise Desktop</category>
 <category domain="http://www.novell.com/communities/content-type/tip">Tip</category>
 <category domain="http://www.novell.com/communities/topic/scripting">Scripting</category>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Wed, 14 Oct 2009 16:42:39 -0600</pubDate>
 <dc:creator>susethailand</dc:creator>
 <guid isPermaLink="false">9019 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>When upgrading SLES and/or OES, be sure to backup &amp; reimplement kernel parameters</title>
 <link>http://www.novell.com/communities/node/9131/when-upgrading-sles-andor-oes-be-sure-backup-reimplement-kernel-parameters</link>
 <description> &lt;p&gt;When following &lt;a href=&quot;http://www.novell.com/support/viewContent.do?externalId=7000387&amp;amp;sliceId=1&quot;&gt;this knowledgebase article&lt;/a&gt; to upgrade your SLES or OES &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2314&quot;&gt;&lt;acronym title=&quot;A powerful computer running software that supplies network clients with services, such as file, print, communication, or application services. Examples of servers include1. Routing servers, which connect nodes and networks of similar architectures2. Gateway servers, which connect nodes and networks of different architectures by performing protocol conversions3. Terminal servers, print servers, disk servers, and file servers, which provide an interface between compatible peripheral devices on a local area network&quot;&gt;server&lt;/acronym&gt;&lt;/a&gt;, be sure to bear in mind that the upgrade will overwrite any customisation that you&#039;ve done in /boot.&lt;/p&gt;
&lt;p&gt;While initially this may not seem like a problem, bear in mind that if you&#039;re running a VM then it&#039;s likely (one would hope) that you have the &quot;clock=pit&quot; kernel parameter implemented.&lt;/p&gt;
&lt;p&gt;If this is not re-implemented after the upgrade your server&#039;s time will go wild and you&#039;ll kick yourself when you realise what happened!&lt;/p&gt;
&lt;p&gt;Yes. It happened to me. ;)&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions&quot; class=&quot;og_links&quot;&gt;Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9131/when-upgrading-sles-andor-oes-be-sure-backup-reimplement-kernel-parameters#comments</comments>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <pubDate>Fri, 09 Oct 2009 08:44:10 -0600</pubDate>
 <dc:creator>preycor</dc:creator>
 <guid isPermaLink="false">9131 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Hot Linux tips and Hacks</title>
 <link>http://www.novell.com/communities/node/9130/hot-linux-tips-and-hacks</link>
 <description> &lt;p&gt;To mount ext2fs filesystems under FreeBSD, you first have to build a new kernel with ext2fs support. Put the line&lt;/p&gt;
&lt;p&gt;options “EXT2FS”&lt;/p&gt;
&lt;p&gt;in your kernel configuration file for the new kernel and compile.&lt;br /&gt;
Read the FreeBSD handbook to learn how to do that.&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;Do the following steps to enable ext2fs support in the kernel:&lt;/p&gt;
&lt;p&gt;# cd /usr/src/sys/modules/ext2fs&lt;br /&gt;
# make&lt;br /&gt;
# make install&lt;/p&gt;
&lt;p&gt;You can use ‘kldload‘ to load the ext2fs module in to the kernel.&lt;/p&gt;
&lt;p&gt;# kldload ext2fs&lt;br /&gt;
Then you will be able to mount your linux partitions by giving a command like:&lt;/p&gt;
&lt;p&gt;# mount -t ext2fs /dev/ad1s1 /mnt&lt;/p&gt;
&lt;p&gt;to unload module use&lt;/p&gt;
&lt;p&gt;# kldunload ext2fs&lt;/p&gt;
&lt;p&gt;To load the module automatically on system startup&lt;/p&gt;
&lt;p&gt;add the following line in to /boot/loader.conf&lt;/p&gt;
&lt;p&gt;ext2fs_load=”YES”&lt;/p&gt;
&lt;p&gt;Thanks&lt;br /&gt;
&lt;a href=&quot;http://www.powerlawofattraction.com&quot;&gt;Law of Attraction&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.powerlawofattraction.com/life-coaching&quot;&gt;Life Coaching&lt;/a&gt;&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/slemag&quot; class=&quot;og_links&quot;&gt;SUSE Linux Enterprise Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9130/hot-linux-tips-and-hacks#comments</comments>
 <category domain="http://www.novell.com/communities/product/linux">Linux</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <pubDate>Fri, 09 Oct 2009 02:25:36 -0600</pubDate>
 <dc:creator>ankursan</dc:creator>
 <guid isPermaLink="false">9130 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Registering and updating a SLES server through an authenticated proxy</title>
 <link>http://www.novell.com/communities/node/9128/registering-and-updating-sles-server-through-authenticated-proxy</link>
 <description> &lt;p&gt;In most corporate environments web proxies are implemented as part of an overall security requirement. When implementing a SLES &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/2314&quot;&gt;&lt;acronym title=&quot;A powerful computer running software that supplies network clients with services, such as file, print, communication, or application services. Examples of servers include1. Routing servers, which connect nodes and networks of similar architectures2. Gateway servers, which connect nodes and networks of different architectures by performing protocol conversions3. Terminal servers, print servers, disk servers, and file servers, which provide an interface between compatible peripheral devices on a local area network&quot;&gt;server&lt;/acronym&gt;&lt;/a&gt; it is just as important, from a security standpoint, to keep the server patched up to date. Being able to set the server to register and update from the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/527&quot;&gt;&lt;acronym title=&quot;A space provided directly on the screen where users type specific commands, rather than execute commands through graphical selections, such as menus and buttons. In Linux, you open a shell prompt, which generally displays a $ at the end, and type commands at the command line. An example of a command line is the area next to the DOS prompt on a personal computer.&quot;&gt;command line&lt;/acronym&gt;&lt;/a&gt; did not seem possible until I discovered the following method.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &lt;a href=&quot;http://www.google.co.za/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=5&amp;amp;url=http%3A%2F%2Fwww.novell.com%2Fsupport%2FviewContent.do%3FexternalId%3D3030847%26sliceId%3D1&amp;amp;ei=4OfOSrflD-LOjAeh4on5Aw&amp;amp;usg=AFQjCNGeuF9vIn-HuzxtmJxyFlgYZOrX0w&amp;amp;sig2=b_cGFNVZwmn4m6ocet34mw&quot; target=&quot;_blank&quot;&gt;suse_register&lt;/a&gt; script, which is used to perform the server registration, uses curl in order to interact with the Novell website. The first step is therefore to tell curl to use the proxy, which is done by creating the file &lt;code&gt;/root/.curlrc&lt;/code&gt; and adding the following content. Obviously the settings in the file must correspond to the settings required in your environment.&lt;br /&gt;
&lt;pre&gt;proxy = &quot;https://10.10.2.10:8080&quot;
proxy-user = &quot;username:password&quot;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;suse_register&lt;/code&gt; as normal. The registration will appear to fail. What&#039;s happening in the background is that the server is being registered, but is not able to subscribe to the software update channels.&lt;/li&gt;
&lt;li&gt;RCD (Red Carpet Daemon) is the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/503&quot;&gt;&lt;acronym title=&quot;In Linux/UNIX, a process that runs without monopolizing the shell. A command that initiates a background process is referred to as a background command or a command run in the background. To run a command in the background, append a space and ampersand (&amp;) to the end of the command.&quot;&gt;background process&lt;/acronym&gt;&lt;/a&gt; which keeps track of available updates and listens for update commands from &lt;code&gt;rug&lt;/code&gt;. Use the following commands after registering the server in order to set RCD to go through the proxy:&lt;br /&gt;
&lt;pre&gt;rug set proxy-url &lt;a href=&quot;https://10.10.2.10:8080&quot; title=&quot;https://10.10.2.10:8080&quot;&gt;https://10.10.2.10:8080&lt;/a&gt;
rug set proxy-username username
rug set proxy-password password&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Initiate a rug refresh so that the available channels can be picked up:&lt;br /&gt;
&lt;pre&gt;rug ref&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Check which channels are available.&lt;br /&gt;
&lt;pre&gt;rug ca&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Subscribe to the appropriate channels, for example:&lt;br /&gt;
&lt;pre&gt;rug sub SLES10-SP2-Updates&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Retrieve the available updates.&lt;br /&gt;
&lt;pre&gt;rug up&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One could suggest that step 3 gets done before step 2 in order to make the process more efficient. Unfortunately this doesn&#039;t work - suse_register appears to overwrite whatever settings are already in place for RCD. It&#039;d be great if suse_register could take options which allow this all to be done in one shot. At the time of writing this, suse_register does allow a full registration process to be completed through an unauthanticated proxy (if you configure a proxy through &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/3338&quot;&gt;&lt;acronym title=&quot;Yet another Setup ToolThe SUSE Linux administration tool for installing and configuring a system.&quot;&gt;YaST&lt;/acronym&gt;&lt;/a&gt; before doing the registration), but not an authenticated proxy.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/slemag&quot; class=&quot;og_links&quot;&gt;SUSE Linux Enterprise Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9128/registering-and-updating-sles-server-through-authenticated-proxy#comments</comments>
 <category domain="http://www.novell.com/communities/product/suse+linux+enterprise+server">SUSE Linux Enterprise Server</category>
 <category domain="http://www.novell.com/communities/topic/tips+administrators">Tips for Administrators</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <pubDate>Fri, 09 Oct 2009 01:27:48 -0600</pubDate>
 <dc:creator>preycor</dc:creator>
 <guid isPermaLink="false">9128 at http://www.novell.com/communities</guid>
</item>
<item>
 <title>Fix for Sleep and Hibernate on a Thinkpad T61p with an nVidia FX570 Video Card</title>
 <link>http://www.novell.com/communities/node/9085/fix-sleep-and-hibernate-thinkpad-t61p-nvidia-fx570-video-card</link>
 <description> &lt;p&gt;&lt;b&gt;Sleep and Hibernate fix for Thinkpad T61p with an NVIDIA FX570 &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/691&quot;&gt;&lt;acronym title=&quot;A circuit board that enables a computer to display information on its screen. The resolution, number of colors, and refresh rate of a monitor is determined by the kind of video card used, plus the limitations of the monitor itself. Also called graphics adapter, display adapter, video adapter.&quot;&gt;video card&lt;/acronym&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;When I ordered my Thinkpad laptop I specified the best video card that they had available thinking that it would be the best choice with SLED or OpenSuSE.  That turned out to be a bad idea until now.&lt;/p&gt;
&lt;p&gt;I found out after the fact that NVIDIA drivers can be a problem in certain situations.  Especially when it comes to using your laptop&#039;s sleep and hibernate functions.  They seem to go to sleep just fine.  The problem occurs when you try to wake them up again.  Everything seems to start up but then when the system tries to load the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/802&quot;&gt;&lt;acronym title=&quot;Version 11 of the X Window System.&quot;&gt;X11&lt;/acronym&gt;&lt;/a&gt; driver and switch to the desktop, it goes to a black screen and then you are stuck.  The only option you have is to power-off and reboot.  That is not good for your filesystem integrity even with journaling filesystems such as EXT3 or &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/787&quot;&gt;&lt;acronym title=&quot;A file system that logs its changes to a journal. This file system type allows for fast repair of potential inconsistencies. Such inconsistencies can occur when a file system is not unmounted before the operating system is shut down, such as in the event of a power failure. ReiserFS is optimized for small files.&quot;&gt;ReiserFS&lt;/acronym&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I dug through many forums, discussion threads, and sites like thinkwiki.org for a solution and found nothing that worked for my laptop.  However, I have to give them all credit for helping me discover the final solution.  I can&#039;t guarantee that this will work for your computer but it could help.&lt;/p&gt;
&lt;p&gt;It all seems to revolve around which driver is trying to control the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/491&quot;&gt;&lt;acronym title=&quot;Accelerated Graphics Port or Advanced Graphics PortA high-speed point-to-point channel for attaching a single device (generally a graphics card) to a computer&#039;s motherboard, primarily to assist in the acceleration of 3D computer graphics. Some motherboards have been built with multiple independent AGP slots.&quot;&gt;AGP&lt;/acronym&gt;&lt;/a&gt; features on your computer.  In case you are not familiar with the term.  AGP is the power management capability that is built into any modern computer.  It seems that all power management has been delegated to the video system driver in Linux and Windows.&lt;/p&gt;
&lt;p&gt;Many system boards come with integrated video controllers but when you add a different video card it complicates things.  It seems like the linux distributions have a problem configuring AGP settings when there are two video adapters on a system.  Laptops and desktops might come with an enhanced video card using ATI or nVideo chipsets but the integrated video on the &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/621&quot;&gt;&lt;acronym title=&quot;The main printed circuit board in a computer that carries the system buses. It is equipped with sockets to which all processors, memory modules, plug-in cards, daughterboards, or peripheral devices are connected. Also known as the logic board, main board, or computer board.&quot;&gt;motherboard&lt;/acronym&gt;&lt;/a&gt; is still there lurking in the background.&lt;/p&gt;
&lt;p&gt;I also think that you need to match the AGP capability of the computer to that in the driver.  Read the information below and you will see what I mean by that.&lt;/p&gt;
&lt;h3&gt;Step 1&lt;/h3&gt;
&lt;p&gt;Check to see which AGP driver is enabled on your system by running:&lt;/p&gt;
&lt;pre&gt;lsmod | grep agp

&lt;/pre&gt;&lt;p&gt;Mine came back with intel_agp but yours might show sis_agp or via_agp depending on your motherboard.  It will also show agppart but that is OK.  Make note of which agp module is installed because you will need that information in the next step.&lt;/p&gt;
&lt;h3&gt;Step 2&lt;/h3&gt;
&lt;p&gt;Edit /etc/modprobe.conf.local and add the following line:&lt;/p&gt;
&lt;pre&gt;blacklist intel_agp

&lt;/pre&gt;&lt;p&gt;Yours should look like this:&lt;/p&gt;
&lt;pre&gt;#
# please add local extensions to this file
#
blacklist intel_agp

&lt;/pre&gt;&lt;h3&gt;Step 3&lt;/h3&gt;
&lt;p&gt;Now you need to look in the driver registry to see which features are enabled.  Run the following:&lt;/p&gt;
&lt;pre&gt;cat /proc/driver/nvidia/registry

&lt;/pre&gt;&lt;p&gt;Look for NvAGP: 3.  This number is the supported AGP state.&lt;/p&gt;
&lt;h3&gt;Step 4&lt;/h3&gt;
&lt;p&gt;You need to modify the X system configuration so it knows about your video card&#039;s AGP feature.  Edit /etc/X11/xorg.conf and look for the [Device] section.  Mine originally looked like this:&lt;/p&gt;
&lt;pre&gt;Section &quot;Device&quot;
  BoardName    &quot;Quadro FX 570M&quot;
  Driver       &quot;nvidia&quot;
  Identifier   &quot;Device[0]&quot;
  VendorName   &quot;NVidia&quot;
EndSection

&lt;/pre&gt;&lt;p&gt;Add a new entry: &lt;b&gt;Option        &quot;NvAGP&quot; &quot;3&quot;&lt;/b&gt; into this section.  After I made this change mine looks like this:&lt;/p&gt;
&lt;pre&gt;Section &quot;Device&quot;
  BoardName    &quot;Quadro FX 570M&quot;
  Driver       &quot;nvidia&quot;
  Identifier   &quot;Device[0]&quot;
  VendorName   &quot;NVidia&quot;
  Option        &quot;NvAGP&quot; &quot;3&quot;
EndSection

&lt;/pre&gt;&lt;p&gt;It seems as if the settings are working as soon as you save the file but you should probably reboot your system before trying your new settings.  I noticed that if I now check the current agp driver by running &lt;b&gt;lsmod | grep agp&lt;/b&gt; it comes back with:&lt;/p&gt;
&lt;pre&gt;agpgart                32308  1 nvidia

&lt;/pre&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;My system now goes to sleep and wakes up properly.  The hibernate feature works but, when waking up, it sits for 2 minutes at a black screen with a blinking &lt;a class=&quot;glossary-term&quot; href=&quot;/communities/glossary/term/752&quot;&gt;&lt;acronym title=&quot;A block or underline character that marks the place for text input.&quot;&gt;cursor&lt;/acronym&gt;&lt;/a&gt; in the upper left corner.  It will beep once and then after another minute it will beep again.  After another minute, it will resume the system and you should see a desktop.  I rarely use hibernate so this doesn&#039;t bother me.  At least I know it works if I need it.&lt;/p&gt;
 &lt;div class=&quot;og_rss_groups&quot;&gt;&lt;ul class=&quot;links&quot;&gt;&lt;li class=&quot;first last og_links&quot;&gt;&lt;a href=&quot;/communities/coolsolutions/workgroup&quot; class=&quot;og_links&quot;&gt;Workgroup Cool Solutions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description>
 <comments>http://www.novell.com/communities/node/9085/fix-sleep-and-hibernate-thinkpad-t61p-nvidia-fx570-video-card#comments</comments>
 <category domain="http://www.novell.com/communities/content-type/appnote">AppNote</category>
 <category domain="http://www.novell.com/communities/product/opensuse">openSUSE</category>
 <category domain="http://www.novell.com/communities/coolsolutions/sled">SUSE Linux Enterprise Desktop</category>
 <category domain="http://www.novell.com/communities/product/suse+linux+enterprise+server">SUSE Linux Enterprise Server</category>
 <category domain="http://www.novell.com/communities/topic/hardware">Hardware</category>
 <category domain="http://www.novell.com/communities/topic/linux">Linux</category>
 <category domain="http://www.novell.com/communities/topic/linux-desktop-configuration">Linux Desktop Configuration</category>
 <category domain="http://www.novell.com/communities/topic/tips+administrators">Tips for Administrators</category>
 <category domain="http://www.novell.com/communities/topic/tips-end-users">Tips for End Users</category>
 <group domain="http://www.novell.com/communities/coolsolutions" xmlns="http://drupal.org/project/og">Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/slemag" xmlns="http://drupal.org/project/og">SUSE Linux Enterprise Cool Solutions</group>
 <group domain="http://www.novell.com/communities/coolsolutions/workgroup" xmlns="http://drupal.org/project/og">Workgroup Cool Solutions</group>
 <pubDate>Thu, 08 Oct 2009 16:42:07 -0600</pubDate>
 <dc:creator>tmstone835</dc:creator>
 <guid isPermaLink="false">9085 at http://www.novell.com/communities</guid>
</item>
</channel>
</rss>
