<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5168152168512265767</id><updated>2012-02-08T06:27:08.791-06:00</updated><category term='Obama Infomercial'/><category term='clusters'/><category term='exchange 2003'/><title type='text'>My Tech Notes and Stuff</title><subtitle type='html'>Various and sundry technical notes and instructions for myself or anyone who cares to decipher them</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default?start-index=101&amp;max-results=100'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>165</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3823134475707988659</id><published>2011-08-10T22:27:00.000-05:00</published><updated>2011-08-10T22:28:59.336-05:00</updated><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: 'Lucida Grande', 'Lucida Sans', Verdana, Arial, sans-serif; font-size: 13px; line-height: 19px; background-color: rgb(255, 255, 255); "&gt;&lt;h3 xmlns="http://www.w3.org/1999/xhtml" id="sites-page-title-header" align="left" style="font-size: 1.8em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-left: 10px; padding-right: 10px; font-family: Palatino, 'Palatino Linotype', serif; color: rgb(183, 100, 1); "&gt;&lt;span id="sites-page-title" dir="ltr"&gt;How To Form A Nonprofit Public Charity In About 1 Year&lt;/span&gt;&lt;/h3&gt;&lt;span class="announcementsPostTimestamp" id="afterPageTitleHideDuringEdit" style="font-size: 11px; margin-top: 0px; margin-right: 12px; margin-bottom: 0px; margin-left: 12px; color: rgb(102, 102, 102); "&gt;posted &lt;span xmlns="http://www.w3.org/1999/xhtml" dir="ltr"&gt;Aug 6, 2011 8:36 AM&lt;/span&gt; by Paul Valentino   &lt;span id="sites-announcement-updated-time" class="updatedTime" style="font-weight: bold; "&gt;[ updated &lt;span timestamp="1313001598104" issitelocale="true" title="Aug 10, 2011 11:39 AM" dir="ltr"&gt;8 hours ago&lt;/span&gt; ]&lt;/span&gt;&lt;/span&gt;&lt;div id="sites-canvas-main" class="sites-canvas-main" style="background-color: transparent; min-height: 150px; padding-bottom: 5px; padding-top: 15px; "&gt;&lt;div id="sites-canvas-main-content"&gt;&lt;table xmlns="http://www.w3.org/1999/xhtml" cellspacing="0" class="sites-layout-name-one-column sites-layout-hbox" style="width: 1080px; table-layout: fixed; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="sites-layout-tile sites-tile-name-content-1" style="vertical-align: top; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;div dir="ltr"&gt;&lt;div&gt;It all started with an idea in the year 2010 at VMworld in San Francisco as outlined on the page:&lt;a href="http://www.vcommunitytrust.org/origins" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;http://www.vcommunitytrust.org/origins&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Even though we knew very little about nonprofit organizations we were confident that we would be able to figure things out with the help of the community.  We were right; people like @clinek, @SirStan  and others came forward to help review our 1023 Application as well as other business documentation.  As a result of this assistance we were able to avoid many common pitfalls that companies face when starting a nonprofit organization.  Also, keep in mind that the majority of our efforts were coordinated through social media such as twitter and facebook and continue to be to this very day.  We have board meetings using Skype due to the distributed nature of our team; we use twitter, facebook, blogging and google apps extensively for providing updates, collaborating on documentation or disseminating information.  We've even had the great pleasure of &lt;a href="http://www.sysxperts.com/home/announce/cwtpodcastwithvcommunitytrustinc" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;participating in a podcast&lt;/a&gt; with our good friend @Niketown588.  We would not and could not exist in our current form without these social media resources.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;The &lt;a href="http://www.sos.state.mn.us/index.aspx?page=1089" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Office of the Secretary of State&lt;/a&gt; and &lt;a href="http://www.minnesotanonprofits.org/" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;MN Council of Nonprofits&lt;/a&gt; websites proved to be key resources for helping to determine requirements for establishing a nonprofit corporation in Minnesota.  A wealth of information for establishing a 501(c)(3) nonprofit organization was also found at the &lt;a href="http://www.irs.gov/charities/index.html" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;IRS &lt;/a&gt;web site.  Furthermore, one of the greatest forms of assistance came from reviewing examples of other nonprofit 1023 applications, Articles of Organization and Bylaws.  Many were found on the web, by request (public charities must provide copies of certain documents for a small fee upon request if they don't already publish them online) and by friends who are members of private foundations and public charities.  Of course, we needed to apply our own business plan and mission when drafting our business documents but the examples provided a wealth of direction for satisfying all of the required elements, especially in the case of the attachments to the 1023 Application.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;After choosing our name we needed to confirm that it was available.  Although it was only required that the name be available in MN, we did a more extensive search to ensure that we wouldn't have any conflicts with naming for companies in other states or countries.  We also made sure that we wouldn't have any issues with registering our domain name.  To confirm availability in MN we used the &lt;a href="http://da.sos.state.mn.us/minnesota/corp_inquiry-find.asp?:Norder_item_type_id=9&amp;amp;sm=6" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Name Availability&lt;/a&gt; tool on the Secretary of State website.  Once we felt comfortable that we wanted to move forward with the name we filed a &lt;a href="http://www.sos.state.mn.us/Modules/ShowDocument.aspx?documentid=5255" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;name reservation&lt;/a&gt; form online with the required fee of $45.00 at the time of our filing September 20, 2010.  We also filed for our &lt;a href="http://www.irs.gov/businesses/small/article/0,,id=102767,00.html" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;EIN&lt;/a&gt; online with the IRS being careful to follow the instructions for a nonprofit.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;We then spent the next three days researching the requirements for a nonprofit organizations Articles of Organization and Bylaws keeping in mind that we intended to apply for 501(c)(3) tax exempt status with the IRS.  Amazingly, we had a fully drafted and reviewed set of documents which we submitted on September 23, 2010 with the $80.00 fee and obtained our &lt;a href="https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B-Jw_S7LnADjZWJjZGJhZGItZjFhNS00NTk0LWI3NjgtYTNhNTIxYTFiYzFj&amp;amp;hl=en_US" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Certificate of Incorporation&lt;/a&gt; as a Minnesota nonprofit formed under 317A on September 24th.  The key thing to remember with your business filing is that it must be renewed every year to maintain a nonprofit status;  in our case we must go to the Minnesota Office of the Secretary of State site&lt;a href="https://online.sos.state.mn.us/abr/corp_annual_filing.asp" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Online Annual Renewal Filing&lt;/a&gt; page to stay current with our filing (No fee required unless a name change, address change, or registered agent change dictates an Amendment to Articles and associated $45 fee is required for online filing).  Similarly, we must file form &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CCwQFjAA&amp;amp;url=http%3A%2F%2Fwww.irs.gov%2Fpub%2Firs-pdf%2Ff990.pdf&amp;amp;ei=971CTrnXAYjgsQLP9OzYCQ&amp;amp;usg=AFQjCNFO9PtpZVPcG6zmI6puIiLXzKubxA" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;990 &lt;/a&gt;annually with the IRS and may be eligible to file e-postcard&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;sqi=2&amp;amp;ved=0CBYQFjAA&amp;amp;url=http%3A%2F%2Fwww.irs.gov%2Fcharities%2Farticle%2F0%2C%2Cid%3D169250%2C00.html&amp;amp;ei=xr1CToHtD4igsQK3jpm7CQ&amp;amp;usg=AFQjCNHGnoN6cAdQ8xOioLlQ6gn1Q7LfNg" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;990-N&lt;/a&gt; if donations remain below $25,000 per year.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="https://docs.google.com/document/d/1ZIQ2HVBJwJYaQv5LryIwZ_VaAPMWLDAWwnVAEI2_Bp8/edit?hl=en_US" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Articles of Incorporation&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="https://docs.google.com/document/d/1pJUMMB67sMOIIN_Qx2UQXcZEnTI4e2exjBMfSUyAyoU/edit?hl=en_US" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Bylaws&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;At this point the fun began.  We spent the next three months completing the 1023 Application for 501(c)(3) and the associated attachments.  When you view the document links below it will be fairly obvious why three months were required, especially considering that we are full-time employees and were doing as much as we possibly could in the off hours (wee hours of the night).  With business plan in hand and all the examples we could muster out of the interwebs as well as friends, we plugged away and were able to file on January 11, 2011 with the required $400 fee (fee could be larger for company expecting greater income).  Then the waiting game began; the IRS processes 1023 Applications on a first come first serve basis so the time to wait will vary based upon volume of applications.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://search.irs.gov/web/query.html?col=allirs&amp;amp;charset=utf-8&amp;amp;qp=&amp;amp;qs=-Wct%3A%22Internal+Revenue+Manual%22&amp;amp;qc=&amp;amp;qm=0&amp;amp;rf=0&amp;amp;oq=&amp;amp;qt=form+1023&amp;amp;search.x=0&amp;amp;search.y=0" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;1023 Application&lt;/a&gt;  and &lt;a href="https://docs.google.com/leaf?id=0B-Jw_S7LnADjMjhkYjMzZjgtNTlkMy00Nzg0LWEyY2ItNjZlZjYzNmRiNjRk&amp;amp;hl=en_US" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Attachments&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Now it is worth noting that even if you file the appropriate change of address forms with the IRS, the department processing your 1023 application wont get that update and inevitably continue sending notifications to your old address, so be sure to send a copy of any change of address forms to the address you sent the 1023 Application to, or if you've already been assigned an agent you may send them a fax with the information (Can you tell that we don't know this from our personal experience :-).  Once our agent was assigned, the process was rather painless as she proved to be very helpful.  We simply needed to file one Amendment for Article IV (If you copy the verbiage from this Amendment rather than using what we submitted in original Articles above you can save this step and the $45 fee that goes with it) and answer a few simple questions.  Once we faxed all the information back it was only a matter of a couple of weeks before we received our letter of determination.  Once we did receive the letter it was only a matter of a couple days after providing the required documents to the merchants before we got our Donation buttons up and running again for both Google Merchant and PayPal.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="https://docs.google.com/a/vcommunitytrust.org/leaf?id=0B-Jw_S7LnADjZmFjNjM0MzAtNjMwYS00NjRhLTg3ZDktNTY4YzExMGE2ZGRm&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;1023 Responses&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;a href="https://docs.google.com/leaf?id=0B-Jw_S7LnADjZTMzYjZhNTYtZjM2NS00OTc4LWI5MTUtMjhhNzU1OTNmOTE4&amp;amp;hl=en_US" target="_blank" style="color: rgb(51, 51, 51); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(231, 231, 231); font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Amendment to Article IV required for response&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Yay! On August 4th, 2011 the LOD arrived stating we are officially a tax exempt nonprofit public charity.&lt;/div&gt;&lt;div&gt;&lt;a href="https://docs.google.com/a/vcommunitytrust.org/leaf?id=0B-Jw_S7LnADjZDlmMjBlZjYtYWEwYy00YjIzLWI4MTAtZTUwOGQxNTI1NWY3&amp;amp;sort=name&amp;amp;layout=list&amp;amp;num=50" target="_blank" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;Letter of Determination&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Some other considerations were the creation of a website and establishing nonprofit merchant accounts for accepting donations.  We chose Google Sites and Google Apps in an effort to ensure no monthly administration fees and for its ease of use.   So far we've been perfectly willing to accept the limitations for customization of our site because we'd much rather not have to rely on public donations to cover any expenses other than certification and training costs.  In hindsight, it would have been better to wait for our letter of determination before establishing merchant accounts because they ended up disabling our ability to accept donations shortly after we were setup because we did not have a letter of determination yet.  It did not help matters that we sent all of our filings and a copy of our submitted 1023 Application to the merchants either. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;We wanted to ensure that public donations would primarily service the needs of the candidates and we're proud to say that less than $30 of our donations to date have been used for administrative expenses.  The board of directors contributed all of the fees for the 1023 Application and all of the business filings; we only needed to utilize a small amount of the donations to obtain certified copies of our business documents for banking purposes.  This is also a factor for choosing not seek paid professional services but rather volunteer professional services.  Our primary purpose is to further the cause of education and get people certified in a way that ensures real world success; therefore, we gratefully accept volunteer assistance from qualified professionals to meet our goals.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;We hope you find this information useful and of value.  If so, please consider making a financial, software, and/or hardware donation.  Every contribution helps tremendously.  &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.vcommunitytrust.org/donations" target="_blank" rel="nofollow" style="color: rgb(183, 100, 1); text-decoration: underline; background-image: url(http://www.gstatic.com/sites/p/42173f/system/app/themes/solitudespice/bg_link.gif); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; font-weight: bold; padding-top: 2px; padding-right: 2px; padding-bottom: 2px; padding-left: 2px; background-position: initial initial; background-repeat: repeat no-repeat; "&gt;http://www.vcommunitytrust.org/donations&lt;/a&gt;&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Regards,&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;Paul Valentino - Chairman&lt;/div&gt;&lt;div&gt;vCommunity Trust Inc.&lt;/div&gt;&lt;div&gt;@vcommunitytrust&lt;/div&gt;&lt;div&gt;@sysxperts&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3823134475707988659?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3823134475707988659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3823134475707988659' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3823134475707988659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3823134475707988659'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2011/08/how-to-form-nonprofit-public-charity-in.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-2688903075536133005</id><published>2010-10-05T14:31:00.003-05:00</published><updated>2010-10-05T14:37:58.977-05:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;strong&gt;Please donate to vCommunity Trust Inc. to help the economically challenged to obtain their technical education and certification&lt;/strong&gt;&lt;/p&gt;
&lt;script type="text/javascript"&gt; 
function validateAmount(amount){
 if(amount.value.match( /^[0-9]+(\.([0-9]+))?$/)){
  return true;
 }else{
  alert('You must enter a valid donation.');
  amount.focus();
  return false;
 }
}
&lt;/script&gt;
&lt;form action="https://checkout.google.com/cws/v2/Donations/972047343592492/checkoutForm" id="BB_BuyButtonForm" method="post" name="BB_BuyButtonForm" onSubmit="return validateAmount(this.item_price_1)" target="_top"&gt;
    &lt;input name="item_name_1" type="hidden" value="vCommunity Trust Donation"/&gt;
    &lt;input name="item_description_1" type="hidden" value="Donations to help the economically challenged attain their VCP (VMware Certified Professional) Certification."/&gt;
    &lt;input name="item_quantity_1" type="hidden" value="1"/&gt;
    &lt;input name="item_currency_1" type="hidden" value="USD"/&gt;
    &lt;input name="item_is_modifiable_1" type="hidden" value="true"/&gt;
    &lt;input name="item_min_price_1" type="hidden" value="0.01"/&gt;
    &lt;input name="item_max_price_1" type="hidden" value="25000.0"/&gt;
    &lt;input name="_charset_" type="hidden" value="utf-8"/&gt;
    &lt;table cellpadding="5" cellspacing="0" width="1%"&gt;
        &lt;tr&gt;
            &lt;td align="right" nowrap="nowrap" width="1%"&gt;&amp;#x24; &lt;input id="item_price_1" name="item_price_1" onfocus="this.style.color='black'; this.value='';" size="11" style="color:grey;" type="text" value="Enter Amount"/&gt;
            &lt;/td&gt;
            &lt;td align="left" width="1%"&gt;
                &lt;input alt="Donate" src="https://checkout.google.com/buttons/donateNow.gif?merchant_id=972047343592492&amp;amp;w=115&amp;amp;h=50&amp;amp;style=trans&amp;amp;variant=text&amp;amp;loc=en_US" type="image"/&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/form&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-2688903075536133005?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.vcommunitytrust.org' title=''/><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/2688903075536133005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=2688903075536133005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/2688903075536133005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/2688903075536133005'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/10/donate-here-function.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-5266312085191993396</id><published>2010-08-06T22:23:00.000-05:00</published><updated>2010-08-06T22:23:39.924-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRtQcLB6I/AAAAAAAAZ4A/QIn6beI2wCI/s1600/001.JPG'&gt;&lt;img src='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRtQcLB6I/AAAAAAAAZ4A/QIn6beI2wCI/s400/001.JPG' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;
&lt;a href='http://2.bp.blogspot.com/_jrKWd_g_U9g/TFzRtwTk_5I/AAAAAAAAZ4I/6lB1RtdSMw0/s1600/002.JPG'&gt;&lt;img src='http://2.bp.blogspot.com/_jrKWd_g_U9g/TFzRtwTk_5I/AAAAAAAAZ4I/6lB1RtdSMw0/s400/002.JPG' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;
&lt;a href='http://4.bp.blogspot.com/_jrKWd_g_U9g/TFzRuPnxURI/AAAAAAAAZ4Q/T8Hpb_ZlUyM/s1600/003.JPG'&gt;&lt;img src='http://4.bp.blogspot.com/_jrKWd_g_U9g/TFzRuPnxURI/AAAAAAAAZ4Q/T8Hpb_ZlUyM/s400/003.JPG' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;
&lt;a href='http://1.bp.blogspot.com/_jrKWd_g_U9g/TFzRusLIpuI/AAAAAAAAZ4Y/q0utTF-WhxQ/s1600/004.JPG'&gt;&lt;img src='http://1.bp.blogspot.com/_jrKWd_g_U9g/TFzRusLIpuI/AAAAAAAAZ4Y/q0utTF-WhxQ/s400/004.JPG' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;&lt;div style='clear:both; text-align:NONE'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-5266312085191993396?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/5266312085191993396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=5266312085191993396' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5266312085191993396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5266312085191993396'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/08/blog-post_06.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRtQcLB6I/AAAAAAAAZ4A/QIn6beI2wCI/s72-c/001.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3674052239353055845</id><published>2010-08-06T22:20:00.001-05:00</published><updated>2010-08-06T22:20:58.574-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRBkDq6EI/AAAAAAAAZ34/yElv-lpOPL0/s1600/001.JPG'&gt;&lt;img src='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRBkDq6EI/AAAAAAAAZ34/yElv-lpOPL0/s320/001.JPG' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;&lt;div style='clear:both; text-align:NONE'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3674052239353055845?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3674052239353055845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3674052239353055845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3674052239353055845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3674052239353055845'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/08/blog-post.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_jrKWd_g_U9g/TFzRBkDq6EI/AAAAAAAAZ34/yElv-lpOPL0/s72-c/001.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4631238605992484229</id><published>2010-07-15T21:01:00.006-05:00</published><updated>2010-07-15T21:09:35.432-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Finding potentially unused IP addresses or invalid DNS&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;
&lt;/span&gt;
&lt;iframe src="https://docs.google.com/document/pub?id=1Erdu_iTEJNiyhjQkMrcRv74DaDIVCdBToGylvnAdJoQ&amp;amp;embedded=true" width="600" height="550"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-4631238605992484229?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/4631238605992484229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=4631238605992484229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4631238605992484229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4631238605992484229'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/07/finding-potentially-unused-ip-addresses.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-6257835632187512946</id><published>2010-07-15T20:34:00.010-05:00</published><updated>2010-07-15T20:54:31.616-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Disco Dancing with iTach&lt;/span&gt;&lt;/span&gt;
&lt;iframe src="https://docs.google.com/document/pub?id=1SeQ0NcFe02gMO46uYRde0kAvjV2dR3g4xRBziMRPkko&amp;amp;embedded=true" width="600" height="600"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-6257835632187512946?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://docs.google.com/document/edit?id=1SeQ0NcFe02gMO46uYRde0kAvjV2dR3g4xRBziMRPkko&amp;hl=en&amp;pli=1#' title=''/><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/6257835632187512946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=6257835632187512946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6257835632187512946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6257835632187512946'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/07/blog-post.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4079670653939201200</id><published>2010-07-08T13:41:00.006-05:00</published><updated>2010-07-15T20:53:49.021-05:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight:bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Likewise Open Tips&lt;/span&gt;&lt;/span&gt;
&lt;iframe src="https://docs.google.com/document/pub?id=1jQMWCGY1F2dIqgKV5G34Jpa2wd_3c0AFAhcbDzyGtgc&amp;amp;embedded=true" width="600" height="800"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-4079670653939201200?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sites.google.com/site/mytechnotesproject/likewise-open' title=''/><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/4079670653939201200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=4079670653939201200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4079670653939201200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4079670653939201200'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/07/likewise-open-tips-tips-for-quickstart.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-798528121678674140</id><published>2010-07-07T16:28:00.000-05:00</published><updated>2010-07-07T16:29:14.989-05:00</updated><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "&gt;&lt;div style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(255, 255, 255); font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; padding-top: 0.6em; padding-right: 0.6em; padding-bottom: 0.6em; padding-left: 0.6em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-position: initial initial; background-repeat: initial initial; "&gt;&lt;p&gt;Finding unused IP addresses and invalid DNS entries&lt;/p&gt;&lt;p&gt;The method used in the example below will not help eliminate all invalid DNS entries or find IPs that are live yet unused, however, it will provide a fairly efficient means of finding unused IPs that are not pingable at the moment and provide a list of potentially invalid reverse lookup entries which in turn would also give you clues you need to start looking for invalid A records, etc.&lt;/p&gt;&lt;p&gt;For this example I am going to assume we want to find unused IP addresses and potentially invalid DNS entries for the network range 192.168.1.1-100&lt;/p&gt;&lt;p&gt;From the prompt of your linux host with nmap installed run:&lt;/p&gt;&lt;p mce_style="padding-left: 30px;" style="padding-left: 30px; "&gt;nmap -v -sP 192.168.1.1-100|grep down |for i in `awk '{print $2}'`;do host $i;done&lt;/p&gt;&lt;ul&gt;&lt;li&gt;nmap -v -sP 192.168.1.1-100 performs ping scan and returns status for specified range&lt;/li&gt;&lt;li&gt;grep down - filters the list to only  return non-pingable hosts&lt;/li&gt;&lt;li&gt;for i in `awk '{print $2}'` - filters the list further to only return the IP addresses in a loop to do the host [ip address] lookup for each IP returned&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;One could easily substitute host with nslookup or dig but I chose host to streamline the output for readability.&lt;/p&gt;&lt;p&gt;Bottom line is that if you see output similar to the following:&lt;/p&gt;&lt;p mce_style="padding-left: 30px;" style="padding-left: 30px; "&gt;Host 5.1.168.192.in-addr.arpa. not found: 3(NXDOMAIN)&lt;/p&gt;&lt;p&gt;Then you can probably safely use 192.168.1.5 for a new device and DNS entry although it would be safer to scan the DNS table by IP for forward lookup entries first.&lt;/p&gt;&lt;p&gt;On the other hand, if you see output similar to:&lt;/p&gt;&lt;p mce_style="padding-left: 30px;" style="padding-left: 30px; "&gt;5.1.168.192.in-addr.arpa domain name pointer name.domain.com&lt;/p&gt;&lt;p&gt;Then you most likely have a system that is shutdown at the moment which uses that address or an invalid/outdated DNS entry to clean up.&lt;/p&gt;&lt;p&gt;One could easily schedule this command to run with cron and send output to an email or ticketing system for regularly scheduled DNS maintenance&lt;/p&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-798528121678674140?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/798528121678674140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=798528121678674140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/798528121678674140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/798528121678674140'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/07/finding-unused-ip-addresses-and-invalid.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-6890425269990517467</id><published>2010-06-21T07:30:00.004-05:00</published><updated>2010-07-15T20:49:29.774-05:00</updated><title type='text'></title><content type='html'>&lt;iframe src="http://docs.google.com/Doc?docid=0ARZQyWuGbQKkZGZ4amJ4Y2NfMjYyYzlieHc5Z3Q&amp;amp;hl=en" width="600" height=800&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-6890425269990517467?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/6890425269990517467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=6890425269990517467' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6890425269990517467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6890425269990517467'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/06/xsudo-for-secure-elevated-perms-over-x.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-7772320327606497946</id><published>2010-05-25T12:15:00.003-05:00</published><updated>2010-06-21T07:56:52.686-05:00</updated><title type='text'></title><content type='html'>Generate Wildcard SSL for Apache 2.x using OpenSSL
&lt;div&gt;&lt;span style="font-family:verdana, arial, helvetica, sans-serif;"&gt;&lt;b   style="background-color:transparent;background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0pxfont-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;openssl req -new -newkey rsa:2048 -nodes -keyout star.domain.key -out star.domain.csr&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;
&lt;/div&gt;&lt;b   style="background-color:transparent;background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0pxfont-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;
&lt;/span&gt;&lt;/b&gt;&lt;b   style="background-color:transparent;background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0pxfont-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;
&lt;/span&gt;&lt;/b&gt;&lt;div&gt;&lt;span style="background-image:initial;border-border-style:initial;margin-left:0px;margin-right:0pxcolor:initial;"&gt;&lt;span style="font-family:verdana, arial, helvetica, sans-serif;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;Convert an Apache Cert and Key to IIS format&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;b   style="background-color:transparent;background-image:initial;border-color:initial;border-style:initial;margin-left:0px;margin-right:0pxfont-family:Verdana, Arial, Helvetica, sans-serif;color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;openssl pkcs12 -export -out star.domain.pfx -inkey &lt;span style="font-family:verdana, arial, helvetica, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;star.domain.key&lt;/span&gt;&lt;/span&gt; -in &lt;span style="font-family:verdana, arial, helvetica, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;star.domain.crt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/b&gt;
&lt;div&gt;Import Key into IIS from pfx format:&lt;/div&gt;
&lt;ol start="1" type="1"&gt;&lt;li&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-size:85%;"&gt;Start &amp;gt; Run&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Type in MMC and click GO&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Go into the Console Tab  &amp;gt; select Add/Remove Snap-in&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Click on Add &amp;gt; Double Click on Certificates and click on Add &amp;gt; OK&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Select Computer Account&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Select Local Computer&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Click the + to Expand the Certificates Console Tree&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Right click on the Personal Certificates Store&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Choose &amp;gt; ALL TASKS &amp;gt; Import&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Follow the Certificate Import Wizard to import your Primary Certificate from the .pfx file. When prompted, choose to automatically place the certificates in the certificate stores based on the type of the certificate.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;In your IIS manager, right-click on the site that you would like to use the certificate and select properties.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Click on the Directory Security Tab and hit the Server Certificate Button. This will start the server certificate wizard.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;If you are asked what you want to do with the current certificate on the site, choose to remove it, finish the wizard, and click the server certificate button to run the wizard again.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Choose to 'Assign an existing certificate' to the site and choose the new certificate that you just imported and supply the password used to create the pfx file.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Finish the certificate wizard.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li  style="color:black;"&gt;&lt;span style="font-family:tahoma, sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Restart the server.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-7772320327606497946?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/7772320327606497946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=7772320327606497946' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/7772320327606497946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/7772320327606497946'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/05/generate-wildcard-ssl-for-apache-2x.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-8283668870403888177</id><published>2010-05-21T10:28:00.001-05:00</published><updated>2010-05-21T10:28:46.842-05:00</updated><title type='text'>Extract values within quotes from com...</title><content type='html'>Extract values within quotes from command output on Linux using perl &lt;br&gt;&lt;br&gt;&lt;div&gt;For example:&lt;/div&gt;&lt;div&gt;To obtain all values within quotes from the output of a jstack command you could&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;nbsp;./jstack &amp;lt;pid&amp;gt; |perl -lne &amp;#39;print $1 if (/&amp;quot;(.*)&amp;quot;/)&amp;#39;&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;and if you wanted a count of how many quoted values there are&lt;/div&gt;&lt;br&gt;&lt;div&gt;&amp;nbsp;./jstack 23545 |perl -lne &amp;#39;print $1 if (/&amp;quot;(.*)&amp;quot;/)&amp;#39; |wc -l&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-8283668870403888177?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/8283668870403888177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=8283668870403888177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8283668870403888177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8283668870403888177'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/05/extract-values-within-quotes-from-com.html' title='Extract values within quotes from com...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3476965566122012512</id><published>2010-05-06T13:06:00.001-05:00</published><updated>2010-05-06T13:06:18.808-05:00</updated><title type='text'>Oracle on Linux RMAN from Netbackup t...</title><content type='html'>&lt;h2 style="color:#606060"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="5"&gt;&lt;a href="http://sysxperts.wordpress.com/2010/05/06/oracle-on-linux-rman-from-netbackup-to-avamar-client/" rel="bookmark" style="color:#808080" title="Permanent link to Oracle on Linux RMAN from Netbackup to Avamar&amp;nbsp;Client"&gt;&lt;u&gt;&lt;b&gt;Oracle on Linux RMAN from Netbackup to Avamar Backup Client&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;p class="date" style="margin-left:0px;margin-right:0px"&gt;&lt;br&gt;&lt;/p&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;I recently migrated some Oracle 10g and 11g RHEL 5 VM&amp;rsquo;s and Physical boxes from Netbackup based clients to Avamar clients with the RMAN plugin. I will create a separate post regarding automation of the AvamarClient setup and focus on the RMAN configuration for event/client driven backup here.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;First thing I did before automating any of the processes was to download the required docs and binaries from the Avamar web interface. There is a Documents and Downloads link at the bottom of the page of the following sample url:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;blockquote style="margin-left:30px;margin-right:30px"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;http://avamarservernameorip&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;Then I downloaded the Avamar Oracle Client User Guide and the appropriate binaries for the platform from the right hand column, for example:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;blockquote style="margin-left:30px;margin-right:30px"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;AvamarClient-linux-rhel4-x86_64-5.0.101-32.rpm&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;AvamarRMAN-linux-rhel4-x86_64-5.0.101-32.rpm&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;Also, ask your friendly EMC Avamar installer to provide a copy of AvOracleRMAN.pdf and AvOracleDatabasePrep.pdf which provide a lot more detail than the Client User Guide.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;Installation and registration of the Avamar Client&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;blockquote style="margin-left:30px;margin-right:30px"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;1. As root cd to location of downloaded rpms&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;2. Type rpm -ivh AvamarClient-linux-rhel4-x86_64-5.0.101-32.rpm&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;3. Type /usr/local/avamar/bin/avregister&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;4. Enter the fqdn of the Administrator server when prompted [avamarserver.domain.com]&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;5. Enter the Avamar server domain [clients] when prompted&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;6. The Avamar Client installation is now complete&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;Installation of the AvamarRMAN Plugin&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;blockquote style="margin-left:30px;margin-right:30px"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;1. As root cd to location of downloaded rpms&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;2. Type rpm -ivh AvamarRMAN-linux-rhel4-x86_64-5.0.101-32.rpm&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;3. Update iptables with following rules to allow secure backups and also update any firewalls to allow backup through these ports:&lt;br&gt;-A RH-Firewall-1-INPUT -m state &amp;ndash;state NEW -m tcp -p tcp &amp;ndash;dport 28002 -j ACCEPT&lt;br&gt;-A RH-Firewall-1-INPUT -m state &amp;ndash;state NEW -m tcp -p tcp &amp;ndash;dport 27000 -j ACCEPT&lt;br&gt;-A RH-Firewall-1-INPUT -m state &amp;ndash;state NEW -m tcp -p tcp &amp;ndash;dport 29000 -j ACCEPT&lt;br&gt;-A RH-Firewall-1-INPUT -m state &amp;ndash;state NEW -m tcp -p tcp &amp;ndash;dport 8672 -j ACCEPT&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;4. Create a new user account that will have access to backup/restore jobs on the domain containing the Oracle backup jobs using the Avamar Administrator Console.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;5. Create a my-avtar-flags.txt file for linux in /usr/local/avamar/bin containing:&lt;br&gt;&amp;ndash;pidname=Oracle&lt;br&gt;&amp;ndash;pidnum=1002&lt;br&gt;&amp;ndash;logfile=/usr/local/avamar/var/avtar.log&lt;br&gt;&amp;ndash;vardir=/usr/local/avamar/var&lt;br&gt;&amp;ndash;id=[userid from prior step]&lt;br&gt;&amp;ndash;ap=[password from prior step]&lt;br&gt;&amp;ndash;path=[/domain/oracleservername]&lt;br&gt;&amp;ndash;expires=[number in days]&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;6. Create RMAN scripts (avorabackup and avorarestore) that can be launched with cron or scheduler of your choosing, examples below:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;launch this example backup script from a file named avorabackup as follows:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; rman target / nocatalog @avorabackup&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;run {&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;configure device type sbt clear;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;allocate channel c1 type &amp;lsquo;SBT_TAPE&amp;rsquo; PARMS=&amp;rdquo;SBT_LIBRARY=/usr/local/avamar/lib/libobk_avamar64.so, ENV=(PATH=/bin:/usr/bin:/usr/local/avamar/bin)&amp;rdquo; format &amp;lsquo;%d_%U&amp;rsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;send &amp;lsquo;&amp;rdquo;&amp;ndash;flagfile=/usr/local/avamar/bin/my-avtar-flags.txt&amp;rdquo; &amp;lsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;send &amp;lsquo;&amp;rdquo;&amp;ndash;sysdir=/usr/local/avamar/etc&amp;rdquo; &amp;ldquo;&amp;ndash;bindir=/usr/local/avamar/bin&amp;rdquo; &amp;ldquo;&amp;ndash;vardir=/usr/local/avamar/var&amp;rdquo;&amp;lsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;configure retention policy to recovery window of 10 days;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;configure retention policy to redundancy 2;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;backup database plus archivelog;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;delete noprompt obsolete;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;crosscheck backupset;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;release channel c1;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;launch this example restore script from a file named avorarestore as follows:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; rman target / nocatalog @avorarestore&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;run {&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;allocate channel c1 type &amp;lsquo;SBT_TAPE&amp;rsquo; PARMS=&amp;rdquo;SBT_LIBRARY=/usr/local/avamar/lib/libobk_avamar64.so, ENV=(PATH=/bin:/usr/bin:/usr/local/avamar/bin)&amp;rdquo; format &amp;lsquo;%d_%U&amp;rsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;send channel=&amp;rsquo;c1&amp;prime; &amp;lsquo;&amp;rdquo;&amp;ndash;flagfile=/usr/local/avamar/bin/my-avtar-flags.txt&amp;rdquo; &amp;lsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;send &amp;lsquo;&amp;rdquo;&amp;ndash;sysdir=/usr/local/avamar/etc&amp;rdquo; &amp;ldquo;&amp;ndash;bindir=/usr/local/avamar/bin&amp;rdquo; &amp;ldquo;&amp;ndash;vardir=/usr/local/avamar/var&amp;rdquo;&amp;lsquo;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;restore database;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;recover database;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;release channel c1;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="entrytext"&gt;&lt;div class="snap_preview"&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;font face="verdana, tahoma, arial, sans-serif"&gt;&lt;font color="#2a2a2a"&gt;&lt;font size="2"&gt;}&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3476965566122012512?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3476965566122012512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3476965566122012512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3476965566122012512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3476965566122012512'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/05/oracle-on-linux-rman-from-netbackup-t.html' title='Oracle on Linux RMAN from Netbackup t...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-5620630890242178182</id><published>2010-04-23T01:10:00.001-05:00</published><updated>2010-04-23T01:10:32.693-05:00</updated><title type='text'>NTP Update PoSH for ESX</title><content type='html'>NTP Update PoSH for ESX &lt;br&gt;&lt;br&gt;&lt;div&gt;$Cluster = &amp;quot;&amp;lt;cluster name&amp;gt;&amp;quot;&lt;/div&gt;&lt;div&gt;$Hosts = Get-Cluster $Cluster | Get-VMHost&lt;/div&gt;&lt;div&gt;ForEach ($Host in $Hosts)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;Remove-VmHostNtpServer -NtpServer &amp;quot;x.x.x.x&amp;quot; -VMHost $Host | Out-Null&lt;/div&gt;&lt;div&gt;Remove-VmHostNtpServer -NtpServer &amp;quot;x.x.x.x&amp;quot; -VMHost $Host | Out-Null&lt;br&gt;&lt;/div&gt;&lt;div&gt;Add-VmHostNtpServer -NtpServer &amp;quot;ntp0.sysxperts.com&amp;quot; -VMHost $Host | Out-Null&lt;/div&gt;&lt;div&gt;Add-VmHostNtpServer -NtpServer &amp;quot;ntp1.sysxperts.com&amp;quot; -VMHost $Host | Out-Null&lt;br&gt;&lt;/div&gt;&lt;div&gt;Get-VMHostService -VMHost $Host | Where-Object {$_.key -eq &amp;quot;ntpd&amp;quot;} | Restart-VMHostService Confirm:$false | Out-Null&lt;/div&gt;&lt;div&gt;write &amp;quot;NTP Server was changed on $host&amp;quot;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-5620630890242178182?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/5620630890242178182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=5620630890242178182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5620630890242178182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5620630890242178182'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/04/ntp-update-posh-for-esx.html' title='NTP Update PoSH for ESX'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-1023936820264490550</id><published>2010-04-13T13:46:00.003-05:00</published><updated>2010-04-13T13:46:41.577-05:00</updated><title type='text'>Enabling a VirtualBox Win7 guest to connect to 8021x</title><content type='html'>&lt;p class="Normal"&gt;&lt;span class="Normal__Char"&gt;&lt;b&gt;&lt;u&gt;Enabling a VirtualBox Win7 Guest to Connect to 802.1x Corporate Network&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Disable everything but the VirtualBox Bridged Networking Driver on the interface connected to the corp. LAN and also disable authentication as this will be handled by the guest OS.&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal" style="text-align:left"&gt;&amp;nbsp;&lt;a id="graphic0B" name="graphic0B"&gt;&lt;/a&gt;&lt;img alt="image" height="365" src="http://docs.google.com/File?id=dfxjbxcc_242c3kmbnfv_b" width="281"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal" style="text-align:left"&gt;&lt;img alt="image" height="369" src="http://docs.google.com/File?id=dfxjbxcc_243q596x4cw_b" width="284"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal" style="text-align:left"&gt;&lt;a id="graphic0C" name="graphic0C"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Disable VirtualBox on the interface connected to your Internet enabled network&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="374" src="http://docs.google.com/File?id=dfxjbxcc_244fn5v62gk_b" width="288"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic0D" name="graphic0D"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Create 1 bridged interface and 1 host only interface on your VirtualBox Guest under Virtual Box Settings then power on Guest and go to Network Connections to verify&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="239" src="http://docs.google.com/File?id=dfxjbxcc_245cs2wfcf5_b" width="329"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&amp;nbsp;&amp;nbsp;&lt;img alt="image" height="239" src="http://docs.google.com/File?id=dfxjbxcc_246rbsxg8gd_b" width="329"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic0F" name="graphic0F"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;On the bridged interface you will enable authentication for 802.1x and edit settings as follows.&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="427" src="http://docs.google.com/File?id=dfxjbxcc_247769hs543_b" width="329"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic10" name="graphic10"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="Normal"&gt;Settings - edit servernames with your own Domain Controllers/802.1x auth providers&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="458" src="http://docs.google.com/File?id=dfxjbxcc_248g8jphnhn_b" width="320"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic11" name="graphic11"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Additional settings - Set to User Authentication and replace credentials with your Domain auth in the form DOMAINNAME\username&lt;/p&gt;&lt;p class="Normal"&gt;On the Host Only interface set it to a static IP in the same range as that which is configured on the Host as shown under File &amp;gt; Preferences &amp;gt; Network&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="152" src="http://docs.google.com/File?id=dfxjbxcc_249hp7qnwf7_b" width="255"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic12" name="graphic12"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="362" src="http://docs.google.com/File?id=dfxjbxcc_250fxqkp8cn_b" width="325"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic13" name="graphic13"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Now you should be able to join your Windows 7 guest to the domain and access corporate resources with 802.1x authentication.&lt;/p&gt;&lt;p class="Normal"&gt;And your shared local drive too if you added under Devices &amp;gt; Shared Folders&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="305" src="http://docs.google.com/File?id=dfxjbxcc_251dhpb7xch_b" width="406"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic14" name="graphic14"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-1023936820264490550?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/1023936820264490550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=1023936820264490550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/1023936820264490550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/1023936820264490550'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/04/enabling-virtualbox-win7-guest-to_13.html' title='Enabling a VirtualBox Win7 guest to connect to 8021x'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-284122100951536213</id><published>2010-04-13T13:46:00.001-05:00</published><updated>2010-04-13T13:46:40.033-05:00</updated><title type='text'>Enabling a VirtualBox Win7 guest to connect to 8021x</title><content type='html'>&lt;p class="Normal"&gt;&lt;span class="Normal__Char"&gt;&lt;b&gt;&lt;u&gt;Enabling a VirtualBox Win7 Guest to Connect to 802.1x Corporate Network&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Disable everything but the VirtualBox Bridged Networking Driver on the interface connected to the corp. LAN and also disable authentication as this will be handled by the guest OS.&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal" style="text-align:left"&gt;&amp;nbsp;&lt;a id="graphic0B" name="graphic0B"&gt;&lt;/a&gt;&lt;img alt="image" height="365" src="http://docs.google.com/File?id=dfxjbxcc_242c3kmbnfv_b" width="281"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal" style="text-align:left"&gt;&lt;img alt="image" height="369" src="http://docs.google.com/File?id=dfxjbxcc_243q596x4cw_b" width="284"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal" style="text-align:left"&gt;&lt;a id="graphic0C" name="graphic0C"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Disable VirtualBox on the interface connected to your Internet enabled network&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="374" src="http://docs.google.com/File?id=dfxjbxcc_244fn5v62gk_b" width="288"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic0D" name="graphic0D"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Create 1 bridged interface and 1 host only interface on your VirtualBox Guest under Virtual Box Settings then power on Guest and go to Network Connections to verify&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="239" src="http://docs.google.com/File?id=dfxjbxcc_245cs2wfcf5_b" width="329"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&amp;nbsp;&amp;nbsp;&lt;img alt="image" height="239" src="http://docs.google.com/File?id=dfxjbxcc_246rbsxg8gd_b" width="329"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic0F" name="graphic0F"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;On the bridged interface you will enable authentication for 802.1x and edit settings as follows.&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="427" src="http://docs.google.com/File?id=dfxjbxcc_247769hs543_b" width="329"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic10" name="graphic10"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="Normal"&gt;Settings - edit servernames with your own Domain Controllers/802.1x auth providers&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="458" src="http://docs.google.com/File?id=dfxjbxcc_248g8jphnhn_b" width="320"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic11" name="graphic11"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Additional settings - Set to User Authentication and replace credentials with your Domain auth in the form DOMAINNAME\username&lt;/p&gt;&lt;p class="Normal"&gt;On the Host Only interface set it to a static IP in the same range as that which is configured on the Host as shown under File &amp;gt; Preferences &amp;gt; Network&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="152" src="http://docs.google.com/File?id=dfxjbxcc_249hp7qnwf7_b" width="255"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic12" name="graphic12"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="362" src="http://docs.google.com/File?id=dfxjbxcc_250fxqkp8cn_b" width="325"&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;p class="Normal"&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic13" name="graphic13"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="Normal"&gt;Now you should be able to join your Windows 7 guest to the domain and access corporate resources with 802.1x authentication.&lt;/p&gt;&lt;p class="Normal"&gt;And your shared local drive too if you added under Devices &amp;gt; Shared Folders&lt;/p&gt;&lt;blockquote class="webkit-indent-blockquote" style="border:none;margin:0 0 0 40px"&gt;&lt;p class="Normal"&gt;&lt;img alt="image" height="305" src="http://docs.google.com/File?id=dfxjbxcc_251dhpb7xch_b" width="406"&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p class="Normal"&gt;&lt;a id="graphic14" name="graphic14"&gt;&lt;/a&gt;&lt;/p&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-284122100951536213?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/284122100951536213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=284122100951536213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/284122100951536213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/284122100951536213'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/04/enabling-virtualbox-win7-guest-to.html' title='Enabling a VirtualBox Win7 guest to connect to 8021x'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-6665461242075895359</id><published>2010-03-16T10:56:00.001-05:00</published><updated>2010-03-16T10:56:05.249-05:00</updated><title type='text'>vDR locks snapshots upon failed backup</title><content type='html'>&lt;h3 align="left" dir="ltr" id="n8uh" style="color:#b76401;margin-left:0px;margin-right:0px"&gt;&lt;font color="#333333"&gt;&lt;font size="6"&gt;vDR locks snapshots upon failed backup&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;div class="sites-canvas-main" id="a03f" style="background-color:transparent"&gt;&lt;table cellspacing="0" class="sites-layout-hbox sites-layout-name-one-column zeroBorder" style="margin-left:0px;margin-right:0px;width:643px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="sites-layout-tile sites-tile-name-content-1" style="vertical-align:top"&gt;&lt;div dir="ltr"&gt;&lt;font color="#333333"&gt;So if you&amp;#39;ve reviewed all the snapshot troubleshooting on the web and still have not found a solution to your problem you might be the victim of a bad vDR configuration.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;We decided to give vDR a try in our Test and Dev environment to reduce backup licensing costs and ran into problem where if the vDR backup failed the snapshots would fill up the LUNs and we had no luck removing or consolidating them using any of the methods available.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;The quick fix ended up being as follows:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;1) Shut down the vDR appliance&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;2) Detach the disks with orphaned snapshots from the appliance&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;3) Verify and correct for space requirements on target LUNs&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;4) Create a new snapshot with vSphere client (or service console)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;5) Delete snapshot with vSphere client (or service console)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;6) All went well and we were back in business at this point&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Investigating preventative measures at the moment, will update with findings.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-6665461242075895359?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/6665461242075895359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=6665461242075895359' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6665461242075895359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6665461242075895359'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/03/vdr-locks-snapshots-upon-failed-backup.html' title='vDR locks snapshots upon failed backup'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3090947638136986917</id><published>2010-03-10T13:43:00.001-06:00</published><updated>2010-03-10T13:43:01.063-06:00</updated><title type='text'>OpenVPN</title><content type='html'>&lt;h3 align="left" id="s_vh" style="color:#b76401;margin-left:0px;margin-right:0px"&gt;&lt;font color="#333333"&gt;&lt;font size="6"&gt;&lt;span dir="ltr" id="o5j2"&gt;OpenVPN&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h3&gt;&lt;div class="sites-canvas-main" id="iqy6" style="background-color:transparent"&gt;&lt;table cellspacing="0" class="sites-layout-hbox sites-layout-name-one-column zeroBorder" style="margin-left:0px;margin-right:0px;width:871px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="sites-layout-tile sites-tile-name-content-1" style="vertical-align:top"&gt;&lt;div dir="ltr"&gt;&lt;div&gt;&lt;font color="#333333"&gt;This installation of OpenVPN applies to Ubuntu 9.10&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;sudo apt-get install openvpn &amp;nbsp;# to intall the openvpn server&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Follow&amp;nbsp;&lt;a href="http://openvpn.net/index.php/open-source/documentation/howto.html#quick" rel="nofollow" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;http://openvpn.net/index.php/open-source/documentation/howto.html#quick&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Copy the required example files to /etc/openvpn&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;cp -r /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn/&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;cd /etc/openvpn/easy-rsa/2.0&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Build the Certificate Server&lt;/font&gt;&lt;/div&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;. ./vars&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;./clean-all&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;./build-ca&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;font color="#333333"&gt;The final command (build-ca) will build the certificate authority (CA) certificate and key by invoking the interactive openssl command:&lt;br&gt;&lt;/font&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;# ./build-ca&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Generating a 1024 bit RSA private key&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;............++++++&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;...........++++++&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;writing new private key to &amp;#39;ca.key&amp;#39;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;-----&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;You are about to be asked to enter information that will be incorporated&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;into your certificate request.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;There are quite a few fields but you can leave some blank&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;For some fields there will be a default value,&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;If you enter &amp;#39;.&amp;#39;, the field will be left blank.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;-----&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Country Name (2 letter code) [MN]:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;State or Province Name (full name) [Minnesota]:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Locality Name (eg, city) [Andover]:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Organization Name (eg, company) [OpenVPN-TEST]:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Organizational Unit Name (eg, section) []:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Common Name (eg, your name or your server&amp;#39;s hostname) []:openvpn1.sysxperts.com&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Email Address [me@myhost.mydomain]:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;Note that in the above sequence, most queried parameters were defaulted to the values set in the vars or vars.bat files. The only parameter which must be explicitly entered is the Common Name. In the example above, I used &amp;quot;openvpn1.sysxperts.com&amp;quot;.&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Now build the OpenVPN server certificate and key&lt;/font&gt;&lt;/div&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;./build-key-server openvpn1&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;font color="#333333"&gt;As in the previous step, most parameters can be defaulted. When the Common Name is queried, enter &amp;quot;openvpn1&amp;quot;. &amp;nbsp;Two other queries require positive YES responses, &amp;quot;Sign the certificate? [y/n]&amp;quot; and &amp;quot;1 out of 1 certificate requests certified, commit? [y/n]&amp;quot;.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Build client certificates and keys&lt;/font&gt;&lt;/div&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;./build-key pvalentino&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;./build-key user2&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;font color="#333333"&gt;Remember to type the appropriate Common Name for each client when prompted, i.e. &amp;quot;username1&amp;quot;, &amp;quot;client2&amp;quot;, or &amp;quot;server3&amp;quot;. Always use a unique common name for each client.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;For greater security, instead of generating the client certificate and keys on the server, we could have had the client generate its own private key locally, and then submit a Certificate Signing Request (CSR) to the key-signing machine. In turn, the key-signing machine could have processed the CSR and returned a signed certificate to the client.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Build the required Diffie-Hellman parameters for the OpenVPN server&lt;/font&gt;&lt;/div&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;./build-dh&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;font color="#333333"&gt;Now we will find our newly-generated keys and certificates in the keys subdirectory (/etc/openvpn/easy-rsa/2.0/keys). Here is an explanation of the relevant files:&lt;br&gt;&lt;/font&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;table border="1" cellpadding="8" cellspacing="0" style="margin-left:0px;margin-right:0px"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;font color="#4C1130"&gt;Filename&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;font color="#4C1130"&gt;Needed By&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;font color="#4C1130"&gt;Purpose&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;font color="#4C1130"&gt;Secret&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;ca.crt&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server + all clients&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;Root CA certificate&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;ca.key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;key signing machine only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;Root CA key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;YES&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;dh{n}.pem&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;Diffie Hellman parameters&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;openvpn1.crt&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;Server Certificate&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;openvpn1.key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;Server Key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;YES&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino.crt&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino Certificate&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino.key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;pvalentino Key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;YES&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2.crt&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2 only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2 Certificate&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2.key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2 only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;user2 Key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;YES&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3.crt&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3 only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3 Certificate&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;NO&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3.key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3 only&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;server3 Key&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#4C1130"&gt;YES&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;div&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#003366"&gt;&lt;font size="2"&gt;-rw-r--r-- 1 root &amp;nbsp; &amp;nbsp; &amp;nbsp; root 4003 2010-01-22 17:41 openvpn1.crt&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="arial, helvetica, sans-serif"&gt;&lt;font color="#003366"&gt;&lt;font size="2"&gt;-rw------- 1 root &amp;nbsp; &amp;nbsp; &amp;nbsp; root &amp;nbsp;887 2010-01-22 17:41 openvpn1.key&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;br&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;font color="#333333"&gt;Copy sample configuration files to /etc/openvpn for server side configuration&lt;/font&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;cd /usr/share/doc/openvpn/examples/sample-config-files&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;gzip -d server.conf.gz&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;cp server.conf /etc/openvpn/&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;font color="#333333"&gt;Edit /etc/openvpn/server.conf as follows:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;In my environment I&amp;#39;m using the following:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;192.168.1.206 is the OpenVPN server interface and my internet access device is configured to NAT forward port 1194 udp to that address. &amp;nbsp;These settings can typically be found under Port Forwarding on a Netgear router or under Applications and Gaming Settings on a Linksys router.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;10.8.18.0 &amp;nbsp;is my VPN subnet&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;10.1.1.0 is another private subnet on my network&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="sites-codeblock sites-codesnippet-block" style="background-color:#efefef"&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# Which local IP address should OpenVPN&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# listen on? (optional)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;local 192.168.1.206&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;port 1194&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# TCP or UDP server?&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;;proto tcp&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;proto udp&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;;dev tap&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;dev tun&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;cert /etc/openvpn/easy-rsa/2.0/keys/server.crt&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;key /etc/openvpn/easy-rsa/2.0/keys/server.key &amp;nbsp;# This file should be kept secret&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;server 10.8.18.0 255.255.255.0&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;ifconfig-pool-persist /etc/openvpn/ipp.txt&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# Push routes to the client to allow it&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# to reach other private subnets behind&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# the server. &amp;nbsp;Remember that these&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# private subnets will also need&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# to know to route the OpenVPN client&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# address pool (10.8.0.0/255.255.255.0)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;# back to the OpenVPN server.&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;push &amp;quot;route 10.1.1.0 255.255.255.0&amp;quot;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;push &amp;quot;route 192.168.1.0 255.255.255.0&amp;quot;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;keepalive 10 120&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;comp-lzo&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;user nobody&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;group nogroup&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;persist-key&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;persist-tun&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;status /etc/openvpn/openvpn-status.log&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;verb 3&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#006000" face="monospace"&gt;mute 20&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;a href="http://openvpn.net/index.php/open-source/downloads.html" rel="nofollow" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;OpenVPN&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;iptables rules to allow traffic to local subnets attached to eth0 and eth1 on the OpenVPN server&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;without the need for a bridging config&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;blockquote style="border-color:initial;border-width:initial;color:#666666;margin-left:40px;margin-right:0px"&gt;&lt;div&gt;&lt;font color="#333333"&gt;iptables --append FORWARD --in-interface tun0 -j ACCEPT&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;iptables-save &amp;gt; /etc/iptables.rules&lt;/font&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;Then modify /etc/network/interfaces like so in my case (NOTE the pre-up line)&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;This restores my iptables nat rules after a reboot:&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="sites-codeblock sites-codesnippet-block" style="background-color:#efefef"&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;auto eth0&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;iface eth0 inet static&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;address 192.168.1.206&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;netmask 255.255.255.0&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;network 192.168.1.0&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;gateway 192.168.1.1&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pre-up iptables-restore &amp;lt; /etc/iptables.rules&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;auto eth1&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;iface eth1 inet static&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;address 10.1.1.200&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;netmask 255.255.255.0&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;network 10.1.1.0&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;font color="#333333"&gt;For client configuration email, scp, or sftp a copy of client.conf to yourself for editing and providing to the clients ensuring that configuration is compatible with server side. &amp;nbsp;Below is example&amp;nbsp;&lt;a href="http://code.google.com/p/tunnelblick/" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;Tunnelblick&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;client.conf which works with the server.conf above. &amp;nbsp;This client.conf is for a Mac using&amp;nbsp;&lt;a href="http://code.google.com/p/tunnelblick/" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;Tunnelblick&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;with it&amp;#39;s config stored under /Users/pvalentino/Library/Application Support/Tunnelblick/Configurations/client.conf. &amp;nbsp;Be sure to secure your private key on each client as well by removing group and other access with chmod go-rwx client.conf.&lt;br&gt;&lt;/font&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;a href="http://code.google.com/p/tunnelblick/" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;Tunnelblick&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;for OSX client example:&amp;nbsp;&lt;/font&gt;&lt;/div&gt;&lt;div class="sites-codeblock sites-codesnippet-block" style="background-color:#efefef"&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;client&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;;dev tap&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;dev tun&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;;dev-node MyTap&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;;proto tcp&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;proto udp&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;# for me i use dyndns.org dyndns updater to keep my dhcp comcast address in sync with domain name&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;# you can get a free dyndns.org hostname and download the updater for free as well&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;remote openvpn1.sysxperts.com 1194&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;nobind&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;user nobody&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;group nogroup&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;persist-key&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;persist-tun&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;mute-replay-warnings&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;# Note that these files must be provided - ca.crt and client cert must come from openvpn server and key may come from server or from client depending on how you generate csr&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;ca /Users/pvalentino/ca.crt&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;cert /Users/pvalentino/pvalentino.crt&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;key /Users/pvalentino/pvalentino.key&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;ns-cert-type server&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;;tls-auth ta.key 1&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;;cipher x&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;comp-lzo&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;font face="Courier New"&gt;verb 3&lt;/font&gt;&lt;br&gt;&lt;font face="Courier New"&gt;mute 20&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;a href="http://openvpn.net/index.php/open-source/downloads.html" rel="nofollow" style="background-color:initial;background-repeat:repeat no-repeat;color:#b76401"&gt;&lt;u&gt;&lt;b&gt;OpenVPN&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;Windows client example:&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;For example, on Windows 7 64bit client install the OpenVPN client with default options, change the network connection name to MyTap under change adapter settings for the TAP-Win32 Adapter V9 interface. &amp;nbsp;Then create and save the file below into c:\Program Files(x86)\openvpn\config as client.ovpn.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="sites-codeblock sites-codesnippet-block" style="background-color:#efefef"&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;client&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;;dev tap&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;dev tun&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;dev-node MyTap&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;;proto tcp&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;proto udp&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font face="monospace"&gt;&lt;font color="#006000"&gt;remote openvpn1.sysxperts.com 1194&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;nobind&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;# Not valid on windows&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;;user nobody&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;;group nogroup&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;persist-key&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;persist-tun&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;mute-replay-warnings&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;# Note the use of double backslashes on a windows client and I put them in a folder I manually created under my users folder&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;ca C:\\Users\\pvalentino\\openvpncerts\\ca.crt&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;cert C:\\Users\\pvalentino\\openvpncerts\\client2.crt&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;key C:\\Users\\pvalentino\\openvpncerts\\client2.key&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;ns-cert-type server&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;comp-lzo&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;&lt;font face="Courier New"&gt;verb 3&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font face="monospace"&gt;&lt;font color="#006000"&gt;mute 20&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;When you run the openvpn client on windows be sure to right-click and select run as administrator or the software will not be able to create necessary routing configurations for the tunnel.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;After saving config and starting the application with administrator privileges you will have a new icon in your system tray. &amp;nbsp;Simply right-click and select connect to establish the tunnel.&lt;/font&gt;&lt;/div&gt;&lt;br&gt;&lt;div&gt;&lt;font color="#333333"&gt;If there are problems right-click the same icon and choose View Log to start the troubleshooting process.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3090947638136986917?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3090947638136986917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3090947638136986917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3090947638136986917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3090947638136986917'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2010/03/openvpn.html' title='OpenVPN'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-5543014766440561583</id><published>2009-10-27T13:50:00.001-05:00</published><updated>2009-10-27T13:50:35.846-05:00</updated><title type='text'>Update pam.d files with FISMA complia...</title><content type='html'>&lt;H4&gt; Update pam.d files with FISMA compliant options&lt;/H4&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;#!/usr/bin/perl&lt;/DIV&gt;
&lt;DIV&gt;my $outpdir = '/etc/pam.d';&lt;BR&gt;my $inpdir = '/etc/pam.d';&lt;/DIV&gt;
&lt;DIV&gt;opendir(my $pamd, $inpdir);&lt;BR&gt;my @pamddir = readdir($pamd);&lt;BR&gt;closedir($pamd);&lt;/DIV&gt;
&lt;DIV&gt;foreach my $file (@pamddir) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $fileabs = "$inpdir/$file";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (-r $fileabs &amp;amp;&amp;amp; ! -d $fileabs) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Processing $file:\n";&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open(PAMFILE, $fileabs) or die "Failed to open $fileabs: $!";&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my @pfLines = &amp;lt;PAMFILE&amp;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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close PAMFILE;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open(DESTFILE, "&amp;gt;$outpdir/$file") or die "Could not write $outpdir/$file: $!";&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach my $line (@pfLines) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $line;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($line =~ /pam_rhosts_auth\.so/) { print DESTFILE "#$line\n"; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else { print DESTFILE "$line\n"; }&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close DESTFILE;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;&lt;/DIV&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-5543014766440561583?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/5543014766440561583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=5543014766440561583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5543014766440561583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5543014766440561583'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/update-pamd-files-with-fisma-complia.html' title='Update pam.d files with FISMA complia...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-7763397602165508702</id><published>2009-10-27T09:09:00.001-05:00</published><updated>2009-10-27T09:09:53.356-05:00</updated><title type='text'>Perl script to update FISMA compliant...</title><content type='html'>&lt;H4&gt;Perl script to update FISMA compliant kernel paramaters&lt;/H4&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;#!/usr/bin/perl -w&lt;BR&gt;use strict;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;# Make timestamped backup for sysctl.conf and limits.conf&lt;BR&gt;my $timestamp = `date +%Y%m%d%H%M`;&lt;BR&gt;system("cp /etc/sysctl.conf /etc/sysctl.conf.$timestamp");&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;my $drpf = '1';&lt;BR&gt;my $arpf = '1';&lt;BR&gt;my $dasr = '0';&lt;BR&gt;my $tmsb = '4096';&lt;BR&gt;my $aasr = '0';&lt;BR&gt;my $dar = '0';&lt;BR&gt;my $aar = '0';&lt;BR&gt;my $dsr = '0';&lt;BR&gt;my $asr = '0';&lt;BR&gt;my $ieib = '0';&lt;BR&gt;my $dser = '0';&lt;BR&gt;my $aser = '0';&lt;BR&gt;my $tsyn = '1';&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;# Write out sysctl.conf&lt;BR&gt;open OUTP, '&amp;gt;/etc/sysctl.conf.fisma' or die "Cannot write /etc/sysctl.conf.fisma: $!";&lt;BR&gt;open SYSCTL, '/etc/sysctl.conf' or die "Cannot read sysctl.conf: $!";&lt;BR&gt;&amp;nbsp;&lt;BR&gt;while (my $line = &amp;lt;SYSCTL&amp;gt;) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $line;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.default\.rp_filter/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.all\.rp_filter/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.default\.accept_source_route/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_max_syn_backlog/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.all\.accept_source_route/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.default\.accept_redirects/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.all\.accept_redirects/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.default\.secure_redirects/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.conf\.all\.secure_redirects/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.icmp_echo_ignore_broadcasts/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next if $line =~ /^net\.ipv4\.conf\.default\.send_redirects/;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next if $line =~ /^net\.ipv4\.conf\.all\.send_redirects/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next if $line =~ /^net\.ipv4\.tcp_syncookies/;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print OUTP "$line\n";&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;close SYSCTL;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;print OUTP "net.ipv4.conf.default.rp_filter = $drpf\n";&lt;BR&gt;print OUTP "net.ipv4.conf.all.rp_filter = $arpf\n";&lt;BR&gt;print OUTP "net.ipv4.conf.default.accept_source_route = $dasr\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_max_syn_backlog = $tmsb\n";&lt;BR&gt;print OUTP "net.ipv4.conf.all.accept_source_route = $aasr\n";&lt;BR&gt;print OUTP "net.ipv4.conf.default.accept_redirects = $dar\n";&lt;BR&gt;print OUTP "net.ipv4.conf.all.accept_redirects = $aar\n";&lt;BR&gt;print OUTP "net.ipv4.conf.default.secure_redirects = $dsr\n";&lt;BR&gt;print OUTP "net.ipv4.conf.all.secure_redirects = $asr\n";&lt;BR&gt;print OUTP "net.ipv4.icmp_echo_ignore_broadcasts = $ieib\n";&lt;BR&gt;print OUTP "net.ipv4.conf.default.send_redirects = $dser\n";&lt;BR&gt;print OUTP "net.ipv4.conf.all.send_redirects = $aser\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_syncookies = $tsyn\n";&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;close OUTP;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;# Write new file back to active config file&lt;BR&gt;system("mv /etc/sysctl.conf.fisma /etc/sysctl.conf");&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-7763397602165508702?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/7763397602165508702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=7763397602165508702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/7763397602165508702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/7763397602165508702'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/perl-script-to-update-fisma-compliant.html' title='Perl script to update FISMA compliant...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4101357895845710813</id><published>2009-10-26T21:04:00.001-05:00</published><updated>2009-10-26T21:04:28.556-05:00</updated><title type='text'>One liners</title><content type='html'>&lt;div&gt;&lt;h4&gt;Bash One liners&lt;/h4&gt;&lt;br&gt;&lt;br&gt;for path in `awk '($3 ~ "ext2|ext3") {print $2}' /etc/fstab`;do find $path -xdev -type d -perm -0002 ! -perm -1000 &amp;gt;&amp;gt; /tmp/sticks;done&lt;br&gt;&lt;br&gt;Where /tmp/sticks contains directory listing one per line with world writeable permissions and no sticky bit set i.e.&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/usr/openv/netbackup/logs/user_ops&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;/usr/openv/netbackup/logs/user_ops/nbjlogs&lt;br&gt;&lt;br&gt;Read lines in file /tmp/sticks and echo them out&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cat /tmp/sticks |while read dlist; do echo "${dlsit}";done&lt;br&gt;&lt;br&gt;chmod the folders listed in the file by adding sticky bit (prevent other users with write from deleting anything but their own files)&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;cat /tmp/sticks |while read dlist; do chmod +t "${dlist}";done&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;Read lines in file and echo them out&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while read dlist; do echo "${dlist}";done &amp;lt; &amp;lt;(cat /tmp/sticks)&lt;br&gt;&lt;br&gt;find files and echo their names&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;find /tmp -name 'sticks*' |while read tfile; do echo "${tfile}";done&lt;br&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;find world readable directories&lt;br&gt;for PART in `awk '($3 ~ "ext2|ext3") {print $2}' /etc/fstab`;do find $PART -xdev -type d -perm -0002 -a ! -perm -1000 &amp;gt;&amp;gt; /tmp/sticks ;done&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Change world readable directories to have sticky bit set&lt;br&gt;cat /tmp/sticks |while read dlist; do chmod +t "${dlist}";done&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;rm -rf /etc/exports if not used:&lt;br&gt;&amp;nbsp;if ! grep ^[^#] /etc/exports;then rm -rf /etc/exports; else mail -s "exports in use on `hostname`" &lt;a href="mailto:pvalentino@sysxperts.com"&gt;pvalentino@sysxperts.com&lt;/a&gt; &amp;lt; /etc/exports;fi&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;User home directories should be 750 or less:&lt;br&gt;#!/bin/sh&lt;br&gt;find `awk -F: '($3 &amp;gt;= 500 &amp;amp;&amp;amp; $1 != "nobody") {print $6}' /etc/passwd` -maxdepth 1 -type d -prune&amp;nbsp; \( -perm -g+w -o -perm -o+r -o -perm -o+w -o -perm -o+x \) -ls&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Fix for home dir permissions:&lt;br&gt;find `awk -F: '($3 &amp;gt;= 500 &amp;amp;&amp;amp; $1 != "nobody") {print $6}' /etc/passwd` -maxdepth 1 -type d -prune&amp;nbsp; \( -perm -g+w -o -perm -o+r -o -perm -o+w -o -perm -o+x \) -exec chmod 750 {} \;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Test for world writable files:&lt;br&gt;#!/bin/sh&lt;br&gt;for PART in `awk '($2!="/data" &amp;amp;&amp;amp; $2!="/apps" &amp;amp;&amp;amp; !/^#/ &amp;amp;&amp;amp; $6 != "0") { print $2 }' /etc/fstab`; do&lt;br&gt;&amp;nbsp; find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -ls;&lt;br&gt;done&lt;/div&gt;
&lt;div&gt;&lt;br&gt;Fix world writable:&lt;br&gt;#!/bin/sh&lt;br&gt;for PART in `awk '($2!="/data" &amp;amp;&amp;amp; $2!="/apps" &amp;amp;&amp;amp; !/^#/ &amp;amp;&amp;amp; $6 != "0") { print $2 }' /etc/fstab`; do&lt;br&gt;&amp;nbsp; find $PART -xdev -type f \( -perm -0002 -a ! -perm -1000 \) -exec chmod o-w {} \;;&lt;br&gt;done&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Fix log permissions:&lt;br&gt;find /var/log -type f -exec chmod o-rx {} \;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Find and log SUID/SGID System executables:&lt;br&gt;#!/bin/sh&lt;br&gt;for PART in `awk '(!/^#/ &amp;amp;&amp;amp; $6 != "0") { print $2 }' /etc/fstab`; do&lt;br&gt;&amp;nbsp; find $PART -xdev -type f \( -perm -04000 -o -perm -02000 \) ! -path /bin/su &amp;gt;&amp;gt; /tmp/sgidfiles;mail -s "SUID/SGID files on `hostname` &lt;a href="mailto:pvalentino@sysxperts.com"&gt;pvalentino@sysxperts.com&lt;/a&gt; &amp;lt; /tmp/sgidfiles ;&lt;br&gt;done&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Find unowned files:&lt;/div&gt;
&lt;div&gt;#!/bin/bash&lt;/div&gt;
&lt;div&gt;for PART in `awk '(!/^#/ &amp;amp;&amp;amp; $6 != "0") { print $2 }' /etc/fstab`; do&lt;br&gt;&amp;nbsp; find $PART -xdev \( -nouser -o -nogroup \) -ls;&lt;br&gt;done&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;FIX unowned files:&lt;/div&gt;
&lt;div&gt;#!/bin/bash&lt;br&gt;for PART in `awk '(!/^#/ &amp;amp;&amp;amp; $6 != "0") { print $2 }' /etc/fstab`; do&lt;br&gt;&amp;nbsp; find $PART -xdev \( -nouser -o -nogroup \) -exec chown root:root {} \;;&lt;br&gt;done&lt;br&gt;&lt;br&gt;Ubuntu system account shell set to nologin:&lt;br&gt;rm -rf /tmp/sysaccts; awk -F:
'($1!="root" &amp;amp;&amp;amp; $1!="halt" &amp;amp;&amp;amp; $1!="sync" &amp;amp;&amp;amp;
$1!="shutdown" &amp;amp;&amp;amp; $3&amp;lt;500 &amp;amp;&amp;amp; $7!="/bin/false"
&amp;amp;&amp;amp; $7!="/bin/sh" &amp;amp;&amp;amp; $7!="/usr/sbin/nologin") {print
$1}' /etc/passwd &amp;gt;&amp;gt; /tmp/sysaccts;cat /tmp/sysaccts |while read
slist;do usermod -s /usr/sbin/nologin $slist;done&lt;br&gt;&lt;br&gt;Redhat system account shell set to nologin:&lt;br&gt;rm
-rf /tmp/sysaccts; awk -F: '($1!="root" &amp;amp;&amp;amp; $1!="halt"
&amp;amp;&amp;amp; $1!="sync" &amp;amp;&amp;amp; $1!="shutdown" &amp;amp;&amp;amp; $3&amp;lt;500
&amp;amp;&amp;amp; $7!="/sbin/nologin") {print $1}' /etc/passwd &amp;gt;&amp;gt;
/tmp/sysaccts;cat /tmp/sysaccts |while read slist;do usermod -s
/sbin/nologin $slist;done&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-4101357895845710813?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/4101357895845710813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=4101357895845710813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4101357895845710813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4101357895845710813'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/one-liners.html' title='One liners'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-909822509630337721</id><published>2009-10-20T12:55:00.001-05:00</published><updated>2009-10-20T12:55:38.702-05:00</updated><title type='text'>TCP Wrappers Example</title><content type='html'>&lt;H3&gt;TCP Wrappers Example&lt;/H3&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;To log all access to vsftpd and limit all other wrapped services to local networks add something like this to /etc/hosts.allow&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;BLOCKQUOTE id=h2bv&gt;
&lt;P&gt;vsftpd : ALL \ &lt;/P&gt;
&lt;P&gt;: spawn /bin/echo $(/bin/date) access granted to %c&amp;gt;&amp;gt;/var/log/vsftpd_access.log &lt;/P&gt;
&lt;P&gt;ALL : LOCAL&lt;/P&gt;
&lt;P&gt;ALL : 10.&lt;/P&gt;
&lt;P&gt;ALL : 192.168.1. &lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;DIV&gt;The options above allow access from anywhere in the world to vsftpd and logs that access but only permits access to remaining services from the Local machine, anything that starts with a 10. address and anything that starts with a 192.168.1 address.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Then to enforce denial for all&amp;nbsp; undefined addresses add the following to /etc/hosts.deny&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;BLOCKQUOTE id=zd-9&gt;ALL : ALL&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;If none of the rules in /etc/hosts.allow are matched then the above rule ensures that access is denied, otherwise access would be granted by default.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;B&gt;To find wrapped services:&lt;BR&gt;&lt;/B&gt;[root@host]# strings -f /usr/sbin/* |grep hosts_access&lt;BR&gt;/usr/sbin/&lt;B&gt;in.tftpd&lt;/B&gt;: hosts_access&lt;BR&gt;/usr/sbin/&lt;B&gt;sshd&lt;/B&gt;: hosts_access&lt;BR&gt;/usr/sbin/&lt;B&gt;stunnel&lt;/B&gt;: hosts_access&lt;BR&gt;/usr/sbin/stunnel: See hosts_access(5) manual for details&lt;BR&gt;/usr/sbin/&lt;B&gt;tcpd&lt;/B&gt;: hosts_access_verbose&lt;BR&gt;/usr/sbin/&lt;B&gt;xinetd&lt;/B&gt;: hosts_access&lt;/DIV&gt;
&lt;DIV&gt;[root@host]# strings -f /sbin/* |grep hosts_access&lt;BR&gt;/sbin/&lt;B&gt;auditd&lt;/B&gt;: hosts_access&lt;BR&gt;/sbin/&lt;B&gt;portmap&lt;/B&gt;: hosts_access_verbose&lt;/DIV&gt;
&lt;DIV&gt;If you were using quest authentication services formerly known as vintella authentication services you might also check this location:&lt;BR&gt;[root@host]# strings -f /opt/quest/sbin/* |grep hosts_access&lt;BR&gt;/opt/quest/sbin/&lt;B&gt;sshd&lt;/B&gt;: @(#) hosts_access.c 1.21 97/02/12 02:13:22&lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;The following expansions are available within shell commands for use with the spawn or twist option as in my vsftpd example above. (The spawn option does not work with the ALL wildcard, hence why I specified the vsftpd separately) I've highlighted the most common and useful expansions below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %a (%A) The client (server) host address.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt; %c&lt;/B&gt;&amp;nbsp;&amp;nbsp; Client information: &lt;A href="mailto:user@host"&gt;user@host&lt;/A&gt;, &lt;A href="mailto:user@address"&gt;user@address&lt;/A&gt;, a host name, or just an address, depending on how much information is available.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;%d&lt;/B&gt;&amp;nbsp; The daemon process name (argv[0] value).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;%h&lt;/B&gt; (%H) The&amp;nbsp; client&amp;nbsp; (server)&amp;nbsp; host&amp;nbsp; name or address, if the host name is unavailable.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %n (%N) The client (server) host name (or "unknown" or "paranoid").&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %p&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The daemon process id.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %s&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server information: &lt;A href="mailto:daemon@host"&gt;daemon@host&lt;/A&gt;, &lt;A href="mailto:daemon@address"&gt;daemon@address&lt;/A&gt;, or just a daemon name, depending on how much information is available.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %u&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The client user name (or "unknown").&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; %%&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Expands to a single % character.&lt;/P&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-909822509630337721?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/909822509630337721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=909822509630337721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/909822509630337721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/909822509630337721'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/tcp-wrappers-example.html' title='TCP Wrappers Example'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-6853156772379599923</id><published>2009-10-06T17:53:00.001-05:00</published><updated>2009-10-06T17:53:28.455-05:00</updated><title type='text'>HugePages with Oracle example on...</title><content type='html'>&lt;DIV&gt;
&lt;H3&gt;HugePages with Oracle example on RHEL 5 with 10g&lt;/H3&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Determine hugepages requirement and kernel parameters&lt;/B&gt;&amp;nbsp;(database should be running for this)&lt;/DIV&gt;
&lt;DIV&gt;The perl script below will first backup the sysctl.conf and limits.conf files, write the new recommended and calculated values to a new version of each file, then write back the changes to the active files.&amp;nbsp; See comments in script for details of what it does.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;create file hugemem.pl with content below and run with:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;&amp;nbsp;perl hugemem.pl&lt;/B&gt;&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;#!/usr/bin/perl -w&lt;BR&gt;use strict;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Make timestamped backup for sysctl.conf and limits.conf&lt;BR&gt;my $timestamp = `date +%Y%m%d%H%M`;&lt;BR&gt;system("cp /etc/sysctl.conf /etc/sysctl.conf.$timestamp");&lt;BR&gt;system("cp /etc/security/limits.conf /etc/security/limits.conf.$timestamp");&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Get kernel version&lt;BR&gt;my $kern = `uname -r`;&lt;BR&gt;$kern =~ /^(\d\.\d)/;&lt;BR&gt;$kern = $1;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;my $hpg_sz = `grep Hugepagesize /proc/meminfo | awk '{print \$2}'`;&lt;BR&gt;my $num_pg = 1;&lt;BR&gt;my $min_pg = 0;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Get oracle shared memory segments, initialize afterKey and smssum for the for loop below&lt;BR&gt;my @ipcs_out = `ipcs -m`;&lt;BR&gt;my $afterKey = 0;&lt;BR&gt;my $smssum = 0;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Find total available mem from system&lt;BR&gt;my $mem = `free | grep Mem | awk '{print \$2}'`;&lt;BR&gt;# Convert mem to bytes&lt;BR&gt;my $totmem =&amp;nbsp; $mem * 1024;&lt;BR&gt;# Get hugepagesize of architecture we're on&lt;BR&gt;my $huge = `grep Hugepagesize /proc/meminfo |awk '{print \$2}'`;&lt;BR&gt;# Calculate the % of total memory for SHMMAX, in this case 75%&lt;BR&gt;my $max = ($totmem * 75) / 100;&lt;BR&gt;# Calculate SHMALL by dividing SHMAX by Hugepagesize&lt;BR&gt;my $all = $max / $huge;&lt;BR&gt;# Oracle recommended semaphores&lt;BR&gt;my $sem = '250 32000 100 142';&lt;BR&gt;# Shared memory segments&lt;BR&gt;my $mni = '4096';&lt;BR&gt;# File limits recommended by oracle&lt;BR&gt;my $fmax = '131072';&lt;BR&gt;# Receive socket buffer size&lt;BR&gt;my $rmemd = '262144';&lt;BR&gt;my $rmemm = '4194304';&lt;BR&gt;# Send socket buffer size&lt;BR&gt;my $wmemd = '262144';&lt;BR&gt;my $wmemm = '4194304';&lt;BR&gt;# TCP socket buffer&lt;BR&gt;my $ipv4r = '4096 262144 4194304';&lt;BR&gt;my $ipv4w = '4096 262144 4194304';&lt;BR&gt;# Port range&lt;BR&gt;my $ipv4p = '1024 65000';&lt;BR&gt;# Frequency of keepalive packets when connection is not in use&lt;BR&gt;my $katime = '30';&lt;BR&gt;# Kernel wait between probes&lt;BR&gt;my $kintvl = '60';&lt;BR&gt;# Max probes&lt;BR&gt;my $kprobe = '9';&lt;BR&gt;# SYN retries&lt;BR&gt;my $synr = '2';&lt;BR&gt;# Memory settings&lt;BR&gt;# Disable swapping for oracle&lt;BR&gt;my $swap = '0';&lt;BR&gt;# % of active memory that can have dirty pages&lt;BR&gt;my $dirtyb = '3';&lt;BR&gt;# % of total memory that can have dirty pages&lt;BR&gt;my $dirtyr = '15';&lt;BR&gt;# 1/100th of seconds that page cache data is expired&lt;BR&gt;my $dirtye = '500';&lt;BR&gt;# frequency pdflush will clean dirty pages&lt;BR&gt;my $dirtyw = '100';&lt;BR&gt;# limits.conf recommended by oracle&lt;BR&gt;my $nproc = '131072';&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Find size of all shared memory segments&lt;BR&gt;foreach my $ipcsLine (@ipcs_out) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $ipcsLine;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if ! $ipcsLine;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($afterKey) {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my @ipcsVals = split /\s+/, $ipcsLine;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (! $ipcsVals[6]) { $smssum += $ipcsVals[4]; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $afterKey++ if $ipcsLine =~ /^key\s/;&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Determine number of huge pages needed to hold all shared mem segments&lt;BR&gt;$min_pg = $smssum / ($hpg_sz * 1024);&lt;BR&gt;$num_pg = $min_pg + 1;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Calculate HUHETBL_POOL size&lt;BR&gt;my $hugetbl_pool = ($num_pg * $hpg_sz) / 1024;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Get oracle group id&lt;BR&gt;my $oracle_gid = `id -g oracle`;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;# Calculate memlock for limits.conf based upon allocated huge pages&lt;BR&gt;my $memlock = $num_pg * 1024 * 2;&lt;BR&gt;# Write out limits.conf&lt;BR&gt;open OUTPL, '&amp;gt;/etc/security/limits.conf.hugemem' or die "Cannot write /etc/security/limits.conf.hugemem: $!";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;open LIMITS, '/etc/security/limits.conf' or die "Cannot read limits.conf: $!";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;while (my $linel = &amp;lt;LIMITS&amp;gt;) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $linel;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $linel =~ /memlock/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $linel =~ /End/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $linel =~ /nproc/;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print OUTPL "$linel\n";&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;close LIMITS;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;print OUTPL "oracle soft&amp;nbsp; memlock&amp;nbsp; $memlock\n";&lt;BR&gt;print OUTPL "oracle hard&amp;nbsp; memlock&amp;nbsp; $memlock\n";&lt;BR&gt;print OUTPL "oracle soft&amp;nbsp; nproc&amp;nbsp; $nproc\n";&lt;BR&gt;print OUTPL "oracle hard&amp;nbsp; nproc&amp;nbsp; $nproc\n";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;close OUTPL;&lt;BR&gt;# Write out sysctl.conf&lt;BR&gt;open OUTP, '&amp;gt;/etc/sysctl.conf.hugemem' or die "Cannot write /etc/sysctl.conf.hugemem: $!";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;open SYSCTL, '/etc/sysctl.conf' or die "Cannot read sysctl.conf: $!";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;while (my $line = &amp;lt;SYSCTL&amp;gt;) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp $line;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.hugetlb_shm_group/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^kernel\.shmmax/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^kernel\.shmall/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^kernel\.sem/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^kernel\.shmmni/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^fs\.file-max/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.core\.rmem_default/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.core\.rmem_max/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.core\.wmem_default/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.core\.wmem_max/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_rmem/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_wmem/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.ip_local_port_range/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_keepalive_time/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_keepalive_intvl/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_keepalive_probes/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^net\.ipv4\.tcp_syn_retries/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.swappiness/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.dirty_background_ratio/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.dirty_ratio/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.dirty_expire_centisecs/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.dirty_writeback_centisecs/;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($kern eq '2.4') {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.hugetlb_pool/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } elsif ($kern eq '2.6') {&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; next if $line =~ /^vm\.nr_hugepages/;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print OUTP "$line\n";&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;close SYSCTL;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;if ($kern eq '2.4') {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print OUTP "vm.hugetlb_pool = $hugetbl_pool\n";&lt;BR&gt;} elsif ($kern eq '2.6') {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print OUTP "vm.nr_hugepages = $num_pg\n";&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;print OUTP "vm.hugetlb_shm_group = $oracle_gid\n";&lt;BR&gt;print OUTP "kernel.shmmax = $max\n";&lt;BR&gt;print OUTP "kernal.shmall = $all\n";&lt;BR&gt;print OUTP "kernal.sem = $sem\n";&lt;BR&gt;print OUTP "kernal.shmmni = $mni\n";&lt;BR&gt;print OUTP "fs.file-max = $fmax\n";&lt;BR&gt;print OUTP "net.core.rmem_default = $rmemd\n";&lt;BR&gt;print OUTP "net.core.rmem_max = $rmemm\n";&lt;BR&gt;print OUTP "net.core.wmem_default = $wmemd\n";&lt;BR&gt;print OUTP "net.core.wmem_max = $wmemm\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_rmem = $ipv4r\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_wmem = $ipv4w\n";&lt;BR&gt;print OUTP "net.ipv4.ip_local_port_range = $ipv4p\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_keepalive_time = $katime\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_keepalive_intvl = $kintvl\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_keepalive_probes = $kprobe\n";&lt;BR&gt;print OUTP "net.ipv4.tcp_syn_retries = $synr\n";&lt;BR&gt;print OUTP "vm.swappiness = $swap\n";&lt;BR&gt;print OUTP "vm.dirty_background_ratio = $dirtyb\n";&lt;BR&gt;print OUTP "vm.dirty_ratio = $dirtyr\n";&lt;BR&gt;print OUTP "vm.dirty_expire_centisecs = $dirtye\n";&lt;BR&gt;print OUTP "vm.dirty_writeback_centisecs = $dirtyw\n";&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;close OUTP;&lt;BR&gt;system("mv /etc/sysctl.conf.hugemem /etc/sysctl.conf");&lt;BR&gt;system("mv /etc/security/limits.conf.hugemem /etc/security/limits.conf");&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&lt;/DIV&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;/etc/sysctl.conf will be updated with similar output to below:&lt;/DIV&gt;
&lt;BLOCKQUOTE id=cbnf&gt;
&lt;P&gt;# Kernel sysctl configuration file for Red Hat Linux&lt;BR&gt;#&lt;BR&gt;# For binary values, 0 is disabled, 1 is enabled.&amp;nbsp; See sysctl(8) and&lt;BR&gt;# sysctl.conf(5) for more details.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;# Controls IP packet forwarding&lt;BR&gt;net.ipv4.ip_forward = 0&lt;/P&gt;
&lt;P&gt;# Controls source route verification&lt;BR&gt;net.ipv4.conf.default.rp_filter = 1&lt;/P&gt;
&lt;P&gt;# Do not accept source routing&lt;BR&gt;net.ipv4.conf.default.accept_source_route = 0&lt;/P&gt;
&lt;P&gt;# Controls the System Request debugging functionality of the kernel&lt;BR&gt;kernel.sysrq = 0&lt;/P&gt;
&lt;P&gt;# Controls whether core dumps will append the PID to the core filename&lt;BR&gt;# Useful for debugging multi-threaded applications&lt;BR&gt;kernel.core_uses_pid = 1&lt;/P&gt;
&lt;P&gt;# Controls the use of TCP syncookies&lt;BR&gt;net.ipv4.tcp_syncookies = 1&lt;/P&gt;
&lt;P&gt;# Controls the maximum size of a message, in bytes&lt;BR&gt;kernel.msgmnb = 65536&lt;/P&gt;
&lt;P&gt;# Controls the default maxmimum size of a mesage queue&lt;BR&gt;kernel.msgmax = 65536&lt;/P&gt;
&lt;P&gt;# Controls the maximum shared segment size, in bytes&lt;/P&gt;
&lt;P&gt;# Controls the maximum number of shared memory segments, in pages&lt;/P&gt;
&lt;P&gt;vm.nr_hugepages = 4002&lt;BR&gt;vm.hugetlb_shm_group = 1034&lt;/P&gt;
&lt;P&gt;kernel.shmmax = 28450271232&lt;BR&gt;kernal.shmall = 13891734&lt;BR&gt;kernal.sem = 250 32000 100 142&lt;BR&gt;kernal.shmmni = 4096&lt;BR&gt;fs.file-max = 131072&lt;BR&gt;net.core.rmem_default = 262144&lt;BR&gt;net.core.rmem_max = 4194304&lt;BR&gt;net.core.wmem_default = 262144&lt;BR&gt;net.core.wmem_max = 4194304&lt;BR&gt;net.ipv4.tcp_rmem = 4096 262144 4194304&lt;BR&gt;net.ipv4.tcp_wmem = 4096 262144 4194304&lt;BR&gt;net.ipv4.ip_local_port_range = 1024 65000&lt;BR&gt;net.ipv4.tcp_keepalive_time = 30&lt;BR&gt;net.ipv4.tcp_keepalive_intvl = 60&lt;BR&gt;net.ipv4.tcp_keepalive_probes = 9&lt;BR&gt;net.ipv4.tcp_syn_retries = 2&lt;BR&gt;vm.swappiness = 0&lt;BR&gt;vm.dirty_background_ratio = 3&lt;BR&gt;vm.dirty_ratio = 15&lt;BR&gt;vm.dirty_expire_centisecs = 500&lt;BR&gt;vm.dirty_writeback_centisecs = 100&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;B&gt;sysctl -p&amp;nbsp; #run this to activate new kernel parameters&amp;nbsp;&amp;nbsp;&lt;/B&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&lt;B&gt;Example limits.conf output &lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=wzlv&gt;
&lt;P&gt;oracle&amp;nbsp; soft&amp;nbsp;&amp;nbsp;&amp;nbsp; nofile&amp;nbsp; 4096&lt;BR&gt;oracle&amp;nbsp; hard&amp;nbsp;&amp;nbsp;&amp;nbsp; nofile&amp;nbsp; 65536&lt;/P&gt;
&lt;P&gt;oracle soft&amp;nbsp; memlock&amp;nbsp; 8196096&lt;BR&gt;oracle hard&amp;nbsp; memlock&amp;nbsp; 8196096&lt;BR&gt;oracle soft&amp;nbsp; nproc&amp;nbsp; 131072&lt;BR&gt;oracle hard&amp;nbsp; nproc&amp;nbsp; 131072&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Reboot after these changes&lt;/B&gt; to ensure that oracle can obtain the new hugepages settings and limits.conf settings etc.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Also, if your sga is set too small and you need to update your spfile be sure to rerun this script after you've updated and restarted your database.&amp;nbsp; You will most likely need to try various settings and run through a few iterations to obtain the best configuration/performance.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;vm.overcommit_memory settings #for VM's:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 = &amp;nbsp;kernel estimates amount of free memory left when userspace requests more &lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 =&amp;nbsp; kernel pretends there is always enough until it runs out&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 =&amp;nbsp; never overcommit&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Check dirty pages and adjust vm.dirty_background_ratio and vm.dirty_ration on a VM accordingly&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grep -A 1 dirty /proc/vmstat&amp;nbsp; #the lower the numbers the better&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Example spfile for large memory system:&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=vff0&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;*._b_tree_bitmap_plans=false&lt;BR&gt;*._column_elimination_off=TRUE&lt;BR&gt;*.audit_file_dest='/oracle/admin/test/audit'&lt;BR&gt;*.audit_trail='os'&lt;BR&gt;*.background_dump_dest='/oracle/admin/test/bdump'&lt;BR&gt;*.compatible='9.2.0'&lt;BR&gt;*.control_files='/testdata01/test/testctrl1','/testdata01/test/testctrl2','/&lt;BR&gt;oracle/admin/test/cfile/testctrl3'&lt;BR&gt;*.core_dump_dest='/oracle/admin/test/cdump'&lt;BR&gt;*.db_block_size=32768&lt;BR&gt;*.db_cache_size=26214400000&lt;BR&gt;*.db_file_multiblock_read_count=32&lt;BR&gt;*.db_files=500&lt;BR&gt;*.db_keep_cache_size=21474836480&lt;BR&gt;*.db_name='test'&lt;BR&gt;*.java_pool_size=20971520&lt;BR&gt;*.job_queue_processes=4&lt;BR&gt;*.large_pool_size=10485760&lt;BR&gt;*.log_buffer=1048576&lt;BR&gt;*.O7_DICTIONARY_ACCESSIBILITY=true&lt;BR&gt;*.open_cursors=512&lt;BR&gt;*.optimizer_index_caching=10&lt;BR&gt;*.optimizer_index_cost_adj=80&lt;BR&gt;*.parallel_max_servers=12&lt;BR&gt;*.parallel_min_servers=0&lt;BR&gt;*.pga_aggregate_target=16777216000&lt;BR&gt;*.processes=125&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;*.query_rewrite_enabled='FALSE'&lt;BR&gt;*.query_rewrite_integrity='stale_tolerated'&lt;BR&gt;*.remote_login_passwordfile='EXCLUSIVE'&lt;BR&gt;*.resource_limit=true&lt;BR&gt;*.sga_max_size=45G&lt;BR&gt;*.shared_pool_size=125M&lt;BR&gt;*.star_transformation_enabled='true'&lt;BR&gt;*.timed_statistics=true&lt;BR&gt;*.undo_management='auto'&lt;BR&gt;*.undo_retention=18000&lt;BR&gt;*.undo_tablespace='undo'&lt;BR&gt;*.user_dump_dest='/oracle/admin/test/udump'&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-6853156772379599923?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/6853156772379599923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=6853156772379599923' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6853156772379599923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6853156772379599923'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/hugepages-with-oracle-example-on.html' title='HugePages with Oracle example on...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-2261038650646220014</id><published>2009-10-05T13:30:00.003-05:00</published><updated>2009-10-05T13:30:05.608-05:00</updated><title type='text'>RecoverPoint Bookmark example</title><content type='html'>&lt;H3&gt;&lt;FONT size=2&gt;RecoverPoint Bookmark example&lt;BR&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &lt;/DIV&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Copy Private Key in /home/user/.ssh/id_dsa on the db server &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;-----BEGIN DSA PRIVATE KEY-----&lt;BR&gt;Key Here&lt;BR&gt;-----END DSA PRIVATE KEY----- &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;put public key from id_dsa.pub into your Clariion management interface with: &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;add_ssh_key # and enter name of your db server &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Test connectivity to the Clariion management interface from the DB server with:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;# ssh adminuser@&amp;lt;w.x.y.z&amp;gt; get_version &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Create a bookmark - this is for Oracle_DB example: &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;# ssh&amp;nbsp;&lt;A title=admin@10.3.1.124 href="mailto:admin@%3Cw.x.y.x"&gt;&lt;/A&gt;adminuser@&amp;lt;w.x.y.z&amp;gt; bookmark_image&lt;/A&gt; group=Oracle_DB bookmark=Test1_snap&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;So you could now do something like:&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;alter database|tablespace begin backup;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;ssh adminuser@&amp;lt;w.x.y.z&amp;gt; bookmark_image&lt;/A&gt; group=Oracle_DB bookmark=Oracle_7AM_snap&lt;/DIV&gt;
&lt;DIV&gt;alter database|tablespace end backup;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Then expose your recoverpoint luns to the server on DR side and perform the remaining backup steps there.&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-2261038650646220014?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/2261038650646220014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=2261038650646220014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/2261038650646220014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/2261038650646220014'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/recoverpoint-bookmark-example_05.html' title='RecoverPoint Bookmark example'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-5982558488065395538</id><published>2009-10-05T13:30:00.001-05:00</published><updated>2009-10-05T13:30:04.317-05:00</updated><title type='text'>RecoverPoint Bookmark example</title><content type='html'>&lt;H3&gt;&lt;FONT size=2&gt;RecoverPoint Bookmark example&lt;BR&gt;&lt;/FONT&gt;&lt;/H3&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &lt;/DIV&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Copy Private Key in /home/user/.ssh/id_dsa on the db server &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;-----BEGIN DSA PRIVATE KEY-----&lt;BR&gt;Key Here&lt;BR&gt;-----END DSA PRIVATE KEY----- &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;put public key from id_dsa.pub into your Clariion management interface with: &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;add_ssh_key # and enter name of your db server &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Test connectivity to the Clariion management interface from the DB server with:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;# ssh adminuser@&amp;lt;w.x.y.z&amp;gt; get_version &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;Create a bookmark - this is for Oracle_DB example: &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;# ssh&amp;nbsp;&lt;A title=admin@10.3.1.124 href="mailto:admin@%3Cw.x.y.x"&gt;&lt;/A&gt;adminuser@&amp;lt;w.x.y.z&amp;gt; bookmark_image&lt;/A&gt; group=Oracle_DB bookmark=Test1_snap&lt;/FONT&gt; &lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;So you could now do something like:&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;alter database|tablespace begin backup;&lt;/DIV&gt;
&lt;DIV style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;ssh adminuser@&amp;lt;w.x.y.z&amp;gt; bookmark_image&lt;/A&gt; group=Oracle_DB bookmark=Oracle_7AM_snap&lt;/DIV&gt;
&lt;DIV&gt;alter database|tablespace end backup;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Then expose your recoverpoint luns to the server on DR side and perform the remaining backup steps there.&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-5982558488065395538?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/5982558488065395538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=5982558488065395538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5982558488065395538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5982558488065395538'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/recoverpoint-bookmark-example.html' title='RecoverPoint Bookmark example'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-8310161448415678920</id><published>2009-10-05T01:00:00.001-05:00</published><updated>2009-10-05T01:00:28.103-05:00</updated><title type='text'>#1 UNIX Tips</title><content type='html'>&lt;p id="j4_n"&gt;&lt;font id="j4_n0" size="5"&gt;&lt;b id="j4_n1"&gt;UNIX Random &lt;a title="Tips" target="_blank" href="http://docs.google.com/View?docid=dfxjbxcc_39h7rfvd" id="y3:5"&gt;Tips&lt;/a&gt; - &amp;nbsp;sorry Linux Tips is what I really meant&lt;/b&gt;&lt;/font&gt;&lt;br id="j4_n2"&gt;&lt;/p&gt;
&lt;div id="g:3w"&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="wwx5"&gt;&lt;b&gt;Make dated backup files easy with a profile update&lt;/b&gt;&lt;/div&gt;&lt;div id="jbn-"&gt;in /home/user/.bash_profile add:&lt;/div&gt;&lt;div id="u_tn"&gt;&lt;b&gt;TIME&lt;/b&gt;=$(date +%Y%m%d%H%M%S)&lt;/div&gt;&lt;div id="hx62"&gt;export TIME&lt;/div&gt;&lt;div id="hw:f"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;of course change the date and time stamp to whatever format you prefer&lt;br&gt;&lt;/div&gt;&lt;div id="dr75"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;then to backup a file with the timestamp just use:&lt;br&gt;&lt;/div&gt;&lt;div id="isc0"&gt;cp /path/to/file /path/to/backup/filename.&lt;b&gt;$TIME&lt;/b&gt;&lt;/div&gt;&lt;div id="b5.s"&gt;&amp;nbsp;&amp;nbsp; and file will be saved with the timestamp provided you have sourced your .bash_profile or logged in again.&lt;/div&gt;&lt;div id="hh6u"&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="c6a9"&gt;or even better use tar gzip:&lt;/div&gt;&lt;div id="zs_p"&gt;&lt;b&gt;TIME&lt;/b&gt;=$(date +%Y%m%d%H%M)&lt;/div&gt;&lt;div id="dia6"&gt;&lt;b&gt;tarfile=bak/named-$TIME.tgz&lt;/b&gt;&lt;/div&gt;&lt;div id="f7s_"&gt;&lt;b&gt;tar zcvf $tarfile /path/to/filesandfolders&lt;/b&gt;&lt;/div&gt;&lt;div id="j3ar"&gt;&lt;br&gt;&lt;b&gt;Test logrotate&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;logrotate -f /etc/logrotate.conf&lt;br&gt;&lt;br&gt;&lt;b&gt;Establish ssh tunnel to vncserver&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssh -L 5901:vncserver:5901 server&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vncviewer localhost:5901 should result in tunneled connection to vncserver&lt;br&gt;&lt;br&gt;&lt;b&gt;Push ssh into background&lt;/b&gt; and do not execute remote command:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ssh -Nf vncserver 5901:vncserver:5901&lt;br&gt;&lt;br&gt;Kill vncserver with: vncserver -kill :1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="n-1p"&gt;&lt;b&gt;Setting SGID and Sticky permissions&lt;/b&gt; so that the group ownership on all files created in a directory will be set the the group owner and so that one user cannot remove another's files with:&lt;/div&gt;&lt;div id="ut.c"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chmod 3770 /path/to/folder&lt;/div&gt;&lt;h4&gt;Check if a service is SELinux aware&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;semanage fcontext -l |grep &amp;lt;service i.e. samba&amp;gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;check for booleans:&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;getsebool -a |grep &amp;lt;service&amp;gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;set booleans:&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;setsebool -P &amp;lt;boolean&amp;gt; on|off for example setsebool -P samba_enable_home_dirs on&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ls -ZR /path # determine security context of directory or file&lt;br&gt;&lt;br&gt;&lt;b&gt;Service status&lt;/b&gt; -&amp;nbsp; service --status-all&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; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; chkconfig --list &lt;br&gt;&lt;/div&gt;&lt;h4&gt;Useful man pages&lt;/h4&gt;&lt;div&gt;&lt;div id="m7y4"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;man -k proxy |grep selinux&lt;/div&gt;&lt;div id="xczp"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;man -k http |grep selinux&lt;/div&gt;&lt;div id="otac"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;makewhatis &amp;amp;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Check if service is libwrapped with TCP Wrappers&amp;nbsp;&lt;/h4&gt;&lt;div&gt;ldd `which &amp;lt;service&amp;gt;` |grep libwrap &amp;nbsp;or ldd ${which &amp;lt;service&amp;gt;} |grep libwrap&lt;/div&gt;&lt;div&gt;strings `which &amp;lt;service&amp;gt;` |grep hosts &amp;nbsp;or strings ${which &amp;lt;service&amp;gt;} |grep hosts&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;h4&gt;Remount a filesystem that has locks&lt;/h4&gt;&lt;div&gt;fuser -km /mountpount #kill active sessions and locks&amp;nbsp;&lt;/div&gt;&lt;div&gt;umount /mountpoint &amp;nbsp;#unmount (alternatively unmount the device with umount /dev/...)&lt;/div&gt;&lt;div&gt;mount -a # to remount&lt;/div&gt;
&lt;h4&gt;SSH Tunneling Example&lt;/h4&gt;
&lt;div&gt;on the shellserver run:&lt;/div&gt;
&lt;div&gt;&amp;nbsp; ssh -v -L 1110:popserver:110 shellserver&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp; nc localhost 1110&lt;/div&gt;
&lt;div&gt;connects to popserver on port 100 via localhost 1110 to secure transmission to your pop server&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4&gt;Reverse SSH Tunnel Example&lt;/h4&gt;
&lt;div&gt;add the following to ~/.ssh/config&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;Host&amp;nbsp; remoteserver&amp;nbsp; #i.e. linux server at home&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Hostname&amp;nbsp; ip.of.rem.server&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RemoteForward 2222 localhost:22&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; User&amp;nbsp;&amp;nbsp; pvalentino&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp; ssh remoteserver&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp; ping anotherserver&amp;nbsp; #this helps keep the connection active&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp; ssh -p 2222 &lt;a href="mailto:pvalentino@localhost"&gt;pvalentino@localhost&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;you are now connected to the linux server in the office through the firewall with a secure shell&lt;/div&gt;
&lt;h4&gt;Determine disk used versus available on Linux:&lt;/h4&gt;
&lt;div&gt;df -Pkl |grep -v shm|awk ' { used += $3/1024/1024 } END { printf("%d Gb total used", used)}'&lt;br id="k3j9"&gt;df -Pkl |grep -v shm|awk ' { avail += $2/1024/1024 } END { printf("%d Gb total avail", avail)}'&lt;/div&gt;
&lt;div&gt;edit the grep -v command to exclude any directories that you don't want included i.e. grep -v 'shm backup' would exclude any directories with names including shm or backup.&amp;nbsp; if that syntax doesn't work try adding a second grep -v as |grep -v shm|grep -v backup|....&amp;nbsp; also omit the "l" in df -Pkl for AIX&lt;br&gt;&lt;br&gt;&lt;b&gt;Sort user accounts are on server&lt;/b&gt;&amp;nbsp; - getent passwd |sort -t ":" -k 3 -g&lt;br&gt;&lt;/div&gt;
&lt;h4&gt;Speedier sftp transfer at the expense of security:&lt;/h4&gt;
&lt;p id="k3j92"&gt;&lt;font id="k3j94" size="2" face="Arial"&gt;sftp -oCipher=blowfish-cbc&lt;/font&gt;&lt;font id="k3j97" size="2" face="Arial"&gt; host:/path&lt;/font&gt;&lt;/p&gt;
&lt;p id="k3j98"&gt;&lt;br id="k3j911"&gt;&lt;/p&gt;
&lt;h4&gt;Format a swap partition:&lt;/h4&gt;
&lt;p id="j4_n6"&gt;mkswap /dev/sda5&lt;/p&gt;
&lt;p id="j4_n7"&gt;in fstab&amp;nbsp; add /dev/sda5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/p&gt;
&lt;div id="j4_n8"&gt;swapon -a&lt;/div&gt;
&lt;div id="txta"&gt;or via a file:&lt;/div&gt;
&lt;div id="txta0"&gt;dd if=/dev/zero of=/swapfile bs=1M count=1024&lt;/div&gt;
&lt;div id="op9w"&gt;in fstab add /swapfile&amp;nbsp;&amp;nbsp; swap&amp;nbsp;&amp;nbsp;&amp;nbsp; swap&amp;nbsp; defaults 0 0&lt;/div&gt;
&lt;div id="txta1"&gt;mkswap&amp;nbsp; /swapfile 1024&lt;br id="txta2"&gt;swapon -a&lt;/div&gt;
&lt;p id="j4_n9"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Create a large 2GB file for test purposes:&lt;/h4&gt;
&lt;h4&gt;dd if=/dev/zero of=largefile bs=1M count=2048&lt;/h4&gt;
&lt;p id="j4_n13"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Rsync example:&lt;/h4&gt;
&lt;p id="j4_n16"&gt;client initiated&lt;/p&gt;
&lt;p id="j4_n17"&gt;rsync -av -e ssh server1:/usr/local/cvsroot/ /usr/local/cvsroot &amp;gt;&amp;gt; /tmp/cvs_rsync_log&lt;/p&gt;
&lt;p id="j4_n18"&gt;server initiated&lt;/p&gt;
&lt;p id="j4_n19"&gt;rsync -av -e ssh&amp;nbsp; /usr/local/cvsroot/ server1:/usr/local/cvsroot &amp;gt;&amp;gt; /tmp/cvs_rsync_log&lt;/p&gt;
&lt;p id="j4_n20"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Pattern replace for multiple files example:&lt;/h4&gt;
&lt;p id="j4_n23"&gt;to replace pattern server with pattern server-tst in all files containing .properties in the current directory and below:&lt;/p&gt;
&lt;p id="j4_n24"&gt;for i in `find . -name *.properties*`$i | sed -e 's/server/server-tst/' &amp;gt; $i.1 | mv -f $i.1 $i; done&lt;/p&gt;
&lt;p id="j4_n25"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Mail Attachments:&lt;/h4&gt;
&lt;p id="j4_n28"&gt;mutt -s "Subject" -a picture.jpg &lt;a id="j4_n29" href="mailto:user@mydomain.com"&gt;user@mydomain.com&lt;/a&gt;&lt;/p&gt;
&lt;p id="j4_n30"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Count Files in a Directory recursively:&lt;/h4&gt;
&lt;p id="j4_n33"&gt;find YOURDIR -type f ¦ wc -l&lt;/p&gt;
&lt;p id="j4_n34"&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Install Kernel Source and headers on Ubuntu:&lt;/h4&gt;
&lt;p id="j4_n37"&gt;use sudo passwd to give root a password and enable shell login&lt;/p&gt;
&lt;p id="j4_n38"&gt;su -&lt;/p&gt;
&lt;p id="j4_n39"&gt;apt-get install build-essential linux-headers-`uname -r`&lt;/p&gt;
&lt;p id="j4_n40"&gt;&lt;br id="j4_n41"&gt;&lt;/p&gt;&lt;h4&gt;remove comments and blank lines with:&lt;/h4&gt;grep -v "^#" /etc/squid/squid.conf | sed -e '/^$/d'&lt;br id="j4_n44"&gt;&lt;br id="j4_n45"&gt;&lt;h4&gt;change uid example:&lt;/h4&gt;lgroupmod -g 712 groupname&lt;br id="j4_n48"&gt;usermod -u 712 -U username&lt;br id="j4_n49"&gt;&lt;br id="j4_n50"&gt;&lt;h4&gt;Create users with specific uid and groupid:&lt;/h4&gt;&lt;p&gt;&lt;/p&gt;
&lt;p class="MsoNormal" id="j4_n53"&gt;To create an oracle user (only required on an Oracle server): &lt;/p&gt;
&lt;p class="MsoNormal" id="j4_n54"&gt;&amp;nbsp;&lt;i id="j4_n55"&gt;&amp;nbsp;&amp;nbsp; groupadd -g 502 oinstall ; useradd –m -u 500 -g oinstall oracle ; echo "password" |passwd --stdin oracle&lt;/i&gt; &lt;/p&gt;
&lt;p class="MsoNormal" id="j4_n56"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" id="j4_n57"&gt;To create a standard user: &lt;/p&gt;
&lt;p class="MsoNormal" id="j4_n58"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i id="j4_n59"&gt;groupadd -g 701 [groupname] ; useradd -m -u 701 -g [groupname] [username] ; echo "password"|passwd --stdin [username]&lt;/i&gt;&lt;/p&gt;&lt;br id="j4_n60"&gt;&lt;h4&gt;CHANGE UID's and ownership of files on entire fs:&lt;/h4&gt;find / -mount -user UID -print | xargs chown newowner&lt;br id="j4_n63"&gt;&lt;br id="j4_n64"&gt;This variation changes the group ownership:&lt;br id="j4_n65"&gt;find / -mount -group GID -print | xargs chgrp newgroup&lt;br id="j4_n66"&gt;&lt;br id="j4_n67"&gt;Find files modified more than x days ago:&lt;br id="j4_n68"&gt;find / -mount -mtime +3&lt;br&gt;&lt;br&gt;&lt;b&gt;Find faulty permissions&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; find /&amp;nbsp; \( -nouser -o -nogroup \)&amp;nbsp; # files and directories with no matching user or group in passwd&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; find / -type f -perm 002&amp;nbsp; #files writable by other group&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; find / -type d -perm -2&amp;nbsp;&amp;nbsp;&amp;nbsp; #directories writable by other&lt;br id="j4_n69"&gt;&lt;br id="j4_n70"&gt;&lt;h4&gt;Fixing Duplicate RPM's:&lt;/h4&gt;&lt;i id="j4_n74"&gt;rpm -qa --queryformat "%{NAME}-%{VERSION}-%{ARCH} \\n" | grep &amp;lt;packagename&amp;gt; | sort&lt;/i&gt;&lt;br id="j4_n75"&gt;then remove the one not needed - may need to fix the packagename a little for it to work....&lt;br id="j4_n76"&gt;&lt;i id="j4_n77"&gt;rpm -e bluez-libs-2.10-i386&lt;br id="j4_n78"&gt;rpm -e bluez-libs-2.10-x86_64&lt;/i&gt;&lt;br id="j4_n79"&gt;may needs to be changes to:&lt;br id="j4_n80"&gt;&lt;i id="j4_n81"&gt;rpm -e bluez-libs-2.10-2.i386&lt;br id="j4_n82"&gt;rpm -e bluez-libs-2.10-2.x86_64&lt;br id="j4_n83"&gt;&lt;br id="j4_n84"&gt;&lt;h4&gt;Install megaraid driver from SRPM example:&lt;/h4&gt;&lt;/i&gt;Install megaraid driver&lt;br id="j4_n88"&gt;&lt;br id="j4_n89"&gt;download driver from &lt;br id="j4_n90"&gt;&lt;br id="j4_n91"&gt;http://www-304.ibm.com/jct01004c/systems/support/supportsite.wss/license?filename=system_&lt;br id="j4_n92"&gt;x/lsi_dd_megasas_00.00.03.06_rhel4_32-64.tgz&amp;amp;root=/systems/support/&amp;amp;brandind=5000008&lt;br id="j4_n93"&gt;&lt;br id="j4_n94"&gt;sftp the drivers over to server and extract them with tar zxvf *.tgz&lt;br id="j4_n95"&gt;&lt;br id="j4_n96"&gt;go to SRPM folder and install with &lt;i id="j4_n97"&gt;rpm -ivh *.rpm&lt;/i&gt;&lt;br id="j4_n98"&gt;&lt;br id="j4_n99"&gt;cd to /usr/src/redhat&lt;br id="j4_n100"&gt;&lt;br id="j4_n101"&gt;&lt;i id="j4_n102"&gt;export BUILD_KERNEL="2.6.9-55.ELsmp"&amp;nbsp; #2.6.9-55.ELsmp is result of uname -r&lt;/i&gt;&lt;br id="j4_n103"&gt;&lt;br id="j4_n104"&gt;&lt;i id="j4_n105"&gt;rpmbuild -bb SPECS/megaraid_sas.spec&lt;/i&gt;&lt;br id="j4_n106"&gt;&lt;br id="j4_n107"&gt;r&lt;i id="j4_n108"&gt;pm -ivh /RPMS/x86_64/lsi-megaraid_sas-smp-00.00.03.06_2.6.9_55.EL-0.x86_64.rpm&lt;br id="j4_n109"&gt;&lt;br id="j4_n110"&gt;rpm -ivh /RPMS/x86_64/lsi-megaraid_sas-smp-debuginfo-00.00.03.06_2.6.9_55.EL-0.x86_64.rpm&lt;br id="j4_n111"&gt;&lt;br id="j4_n112"&gt;&lt;h4&gt;Copy or Cut and Paste in VIM&lt;/h4&gt;&lt;/i&gt;Cut and Paste: &lt;br id="j4_n117"&gt;
&lt;ul id="j4_n118"&gt;
&lt;li id="j4_n119"&gt;Place the cursor at the beginning of the block you want to CUT. 
&lt;/li&gt;&lt;li id="j4_n121"&gt;Mark it with md 
&lt;/li&gt;&lt;li id="j4_n123"&gt;Go to the end of the block. 
&lt;/li&gt;&lt;li id="j4_n125"&gt;Cut it with d'd 
&lt;/li&gt;&lt;li id="j4_n127"&gt;Go to the new location that you want to PASTE the text. 
&lt;/li&gt;&lt;li id="j4_n129"&gt;Enter P (shift-p). &lt;/li&gt;&lt;/ul&gt;&lt;br id="j4_n132"&gt;Copy and Paste: &lt;br id="j4_n133"&gt;
&lt;ul id="j4_n134"&gt;
&lt;li id="j4_n135"&gt;Place the cursor at the beginning of the block you want to COPY. 
&lt;/li&gt;&lt;li id="j4_n137"&gt;Mark it with my 
&lt;/li&gt;&lt;li id="j4_n139"&gt;Go to the end of the block. 
&lt;/li&gt;&lt;li id="j4_n141"&gt;Copy it with y'y 
&lt;/li&gt;&lt;li id="j4_n143"&gt;Go to the new location that you want to paste the text. 
&lt;/li&gt;&lt;li id="j4_n145"&gt;Press P (shift-p).&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Replace one character with another for an entire file:&lt;/h4&gt;cat &amp;lt;filename&amp;gt; | tr \" \' &amp;gt; &amp;lt;outfilename&amp;gt;&amp;nbsp; #&amp;nbsp; will replace all "&amp;nbsp; with '&amp;nbsp; in &amp;lt;filename&amp;gt; and output to &amp;lt;outfilename&amp;gt;&lt;br id="j4_n154"&gt;&lt;h4&gt;Finding Services on my network i.e. Servers running MySQL:&lt;/h4&gt;nmap -sV -p 3306 192.168.1-254 &amp;gt; MySQLhosts.out&lt;br&gt;&lt;b&gt;nmap options&lt;/b&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -sS #synchronous scan TCP&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -sU #UDP scan&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -sR&amp;nbsp; #RPC/portmap&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -A&amp;nbsp;&amp;nbsp;&amp;nbsp; #OS and version detection&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -v&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #verbose&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -P0&amp;nbsp;&amp;nbsp; #suppress pretest ping&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -p&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; #port&lt;br id="j4_n157"&gt;&lt;br id="j4_n158"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; will locate all servers running mysql on default port 3306 on the class C 192.168.1.x network&lt;br id="j4_n159"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Just open the MySQLhosts.out file to find hosts that are not in closed state&lt;br id="j4_n161"&gt;&lt;h4&gt;Find files that are filling up disk space:&lt;/h4&gt;cd to dir that is filling up &lt;br id="j4_n165"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; du -sk * | sort -nr | more&lt;br id="j4_n166"&gt;list files and directories in order of space they occupy&lt;br id="j4_n168"&gt;&lt;h4&gt;Updating Kernel parameters on Linux:&lt;/h4&gt;Edit /etc/sysctl.conf&amp;nbsp; for example:&lt;br id="j4_n171"&gt;
&lt;div id="j4_n172" style="margin-left: 40px;"&gt;kernel.sysrq = 0&lt;br id="j4_n173"&gt;kernel.shmmax = 2147483648&lt;br id="j4_n174"&gt;kernel.shmmni = 4096&lt;br id="j4_n175"&gt;kernel.shmall = 2097152&lt;br id="j4_n176"&gt;kernel.shmmin = 1&lt;br id="j4_n177"&gt;kernel.shmseg = 10&lt;br id="j4_n178"&gt;kernel.sem = 250 32000 100 128&lt;br id="j4_n179"&gt;fs.file-max = 104032&lt;br id="j4_n180"&gt;net.ipv4.ip_local_port_range = 1024 65000&lt;br id="j4_n181"&gt;net.ipv4.tcp_fin_timeout = 15&lt;br id="j4_n182"&gt;net.core.rmem_default = 1048576&lt;br id="j4_n183"&gt;net.core.rmem_max = 16777216&lt;br id="j4_n184"&gt;net.core.wmem_default = 262144&lt;br id="j4_n185"&gt;net.core.wmem_max = 16777216&lt;br id="j4_n186"&gt;net.ipv4.tcp_rmem = 4096 87380 16777216&lt;br id="j4_n187"&gt;net.ipv4.tcp_wmem = 4096 65536 16777216&lt;br id="j4_n188"&gt;&lt;/div&gt;
&lt;p id="j4_n189"&gt;Run &lt;br id="j4_n190"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sysctl -p&amp;nbsp; # this loads the parameters from changes made to sysctl.conf&lt;br id="j4_n191"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ipcs -l&amp;nbsp; # lists the parameters &lt;br id="j4_n192"&gt;&lt;/p&gt;
&lt;h4&gt;Set date and time:&lt;/h4&gt;
&lt;p id="j4_n195"&gt;date MMDDhhmm.ss&lt;br id="j4_n196"&gt;&lt;/p&gt;
&lt;h4&gt;Crontab:&lt;/h4&gt;
&lt;p id="j4_n199"&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp; *&amp;nbsp; command to be executed&lt;br id="j4_n200"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; -&lt;br id="j4_n201"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;br id="j4_n202"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +----- day of week (0 - 6) (Sunday=0)&lt;br id="j4_n203"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +------- month (1 - 12)&lt;br id="j4_n204"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +--------- day of month (1 - 31)&lt;br id="j4_n205"&gt;|&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +----------- hour (0 - 23)&lt;br id="j4_n206"&gt;+------------- min (0 - 59)&lt;br id="j4_n207"&gt;&lt;br id="j4_n208"&gt;&lt;/p&gt;
&lt;h4&gt;Changing linux prompt in profile&lt;/h4&gt;
&lt;div&gt;in ~/.bash_profile add:&lt;/div&gt;
&lt;div&gt;PS1="\[\033[1;32m\]\u@\[\033[1;33m\]\h \[\033[1;34m\]\${PWD} $\[\033[0m\] "&lt;br&gt;&lt;br&gt;&lt;b&gt;What is my ip?&lt;/b&gt;&amp;nbsp;&amp;nbsp; /sbin/ifconfig or /sbin/ip addr&lt;br&gt;&lt;b&gt;What is my mac?&lt;/b&gt; /sbin/ip maddr&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-8310161448415678920?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/8310161448415678920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=8310161448415678920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8310161448415678920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8310161448415678920'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/1-unix-tips.html' title='#1 UNIX Tips'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4221840947578510188</id><published>2009-10-04T20:42:00.001-05:00</published><updated>2009-10-04T20:42:21.691-05:00</updated><title type='text'>JBoss startup using init.d and /etc/j...</title><content type='html'>&lt;h3&gt;JBoss startup using init.d and /etc/jbtab&lt;/h3&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Assumes that all jboss apps live in /apps/jboss/default/server/....&amp;nbsp;&amp;nbsp; where default is a link to the current version of jboss and all start/stop scripts follow the startJBoss.sh and stopJBoss.sh convention&lt;br&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;/etc/jbtab:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;# JBoss Instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Username&lt;br&gt;myapp1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbadmin&lt;br&gt;myapp2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbadmin&lt;br&gt;myapp3 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jbadmin&lt;br&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;init.d/jboss&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;#!/bin/sh&lt;br&gt;#&lt;br&gt;# JBoss init script&lt;br&gt;#chkconfig: 2345 97 05&lt;br&gt;#description: JBoss Application Server&lt;br&gt;# Source function library.&lt;br&gt;if [ -f /etc/init.d/functions ] ; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . /etc/init.d/functions&lt;br&gt;elif [ -f /etc/rc.d/init.d/functions ] ; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . /etc/rc.d/init.d/functions&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 0&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;if [ ! -z "$2" ]; then APP_NAME=$2; fi&lt;/p&gt;
&lt;p&gt;start () {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLINE=`grep "^$APP_NAME" /etc/jbtab`&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -z "$TABLINE" ]; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Application not found in jbtab: $APP_NAME"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AGENT_USER=`echo $TABLINE | awk '{print $2}'`&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_HOME=/apps/jboss/default/server/$APP_NAME/bin&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -n "Starting $APP_NAME: "&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # start daemon&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; su - ${AGENT_USER} -c "cd ${APP_HOME}; ./startJBoss.sh"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/$APP_NAME&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $RETVAL&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;stop () {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLINE=`grep "^$APP_NAME" /etc/jbtab`&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -z "$TABLINE" ]; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Application not found in jbtab: $APP_NAME"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AGENT_USER=`echo $TABLINE | awk '{print $2}'`&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_HOME=/apps/jboss/default/server/$APP_NAME/bin&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # stop daemon&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -n "Stopping $APP_NAME: "&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; su - ${AGENT_USER} -c "cd ${APP_HOME};./stopJBoss.sh"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/$APP_NAME&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $RETVAL&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;restart() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;case $1 in&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -z "$2" ]; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "WARNING: Operating on all instances, will proceed in 5 seconds"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 5&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for a in `cat /etc/jbtab | grep -v '^#' | awk '{print $1}'`; do&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_NAME=$a&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #echo "Would have started $APP_NAME"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_NAME=$2&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -z "$2" ]; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "WARNING: Operating on all instances, will proceed in 5 seconds"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 5&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for a in `cat /etc/jbtab | grep -v '^#' | awk '{print $1}'`; do&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_NAME=$a&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #echo "Would have stopped $APP_NAME"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; done&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_NAME=$2&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; restart|reload)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -z "$2" ]; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Restart only operates on one instance at a time."&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Please specify instance after restart keyword."&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; APP_NAME=$2&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; restart&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Usage: $prog {start|stop|restart} &amp;lt;appname&amp;gt;"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "If no appname is specified all apps in /etc/jbtab will be acted upon"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br&gt;esac&lt;/p&gt;
&lt;p&gt;exit $RETVAL&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;example startup script startJboss.sh:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;
&lt;p&gt;#!/bin/sh&lt;br&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&lt;br&gt;##&amp;nbsp; JBoss Bootstrap Script&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&lt;br&gt;### ====================================================================== ###&lt;/p&gt;
&lt;p&gt;echo "Starting JBoss"&lt;/p&gt;
&lt;p&gt;PROGNAME=`basename $0`&lt;br&gt;whoiam=$(/usr/bin/id --user --name)&lt;br&gt;if [[ "$whoiam" != "jbadmin" ]]&lt;br&gt;then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$PROGNAME: This script must be run as jbadmin."&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit -1&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;export JAVA_HOME="/apps/java/default"&lt;br&gt;export JBOSS_HOME="/apps/jboss/default"&lt;br&gt;export PATH=${JAVA_HOME}/bin:${PATH}&lt;br&gt;JAVA=${JAVA_HOME}/bin/java&lt;/p&gt;
&lt;p&gt;# make the JBOSS_HOME the real path not a slimebolic link.&lt;br&gt;WD=$(/bin/pwd)&lt;br&gt;cd ${JBOSS_HOME}&lt;br&gt;jb=$(/bin/pwd)&lt;br&gt;export JBOSS_HOME="$jb"&lt;br&gt;cd $WD&lt;/p&gt;
&lt;p&gt;CLASSPATH="${JAVA_HOME}/lib/tools.jar"&lt;br&gt;export CLASSPATH&lt;/p&gt;
&lt;p&gt;# trick to find which server we are running&lt;br&gt;WD=$(/bin/pwd)&lt;/p&gt;
&lt;p&gt;case "${0}" in&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmdDir=$(dirname "$0")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmdDir=$(dirname "${WD}/$0")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;esac&lt;/p&gt;
&lt;p&gt;cd&amp;nbsp; $cmdDir&lt;br&gt;wrkDir=$(/bin/pwd)&lt;br&gt;SERVER=$(echo $wrkDir| sed -e "s^${JBOSS_HOME}/server/^^" | sed -e "s^/.*^^")&lt;br&gt;SERVERDIR="${JBOSS_HOME}/server/${SERVER}"&lt;br&gt;pid=${SERVERDIR}/${SERVER}.pid&lt;br&gt;APPDIR="/apps/$SERVER/server"&lt;br&gt;LOGDIR="/log/$SERVER"&lt;br&gt;LOGFILE="${LOGDIR}/${SERVER}.log"&lt;/p&gt;
&lt;p&gt;#&lt;br&gt;# Helper to complain.&lt;br&gt;#&lt;br&gt;warn() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "${PROGNAME}: $*"&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;#&lt;br&gt;# Helper to puke.&lt;br&gt;#&lt;br&gt;die() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn $*&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;# The properties file for setting up hostIp, jvmDebugPort, and jmxRemotePort&lt;br&gt;setup="$APPDIR/${SERVER}/${SERVER}-server.properties"&lt;/p&gt;
&lt;p&gt;if [[ -f ${setup} ]]&lt;br&gt;then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Reading server setup from ${setup}"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostIp=""&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source ${setup}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ ! $hostIp ]]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # The host IP must exist on the server properties file.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die "Mandatory host IP is not found in $setup."&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die "Mandatory setup file (${setup}) does not exist.&amp;nbsp; Aborting."&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;# Use the maximum available, or set MAX_FD != -1 to use that&lt;br&gt;MAX_FD="maximum"&lt;/p&gt;
&lt;p&gt;# Increase the maximum file descriptors if we can&lt;br&gt;# ulimit -n 1024&lt;/p&gt;
&lt;p&gt;# Setup the classpath&lt;br&gt;runjar="$JBOSS_HOME/bin/run.jar"&lt;br&gt;if [ ! -f "$runjar" ]; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die "Missing required file: $runjar"&lt;br&gt;fi&lt;br&gt;JBOSS_BOOT_CLASSPATH="$runjar"&lt;/p&gt;
&lt;p&gt;# Include the JDK javac compiler for JSP pages. The default is for a Sun JDK&lt;br&gt;# compatible distribution which JAVA_HOME points to&lt;br&gt;if [ "x$JAVAC_JAR" = "x" ]; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JAVAC_JAR="$JAVA_HOME/lib/tools.jar"&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;if [ "x$JBOSS_CLASSPATH" = "x" ]; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JBOSS_CLASSPATH="$JBOSS_BOOT_CLASSPATH:$JAVAC_JAR"&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JBOSS_BOOT_CLASSPATH:$JAVAC_JAR"&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;CLASSPATH="$JBOSS_CLASSPATH"&lt;/p&gt;
&lt;p&gt;if [ "x$jvmDebugPort" = "x" ] ; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEBUG_OPTS=""&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEBUG_OPTS="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=${jvmDebugPort},server=y,suspend=n"&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;if [ "x$jmxRemotePort" = "x" ] ; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMX_OPTS=""&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMX_OPTS="-Dcom.sun.management.jmxremote"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMX_OPTS="${JMX_OPTS} -Dcom.sun.management.jmxremote.port=${jmxRemotePort}"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMX_OPTS="${JMX_OPTS} -Dcom.sun.management.jmxremote.authenticate=false"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JMX_OPTS="${JMX_OPTS} -Dcom.sun.management.jmxremote.ssl=false"&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;# don't use JMX or DEBUG on this server&lt;br&gt;DEBUG_OPTS=""&lt;br&gt;JMX_OPTS=""&lt;/p&gt;
&lt;p&gt;LOG_OPTS="-Dlog4j.debug=true"&lt;/p&gt;
&lt;p&gt;# set MaxPermSize to avoid&amp;nbsp; "java.lang.OutOfMemoryError: PermGen" space error&lt;br&gt;# gcInterval time is set to avoid excessive CPU usage for garbage collection&lt;br&gt;# recommendations are between ten minutes (600000) &amp;amp; one hour (3600000)&lt;br&gt;# see &lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6200091"&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6200091&lt;/a&gt;&lt;br&gt;#&lt;br&gt;JAVA_MEM="-Xms128m -Xmx512m -XX:MaxPermSize=64m -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000"&lt;br&gt;SERVER_OPTS="-server"&lt;br&gt;JAVA_OPTS="${SERVER_OPTS} ${JAVA_MEM} ${DEBUG_OPTS} ${JMX_OPTS} ${JAVA_OPTS}"&lt;br&gt;# sets up LDAP pools&lt;br&gt;# add this if you want to debug the pools&lt;br&gt;# -Dcom.sun.jndi.ldap.connect.pool.debug=fine&lt;br&gt;#LDAP="-Dcom.sun.jndi.ldap.connect.pool=true -Dcom.sun.jndi.ldap.connect.pool.initsize=20 -Dcom.sun.jndi.ldap.connect.pool.prefsize=20 -Dcom.sun.jndi.ldap.connect.pool.maxsize=100 -Dcom.sun.jndi.ldap.connect.pool.timeout=30000"&lt;/p&gt;
&lt;p&gt;&lt;br&gt;# Setup JBoss sepecific properties&lt;br&gt;#JAVA_OPTS="-Dprogram.name=${SERVER} $JAVA_OPTS ${LDAP}"&lt;br&gt;JAVA_OPTS="-Dprogram.name=${SERVER} -Dlog.dir=${LOGDIR} $JAVA_OPTS"&lt;/p&gt;
&lt;p&gt;# Setup the java endorsed dirs&lt;br&gt;JBOSS_ENDORSED_DIRS="$JBOSS_HOME/lib/endorsed"&lt;/p&gt;
&lt;p&gt;#ARGS="-Dhostname=$HOSTNAME -Ddata.dir=/data/${SERVER} -Dlog.dir=/log/${SERVER}"&lt;/p&gt;
&lt;p&gt;# kill JBoss process&lt;br&gt;JBOSS_PID=$(cat $pid)&lt;br&gt;kill $JBOSS_PID 2&amp;gt;/dev/null&lt;br&gt;r=$?&lt;br&gt;if (( $r == 0 ))&lt;br&gt;then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /bin/echo -n "shutdown running instance"&lt;br&gt;fi&lt;br&gt;while (( $r == 0 ))&lt;br&gt;do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /bin/echo -n "."&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 3&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kill $JBOSS_PID 2&amp;gt;/dev/null&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r=$?&lt;br&gt;done&lt;/p&gt;
&lt;p&gt;echo "rotate server logs"&lt;br&gt;touch ${LOGFILE}1&lt;br&gt;/bin/mv -f&amp;nbsp; ${LOGFILE}1 ${LOGFILE}2&lt;br&gt;touch ${LOGFILE}0&lt;br&gt;/bin/mv -f&amp;nbsp; ${LOGFILE}0 ${LOGFILE}1&lt;br&gt;touch ${LOGFILE}&lt;br&gt;/bin/mv -f&amp;nbsp; ${LOGFILE} ${LOGFILE}0&lt;br&gt;touch ${LOGFILE}&lt;/p&gt;
&lt;p&gt;/bin/echo&lt;/p&gt;
&lt;p&gt;# Display our environment&lt;br&gt;echo "========================================================================="&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; JBoss Bootstrap Environment"&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; SERVER: $SERVER"&lt;br&gt;echo "&amp;nbsp; Host IP: $hostIp"&lt;br&gt;echo "&amp;nbsp; JVM Debug Port: $jvmDebugPort"&lt;br&gt;echo "&amp;nbsp; JMX Remote Port: $jmxRemotePort"&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; JBOSS_HOME: $JBOSS_HOME"&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; JAVA: $JAVA"&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; LOGFILE: $LOGFILE"&lt;br&gt;echo ""&lt;br&gt;echo "&amp;nbsp; JAVA_OPTS: $JAVA_OPTS $LOG_OPTS"&lt;br&gt;echo ""&lt;br&gt;#echo "&amp;nbsp; ARGUMENTS: $ARGS"&lt;br&gt;#echo ""&lt;br&gt;echo "&amp;nbsp; CLASSPATH: $CLASSPATH"&lt;br&gt;echo ""&lt;br&gt;echo "========================================================================="&lt;br&gt;echo ""&lt;/p&gt;
&lt;p&gt;# note that "-b0.0.0.0" binds to all ports.&lt;br&gt;# Execute the JVM in the background&lt;br&gt;"$JAVA" $JAVA_OPTS $LOG_OPTS\&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -classpath "$CLASSPATH" \&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ARGS} \&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; org.jboss.Main "--host=${hostIp}" "--configuration=${SERVER}" &amp;gt; $LOGFILE 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; JBOSS_PID=$!&lt;/p&gt;
&lt;p&gt;echo $JBOSS_PID &amp;gt; $pid&lt;br&gt;echo "You can follow along at home by running:"&lt;br&gt;echo "tail -f $LOGFILE"&lt;br&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;&lt;b&gt;example shutdown script stopJBoss.sh:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;#!/bin/sh&lt;br&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&lt;br&gt;##&amp;nbsp; JBoss Bootstrap Script&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&lt;br&gt;### ====================================================================== ###&lt;/p&gt;
&lt;p&gt;echo "Stopping JBoss"&lt;/p&gt;
&lt;p&gt;PROGNAME=`basename $0`&lt;br&gt;whoiam=$(/usr/bin/id --user --name)&lt;br&gt;if [[ "$whoiam" != "jbadmin" ]]&lt;br&gt;then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "$PROGNAME: This script must be run as jbadmin."&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit -1&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;export JAVA_HOME="/apps/java/default"&lt;br&gt;export JBOSS_HOME="/apps/jboss/default"&lt;br&gt;export PATH=${JAVA_HOME}/bin:${PATH}&lt;br&gt;JAVA=${JAVA_HOME}/bin/java&lt;/p&gt;
&lt;p&gt;# make the JBOSS_HOME the real path not a slimebolic link.&lt;br&gt;WD=$(/bin/pwd)&lt;br&gt;cd ${JBOSS_HOME}&lt;br&gt;jb=$(/bin/pwd)&lt;br&gt;export JBOSS_HOME="$jb"&lt;br&gt;cd $WD&lt;/p&gt;
&lt;p&gt;CLASSPATH="${JBOSS_HOME}/bin/shutdown.jar:${JBOSS_HOME}/client/jbossall-client.jar"&lt;br&gt;export CLASSPATH&lt;/p&gt;
&lt;p&gt;# trick to find which server we are running&lt;br&gt;WD=$(/bin/pwd)&lt;/p&gt;
&lt;p&gt;case "${0}" in&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmdDir=$(dirname "$0")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmdDir=$(dirname "${WD}/$0")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;br&gt;esac&lt;/p&gt;
&lt;p&gt;cd&amp;nbsp; $cmdDir&lt;br&gt;wrkDir=$(/bin/pwd)&lt;br&gt;SERVER=$(echo $wrkDir| sed -e "s^${JBOSS_HOME}/server/^^" | sed -e "s^/.*^^")&lt;br&gt;SERVERDIR="${JBOSS_HOME}/server/${SERVER}"&lt;br&gt;pid=${SERVERDIR}/${SERVER}.pid&lt;br&gt;LOGFILE="${SERVERDIR}/log/${SERVER}.log"&lt;br&gt;APPDIR="/apps/$SERVER/server"&lt;/p&gt;
&lt;p&gt;#&lt;br&gt;# Helper to complain.&lt;br&gt;#&lt;br&gt;warn() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "${PROGNAME}: $*"&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;#&lt;br&gt;# Helper to puke.&lt;br&gt;#&lt;br&gt;die() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; warn $*&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;br&gt;}&lt;/p&gt;
&lt;p&gt;# The properties file for setting up hostIp, jvmDebugPort, and jmxRemotePort&lt;br&gt;setup="$APPDIR/${SERVER}/${SERVER}-server.properties"&lt;/p&gt;
&lt;p&gt;if [[ -f ${setup} ]]&lt;br&gt;then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Reading server setup from ${setup}"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hostIp=""&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source ${setup}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ ! $hostIp ]]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # The host IP must exist on the server properties file.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die "Mandatory host IP is not found in $setup."&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;br&gt;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; die "Mandatory setup file (${setup}) does not exist.&amp;nbsp; Aborting."&lt;br&gt;fi&lt;/p&gt;
&lt;p&gt;JBOSS_SERVER="${hostIp}:1099"&lt;br&gt;echo "Stopping server: $SERVER on $hostIp"&lt;br&gt;${JAVA} -classpath $CLASSPATH org.jboss.Shutdown --server=$JBOSS_SERVER $@&lt;/p&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-4221840947578510188?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/4221840947578510188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=4221840947578510188' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4221840947578510188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4221840947578510188'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/jboss-startup-using-initd-and-etcj.html' title='JBoss startup using init.d and /etc/j...'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-288164853278065105</id><published>2009-10-01T14:29:00.002-05:00</published><updated>2010-07-15T20:57:06.329-05:00</updated><title type='text'></title><content type='html'>&lt;div id="coa5"&gt;&lt;b id="ffq1"&gt;LMV Cheat&lt;/b&gt; &lt;/div&gt;
&lt;iframe src="http://docs.google.com/View?docID=0ARZQyWuGbQKkZGZ4amJ4Y2NfMjdkc3dkbjk&amp;amp;revision=_latest" width=600 height=800&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-288164853278065105?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/288164853278065105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=288164853278065105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/288164853278065105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/288164853278065105'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/lvm-cheat.html' title=''/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-5004426850012994253</id><published>2009-10-01T11:51:00.003-05:00</published><updated>2009-10-06T00:45:02.033-05:00</updated><title type='text'>Oracle Install Tips</title><content type='html'>&lt;h3&gt;Oracle Install Tips - 10g on RHEL5&lt;/h3&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Install requisite packages&lt;/div&gt;
&lt;div&gt;
&lt;blockquote id="vmbv"&gt;
&lt;p&gt;yum -y install setarch-2*&lt;/p&gt;
&lt;p&gt;yum -y install make-3*&lt;br&gt;yum -y install glibc-2*&lt;br&gt;yum -y install libaio-0*&lt;br&gt;yum -y install compat-libstdc++-33-3*&lt;br&gt;yum -y install compat-gcc-34-3*&lt;br&gt;yum -y install compat-gcc-34-c++-3*&lt;br&gt;yum -y install gcc-4*&lt;br&gt;yum -y install libXp-1*&lt;br&gt;yum -y install openmotif-2*&lt;br&gt;yum -y install compat-db-4*&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Base X&lt;br&gt;Binutils, compat-db, compat-gcc-34, compat-gcc-34-c++, compat-libstdc+&lt;br&gt;&amp;nbsp; +-33, elfutils-libelf-devel, gdd, gdd-c++, gdb, gdbm, glibc, glibc-&lt;br&gt;&amp;nbsp; common, glibc-devel, ksh, libXp, libXtst, libaio, libaio-devel, libgcc,&lt;br&gt;&amp;nbsp; libgnome, libstdc++, libstdc++-devel, make, setarch, sysstat,&lt;br&gt;&amp;nbsp; unixODBC, unixODBC-devel, util-linux, xorg-x11-xinit, compat-libstdc+&lt;br&gt;&amp;nbsp; +-296&lt;br&gt;32 bit packages for 64 bit installation: glibc-devel, libaio, glibc, libgcc,&lt;br&gt;&amp;nbsp; compat-libstdc++, openssl, libXp, libXtst&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Update /etc/hosts with correct servername&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.1.4.200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oracle.sysxperts.com oracle&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;br&gt;Determine hugepages requirement (database should be running for this)&lt;br&gt;&lt;blockquote&gt;#!/bin/bash&lt;br&gt;KERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`&lt;br&gt;# Find out the HugePage size&lt;br&gt;HPG_SZ=`grep Hugepagesize /proc/meminfo | awk '{print $2}'`&lt;br&gt;# Start from 1 pages to be on the safe side and guarantee 1 free HugePage&lt;br&gt;NUM_PG=1&lt;br&gt;# Cumulative number of pages required to handle the running shared memory segments&lt;br&gt;for SEG_BYTES in `ipcs -m | awk '{print $5}' | grep "[0-9][0-9]*"`&lt;br&gt;do&lt;br&gt;&amp;nbsp; MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q`&lt;br&gt;&amp;nbsp; if [ $MIN_PG -gt 0 ]; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q`&lt;br&gt;&amp;nbsp; fi&lt;br&gt;done&lt;br&gt;# Finish with results&lt;br&gt;case $KERN in&lt;br&gt;&amp;nbsp; '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;;&lt;br&gt;&amp;nbsp; '2.6') echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;;&lt;br&gt;&amp;nbsp;&amp;nbsp; *) echo "Unrecognized kernel version $KERN. Exiting." ;;&lt;br&gt;esac&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Backup and Update /etc/security/limits.conf&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp /etc/security/limits.conf{,.orig} #to backup&lt;br&gt;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote id="mo5l"&gt;
&lt;p&gt;oracle soft nproc 15360&lt;/p&gt;
&lt;p&gt;oracle hard&amp;nbsp; nproc&amp;nbsp; 16384&lt;br&gt;oracle soft&amp;nbsp; nofile 64512&lt;br&gt;oracle hard&amp;nbsp; nofile 65536&lt;/p&gt;&lt;p&gt;oracle soft memlock&amp;nbsp; &amp;lt;Memlock is calculated by the number of huge pages allocated * 1024 *2&amp;gt;&lt;/p&gt;&lt;p&gt;oracle hard memlock &amp;lt;see above&amp;gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Create users and groups&lt;/div&gt;
&lt;div&gt;
&lt;blockquote id="q4oi"&gt;groupadd dba&lt;br&gt;useradd -g dba oracle; echo "mypass" |passwd --stdin oracle&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Create directories and chown for oracle&lt;/div&gt;
&lt;div&gt;
&lt;blockquote id="mfsu"&gt;
&lt;p&gt;&amp;nbsp;mkdir -p /u01/app/oracle/product/10.2.0/db_1&lt;/p&gt;
&lt;p&gt;&amp;nbsp;chown -R oracle.dba /u01&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Make sure SELINUX is disabled in /etc/selinux/config and reboot if it was enabled:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELINUX=disabled&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;br&gt;Determine best settings for kernel parameters in sysctl.conf:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cp /etc/sysctl.conf{,.orig} #to backup file&lt;br&gt;&lt;blockquote&gt;Obtain the total memory from the system&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mem=$(free|grep Mem|awk '{print$2}')&lt;br&gt;Convert the value of $mem to bytes&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; totmem=$(echo "$mem*1024"|bc)&lt;br&gt;Get the Hugepagesize from /proc/meminfo&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; huge=$(grep Hugepagesize /proc/meminfo|awk '{print $2}')&lt;br&gt;Calculate what 75% of the total memory on the system for SHMMAX&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max=$(echo "$totmem*75/100"|bc)&lt;br&gt;Divide the SHMMAX value by the Hugepagesize to get SHMALL&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; all=$(echo "$max/$huge"|bc)&lt;br&gt;Set the SHMMAX value in the /etc/sysctl.conf file&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "kernel.shmmax = $max" &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br&gt;Set the SHMALL value in the /etc/sysctl.conf file&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "kernel.shmall = $all" &amp;gt;&amp;gt; /etc/sysctl.conf&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;/div&gt;
&lt;div&gt;Update /etc/sysctl.conf with:&lt;/div&gt;
&lt;blockquote id="cbnf"&gt;# Controls the maximum shared segment size, in bytes&amp;nbsp; - see &lt;a id="j2-w" title="kernel and hugepages info" href="http://docs.google.com/View?docid=dfxjbxcc_184hhmn2mt6" target="_blank"&gt;kernel and hugepages info&lt;/a&gt; 
&lt;div&gt;kernel.shmmax = 68719476736 &lt;/div&gt;
&lt;div&gt;# Controls the maximum number of shared memory segments, in pages &lt;/div&gt;
&lt;div&gt;kernel.shmall = 4294967296&lt;/div&gt;
&lt;div&gt;kernel.sem = 250 32000 100 142&lt;/div&gt;
&lt;div&gt;fs.file-max = 104032 &lt;/div&gt;
&lt;div&gt;net.ipv4.ip_local_port_range = 1024 65000&lt;br&gt;net.ipv4.tcp_keepalive_time = 30&lt;br&gt;net.ipv4.tcp_keepalive_intvl = 60&lt;br&gt;net.ipv4.tcp_keepalive_probes = 9&lt;br&gt;net.ipv4.tcp_syn_retries = 2&lt;br&gt;&lt;/div&gt;
&lt;div&gt;net.core.rmem_default = 1048576 &lt;/div&gt;
&lt;div&gt;net.core.rmem_max = 4194304&lt;/div&gt;
&lt;div&gt;net.core.wmem_default = 262144 &lt;/div&gt;
&lt;div&gt;net.core.wmem_max = 4194304&lt;br&gt;net.ipv4.tcp_rmem = 4096 262144 4194304&lt;br&gt;net.ipv4.tcp_wmem = 4096 262144 4194304&lt;br&gt;&lt;/div&gt;

&lt;div&gt;vm.swappiness = 0&lt;br&gt;vm.overcommit_memory = 2&lt;br&gt;vm.dirty_background_ratio = 3&lt;br&gt;vm.dirty_ratio = 15&lt;br&gt;vm.dirty_expire_centisecs = 500&lt;br&gt;vm.dirty_writeback_centisecs = 100&lt;br&gt;dev.rtc.max-user-freq = 1024&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;run sysctl -p&amp;nbsp; #activates new kernel parameters&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/blockquote&gt;
&lt;div&gt;vm.overcommit_memory settings #for VM's:&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0 = &amp;nbsp;kernel estimates amount of free memory left when userspace requests more&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1 =&amp;nbsp; kernel pretends there is always enough until it runs out&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2 =&amp;nbsp; never overcommit&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Check dirty pages and adjust vm.dirty_background_ratio and vm.dirty_ration on a VM accordingly&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grep -A 1 dirty /proc/vmstat&amp;nbsp; #the lower the numbers the better&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;To mount an NFS share for backups:&lt;/div&gt;
&lt;div&gt;nas.sysxperts.com:/Archive&amp;nbsp;&amp;nbsp;&amp;nbsp; /archive_fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0&lt;/div&gt;
&lt;div&gt;nas.sysxperts.com:/Brchive&amp;nbsp;&amp;nbsp;&amp;nbsp; /backup_fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Update readahead on block devices&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;blockdev --setra&amp;nbsp; 32768 /dev/rootvg/u01lv&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Red Hat Enterprise Linux 5 kernel supports four I/O schedulers:&lt;br&gt;- cfq (Completely Fair Queuing)&lt;br&gt;- deadline&lt;br&gt;- noop&lt;br&gt;- anticipatory&lt;/div&gt;
&lt;div&gt;Some recommended kernel options to add to grub.conf #elevator=deadline should also be compared for performance&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elevator=noop&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Edit the oracle users ~/.bash_profile&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;blockquote id="lz0e"&gt;# Oracle Settings&lt;br&gt;TMP=/tmp; export TMP&lt;br&gt;TMPDIR=$TMP; export TMPDIR&lt;br&gt;&lt;br&gt;ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE&lt;br&gt;ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME&lt;br&gt;ORACLE_SID=TEST; export ORACLE_SID&lt;br&gt;ORACLE_TERM=xterm; export ORACLE_TERM&lt;br&gt;PATH=/usr/sbin:$PATH; export PATH&lt;br&gt;PATH=$ORACLE_HOME/bin:$PATH; export PATH&lt;br&gt;&lt;br&gt;LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH&lt;br&gt;CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH&lt;br&gt;&lt;br&gt;if [ $USER = "oracle" ]; then&lt;br&gt;&amp;nbsp; if [ $SHELL = "/bin/ksh" ]; then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -p 16384&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -n 65536&lt;br&gt;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -u 16384 -n 65536&lt;br&gt;&amp;nbsp; fi&lt;br&gt;fi&amp;nbsp;&lt;/blockquote&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Start vncserver with (install with yum -y install vnc-server if necessary):&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vncserver&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vncpasswd&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;Establish vnc session and run &lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhost + #as root&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;Extract cpio with:&lt;/p&gt;
&lt;p&gt;cpio -idmv &amp;lt; 10201_database_linux_x86_64.cpio&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;cd to directory where cpio command was run&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;./database/runInstaller&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;download latest patch and unzip&lt;/p&gt;
&lt;p&gt;./Disk1/runInstaller&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;To uninstall run the deinstaller from the latest patch Disk1/runInstaller&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;Edit /etc/oratab and set restart flag for TEST instance&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TEST:/u01/app/oracle/product/10.2.0/db_1:Y&lt;br&gt;&lt;/div&gt;
&lt;div&gt;&lt;br&gt;sar and dstat is useful for stats on server - yum -y install sysstat dstat&lt;/div&gt;
&lt;div&gt;ls -lattr /var/log/sa&amp;nbsp; and choose the filename with the date you want to see stats for then&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sar -A /var/log/sa/saXX&lt;/div&gt;
&lt;p&gt;man sar and dstat are your friends&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;See &lt;a id="nvzv" title="oracle automated startup" href="http://docs.google.com/View?docid=dfxjbxcc_155dbzfvtg8" target="_blank"&gt;oracle automated startup&lt;/a&gt;&amp;nbsp;for init setup&lt;br&gt;&lt;br&gt;&lt;b&gt;Network&lt;/b&gt;:&lt;br&gt;HOSTNAME=$(grep HOSTNAME /etc/sysconfig/network|awk -F= '{print $2}')&lt;br&gt;hostname $HOSTNAME&lt;br&gt;GATEWAY=$(ip route list |grep default |awk '{print $3}')&lt;br&gt;echo "GATEWAY=$GATEWAY" &amp;gt;&amp;gt; /etc/sysconfig/network&lt;br&gt;DEFDEV=$(ip route list|grep default|awk '{FS=" "; print $5}')&lt;br&gt;IPADDR=$(ip addr show $DEFDEV |grep inet |grep -v inet6|awk '{print $2}'|awk -F/&lt;br&gt;&amp;nbsp; '{print $1}')&lt;br&gt;echo "IPADDR=$IPADDR" &amp;gt;&amp;gt; /etc/sysconfig/network-scripts/ifcfg-$DEFDEV&lt;br&gt;sed -i 's/dhcp/static/' /etc/sysconfig/network-scripts/ifcfg-$DEFDEV&lt;br&gt;BCAST=$(ip addr show eth0 |grep inet |grep -v inet6|awk '{print $4}')&lt;br&gt;echo "BROADCAST=$BCAST" &amp;gt;&amp;gt; /etc/sysconfig/network-scripts/ifcfg-$DEFDEV&lt;br&gt;echo "NETMASK=255.255.255.0" &amp;gt;&amp;gt; /etc/sysconfig/network-scripts/ifcfg-$DEFDEV&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-5004426850012994253?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/5004426850012994253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=5004426850012994253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5004426850012994253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/5004426850012994253'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/oracle-install-tips_01.html' title='Oracle Install Tips'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-6043018326952539443</id><published>2009-10-01T11:51:00.001-05:00</published><updated>2009-10-01T11:51:41.779-05:00</updated><title type='text'>Oracle Install Tips</title><content type='html'>&lt;H3&gt;Oracle Install Tips - 10g on RHEL5&lt;/H3&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Install requisite packages&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=vmbv&gt;
&lt;P&gt;yum -y install setarch-2*&lt;/P&gt;
&lt;P&gt;yum -y install make-3*&lt;BR&gt;yum -y install glibc-2*&lt;BR&gt;yum -y install libaio-0*&lt;BR&gt;yum -y install compat-libstdc++-33-3*&lt;BR&gt;yum -y install compat-gcc-34-3*&lt;BR&gt;yum -y install compat-gcc-34-c++-3*&lt;BR&gt;yum -y install gcc-4*&lt;BR&gt;yum -y install libXp-1*&lt;BR&gt;yum -y install openmotif-2*&lt;BR&gt;yum -y install compat-db-4*&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;DIV&gt;Update /etc/hosts with correct servername&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10.1.4.200&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oracle.sysxperts.com oracle&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Update /etc/security/limits.conf&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=mo5l&gt;
&lt;P&gt;oracle soft nproc 15360&lt;/P&gt;
&lt;P&gt;oracle hard&amp;nbsp; nproc&amp;nbsp; 16384&lt;BR&gt;oracle soft&amp;nbsp; nofile 64512&lt;BR&gt;oracle hard&amp;nbsp; nofile 65536&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;DIV&gt;Create users and groups&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=q4oi&gt;groupadd dba&lt;BR&gt;useradd -g dba oracle; echo "mypass" |passwd --stdin oracle&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;DIV&gt;Create directories and chown for oracle&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=mfsu&gt;
&lt;P&gt;&amp;nbsp;mkdir -p /u01/app/oracle/product/10.2.0/db_1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;chown -R oracle.dba /u01&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;DIV&gt;Make sure SELINUX is disabled in /etc/selinux/config and reboot if it was enabled:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELINUX=disabled&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Update /etc/sysctl.conf with:&lt;/DIV&gt;
&lt;BLOCKQUOTE id=cbnf&gt;# Controls the maximum shared segment size, in bytes&amp;nbsp; - see &lt;A id=j2-w title="kernel and hugepages info" href="http://docs.google.com/View?docid=dfxjbxcc_184hhmn2mt6" target=_blank&gt;kernel and hugepages info&lt;/A&gt; 
&lt;DIV&gt;kernel.shmmax = 68719476736 &lt;/DIV&gt;
&lt;DIV&gt;# Controls the maximum number of shared memory segments, in pages &lt;/DIV&gt;
&lt;DIV&gt;kernel.shmall = 4294967296&lt;/DIV&gt;
&lt;DIV&gt;kernel.sem = 250 32000 100 128&lt;/DIV&gt;
&lt;DIV&gt;fs.file-max = 104032 &lt;/DIV&gt;
&lt;DIV&gt;net.ipv4.ip_local_port_range = 1024 65000&lt;/DIV&gt;
&lt;DIV&gt;net.core.rmem_default = 1048576 &lt;/DIV&gt;
&lt;DIV&gt;net.core.rmem_max = 1048576&lt;/DIV&gt;
&lt;DIV&gt;net.core.wmem_default = 262144 &lt;/DIV&gt;
&lt;DIV&gt;net.core.wmem_max = 262144&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;run sysctl -p&amp;nbsp; #activates new kernel parameters&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;To mount an NFS share for backups:&lt;/DIV&gt;
&lt;DIV&gt;nas.sysxperts.com:/Archive&amp;nbsp;&amp;nbsp;&amp;nbsp; /archive_fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0&lt;/DIV&gt;
&lt;DIV&gt;nas.sysxperts.com:/Brchive&amp;nbsp;&amp;nbsp;&amp;nbsp; /backup_fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hard,nolock,vers=3,proto=tcp,bg,rsize=32768,wsize=32768,timeo=600,intr 0 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Edit the oracle users ~/.bash_profile&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE id=lz0e&gt;# Oracle Settings&lt;BR&gt;TMP=/tmp; export TMP&lt;BR&gt;TMPDIR=$TMP; export TMPDIR&lt;BR&gt;&lt;BR&gt;ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE&lt;BR&gt;ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME&lt;BR&gt;ORACLE_SID=TEST; export ORACLE_SID&lt;BR&gt;ORACLE_TERM=xterm; export ORACLE_TERM&lt;BR&gt;PATH=/usr/sbin:$PATH; export PATH&lt;BR&gt;PATH=$ORACLE_HOME/bin:$PATH; export PATH&lt;BR&gt;&lt;BR&gt;LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH&lt;BR&gt;CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH&lt;BR&gt;&lt;BR&gt;if [ $USER = "oracle" ]; then&lt;BR&gt;&amp;nbsp; if [ $SHELL = "/bin/ksh" ]; then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -p 16384&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -n 65536&lt;BR&gt;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ulimit -u 16384 -n 65536&lt;BR&gt;&amp;nbsp; fi&lt;BR&gt;fi&amp;nbsp;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Start vncserver with (install with yum -y install vnc-server if necessary):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vncserver&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vncpasswd&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Establish vnc session and run xhost + as root&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;Extract cpio with:&lt;/P&gt;
&lt;P&gt;cpio -idmv &amp;lt; 10201_database_linux_x86_64.cpio&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;cd to directory where cpio command was run&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;./database/runInstaller&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;download latest patch and unzip&lt;/P&gt;
&lt;P&gt;./Disk1/runInstaller&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;To uninstall run the deinstaller from the latest patch Disk1/runInstaller&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;Edit /etc/oratab and set restart flag for TEST instance&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TEST:/u01/app/oracle/product/10.2.0/db_1:Y&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;sar and dstat is useful for stats on server - yum -y install sysstat dstat&lt;/DIV&gt;
&lt;DIV&gt;ls -lattr /var/log/sa&amp;nbsp; and choose the filename with the date you want to see stats for then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sar -A /var/log/sa/saXX&lt;/DIV&gt;
&lt;P&gt;man sar and dstat are your friends&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;See &lt;A id=nvzv title="oracle automated startup" href="http://docs.google.com/View?docid=dfxjbxcc_155dbzfvtg8" target=_blank&gt;oracle automated startup&lt;/A&gt;&amp;nbsp;for init setup&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-6043018326952539443?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/6043018326952539443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=6043018326952539443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6043018326952539443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/6043018326952539443'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/oracle-install-tips.html' title='Oracle Install Tips'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-1713243804162257062</id><published>2009-10-01T11:48:00.001-05:00</published><updated>2009-10-01T11:48:36.466-05:00</updated><title type='text'>Oracle 10g-11g Automated Startup and Shutdown on RedHat</title><content type='html'>&lt;H3&gt;Oracle 10g/11g&amp;nbsp; Automated Startup and Shutdown on RedHat&amp;nbsp;&lt;/H3&gt;
&lt;DIV&gt;&lt;B&gt;Create file /etc/init.d/oracle with following code and change file to be executable&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;#!/bin/sh&lt;BR&gt;# chkconfig: 345 99 01&lt;BR&gt;# description: Oracle&lt;BR&gt;#&lt;BR&gt;#&lt;BR&gt;ORACLE=oracle&lt;BR&gt;case $1 in&lt;BR&gt;'start')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cat &amp;lt;&amp;lt;-"EOF"|su - ${ORACLE}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Start Oracle Net&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -f ${ORACLE_HOME}/bin/tnslsnr ] ;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "starting Oracle Net Listener"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/lsnrctl start&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Starting Oracle databases"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/dbstart&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/emctl start dbconsole&lt;BR&gt;EOF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;'stop')&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cat &amp;lt;&amp;lt;-"EOF"|su - ${ORACLE}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "shutting down dbconsole"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/emctl stop dbconsole&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Stop Oracle Net&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -f ${ORACLE_HOME}/bin/tnslsnr ] ;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "stopping Oracle Net Listener"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/lsnrctl stop&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "stopping Oracle databases"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ${ORACLE_HOME}/bin/dbshut&lt;BR&gt;EOF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;*)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "usage: $0 {start|stop}"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;esac&lt;BR&gt;#&lt;BR&gt;exit&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Run:&lt;/DIV&gt;
&lt;DIV&gt;chkconfig oracle on&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Update the oracle user .bash_profile as follows:&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;export ORACLE=oracle&lt;BR&gt;export ORACLE_SID=`cat /etc/oratab |sed -e 's/:.*//' -e 's/#.*//' -e '/^$/d'|head -1`&lt;/DIV&gt;
&lt;DIV&gt;export PATH=$PATH:/usr/local/bin&lt;BR&gt;export ORAENV_ASK="NO"&lt;BR&gt;. /usr/local/bin/oraenv&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Update /etc/oratab with your instances&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;orcl:/u01/oracle/product/11.1.0/db_1:Y&lt;BR&gt;orcltest:/u01/oracle/product/11.1.0/db_1:Y&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Alternatively if you want to use your own start scripts you could do the following (BUT WHY?):&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Create an /etc/init.d/oracle script with:&lt;/DIV&gt;
&lt;DIV&gt;#!/bin/sh&lt;BR&gt;#&lt;BR&gt;#oracle agent init script&lt;BR&gt;#chkconfig: 2345 97 05&lt;BR&gt;#description: oracle&lt;BR&gt;# Source function library.&lt;BR&gt;if [ -f /etc/init.d/functions ] ; then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . /etc/init.d/functions&lt;BR&gt;elif [ -f /etc/rc.d/init.d/functions ] ; then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . /etc/rc.d/init.d/functions&lt;BR&gt;else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 0&lt;BR&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;prog=oracle&lt;BR&gt;ORAHOME=/oracle/home/scripts&lt;BR&gt;AGENT_USER=oracle&lt;BR&gt;&lt;A title="email=pvalentino@sysxperts.com" href="mailto:email=pvalentino@sysxperts.com"&gt;email=pvalentino@sysxperts.com&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;start () {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -n $"Starting $prog: "&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # start daemon&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [ -e "/tmp/orastat" ]&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; su - ${AGENT_USER} -c "cd ${ORAHOME}; ./orastart"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm -rf /tmp/orastat&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail -s "`hostname` orastart failed" $email &amp;lt; /tmp/stat&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/oracle&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $RETVAL&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV&gt;stop () {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # stop daemon&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo -n $"Stopping $prog: "&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; su - ${AGENT_USER} -c "cd ${ORAHOME};./orastop"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETVAL=$?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if [[ "$RETVAL" = 0 ]] ;then touch /tmp/orastat;else mail -s "`hostname` orastop failed" $email &amp;lt; /tmp/stat;fi&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ $RETVAL = 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/oracle&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $RETVAL&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV&gt;restart() {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;BR&gt;}&lt;/DIV&gt;
&lt;DIV&gt;case $1 in&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; restart|reload)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; restart&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; condrestart)&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ -f /var/lock/subsys/ora ] &amp;amp;&amp;amp; restart || :&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $"Usage: $prog {start|stop|restart|condrestart|reload }"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 1&lt;BR&gt;esac&lt;/DIV&gt;
&lt;DIV&gt;exit $RETVAL&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;B&gt;And your orastart and orastop scripts would have all of the startup procedures you would like to run in a custom fashion i.e.&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;orastart:&lt;/DIV&gt;
&lt;DIV&gt;. /home/oracle/scripts/orastart_TEST&lt;BR&gt;lsnrctl start&lt;BR&gt;#&lt;BR&gt;mail -s "****** TEST databases started *****" &lt;A href="mailto:_DBA@sysxperts.com"&gt;_DBA@sysxperts.com&lt;/A&gt; &amp;lt; /home/oracle/scripts/orastart&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;orastart_TEST:&lt;/DIV&gt;
&lt;DIV&gt;. /home/oracle/ora10.env&lt;BR&gt;############# This will start Oracle in TEST ######################&lt;BR&gt;export ORACLE_SID=TEST&lt;BR&gt;sqlplus '/ as sysdba' &amp;lt;&amp;lt;EOF&lt;BR&gt;startup&lt;BR&gt;EOF&lt;BR&gt;#&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;&lt;BR&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-1713243804162257062?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/1713243804162257062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=1713243804162257062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/1713243804162257062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/1713243804162257062'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/oracle-10g-11g-automated-startup-and.html' title='Oracle 10g-11g Automated Startup and Shutdown on RedHat'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-8229550111606456415</id><published>2009-10-01T02:32:00.001-05:00</published><updated>2010-04-22T12:43:07.445-05:00</updated><title type='text'>IPTABLES</title><content type='html'>&lt;h1 class="firstHeading" style="background-image:none;color:black;margin-left:0px;margin-right:0px"&gt;&lt;font size="6"&gt;IPTABLES&lt;/font&gt;&lt;/h1&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Packet filtering is performed at the following file levels: &lt;/p&gt;&lt;div&gt;&lt;b&gt;PREROUTING&lt;/b&gt;&amp;nbsp;- filters packets upon arrival (nat,mangle,raw) &lt;/div&gt;&lt;div&gt;&lt;b&gt;FORWARD&lt;/b&gt;&amp;nbsp;- for packets being routed through the box provided /proc/sys/net/ipv4/ip_forward is set to 1 (mangle, filter) &lt;/div&gt;&lt;div&gt;&lt;b&gt;INPUT&lt;/b&gt;&amp;nbsp;- for packets destined to local sockets (filter, mangle) &lt;/div&gt;&lt;div&gt;&lt;b&gt;OUTPUT&lt;/b&gt;&amp;nbsp;- alters locally-generated packets prior to POSTROUTING and after leaving the sending process (nat, mangle, filter, raw) &lt;/div&gt;&lt;div&gt;&lt;b&gt;POSTROUTING&lt;/b&gt;&amp;nbsp;- alters packets immediately before they leave the system (nat, mangle) &lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;The tables are as follows: &lt;/p&gt;&lt;div&gt;&lt;b&gt;filter&lt;/b&gt;:This is the default table (if no -t option is passed). Itcontains the built-in chains INPUT (for packets destined tolocal sockets), FORWARD (for packets being routed throughthe box), and OUTPUT (for locally-generated packets). &lt;/div&gt;&lt;div&gt;&lt;b&gt;nat&lt;/b&gt;:This table is consulted when a packet that creates a newconnection is encountered. It consists of three built-ins:PREROUTING (for altering packets as soon as they come in),OUTPUT (for altering locally-generated packets before rout-ing), and POSTROUTING (for altering packets as they areabout to go out). &lt;/div&gt;&lt;div&gt;&lt;b&gt;mangle&lt;/b&gt;:This table is used for specialized packet alteration. Untilkernel 2.4.17 it had two built-in chains: PREROUTING (foraltering incoming packets before routing) and OUTPUT (foraltering locally-generated packets before routing). Sincekernel 2.4.18, three other built-in chains are also sup-ported: INPUT (for packets coming into the box itself), FOR-WARD (for altering packets being routed through the box),and POSTROUTING (for altering packets as they are about togo out). &lt;/div&gt;&lt;div&gt;&lt;b&gt;raw&lt;/b&gt;:This table is used mainly for configuring exemptions fromconnection tracking in combination with the NOTRACK target.It registers at the netfilter hooks with higher priority andis thus called before ip_conntrack, or any other IP tables.It provides the following built-in chains: PREROUTING (forpackets arriving via any network interface) OUTPUT (forpackets generated by local processes) &lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;TARGETS&lt;/b&gt;&lt;/p&gt;&lt;div&gt;A firewall rule specifies criteria for a packet, and a target. If thepacket does not match, the next rule in the chain is the examined; ifit does match, then the next rule is specified by the value of the tar-get, which can be the name of a user-defined chain or one of the spe-cial values ACCEPT, DROP, QUEUE, or RETURN.ACCEPT means to let the packet through. DROP means to drop the packeton the floor. QUEUE means to pass the packet to userspace. (How thepacket can be received by a userspace process differs by the particularqueue handler. 2.4.x and 2.6.x kernels up to 2.6.13 include theip_queue queue handler. Kernels 2.6.14 and later additionally includethe nfnetlink_queue queue handler. Packets with a target of QUEUE willbe sent to queue number &amp;rsquo;0&amp;rsquo; in this case. RETURN means stoptraversing this chain and resume at the next rule in the previous(calling) chain. If the end of a built-in chain is reached or a rulein a built-in chain with target RETURN is matched, the target specifiedby the chain policy determines the fate of the packet. &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;COMMANDS&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-A --append chain rule-specification &lt;/div&gt;&lt;div&gt;-D --delete chain rule-specification &lt;/div&gt;&lt;div&gt;-D --delete chain rulenum &lt;/div&gt;&lt;div&gt;-I --insert chain [rulenum] rule-specification &lt;/div&gt;&lt;div&gt;-R --replace chain rulenum rule-specification &lt;/div&gt;&lt;div&gt;-L --list [chain] i.e. for nat rules use iptables &lt;/div&gt;&lt;div&gt;-t nat &lt;/div&gt;&lt;div&gt;-n -L (note that filter is the default with no -t specified) &lt;/div&gt;&lt;div&gt;-F --flush [chain] &lt;/div&gt;&lt;div&gt;-Z --zero [chain] to zero the packet and byte counters (may be used with -L to see list just prior to zeroing out) &lt;/div&gt;&lt;div&gt;-N --new-chain chain &lt;/div&gt;&lt;div&gt;-P --policy chain target &lt;/div&gt;&lt;div&gt;-E --rename-chain old-chain new-chain &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;RULES&lt;/b&gt;&amp;nbsp;are matched in an ordered list fashion starting from the top and working downward until there is a match. If there is no match then the default policy applies. &lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;Example /etc/sysconfig/iptables with descriptive comments: &lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp; &lt;/div&gt;&lt;blockquote style="margin-right:0px"&gt;&lt;pre style="background-color:#f9f9f9;color:black"&gt;&lt;font face="Arial"&gt;# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
### DEFAULT CHAINS with default policy of ACCEPT ####
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
### CUSTOM CHAINS ####
:Firewall-INPUT - [0:0]
:NETBACKUP - [0:0]
### (-A) Append to the INPUT chain a rule that (-j) jumps to the Custom Chain &amp;quot;Firewall-INPUT&amp;quot; #####
### in essence all traffic destined to the local sytem are handled by the rules in the Firewall-INPUT chain ###
-A INPUT -j Firewall-INPUT
 
### Same as above except for packets being forwarded through this server, 
### typically moot because we disable forwarding on our hosts   ###
-A FORWARD -j Firewall-INPUT
 
### Default rule to allow all traffic on the loopback interface through the chain (-i) in-interface in this case 
### is loopback and -j ACCEPT means to jump to the target ACCEPT which allows the packet through
### without any further checks ###
-A Firewall-INPUT -i lo -j ACCEPT
 
### Rule that allows any type of icmp traffice through to the server
### -p icmp means layer 4 protocol icmp
-A Firewall-INPUT -p icmp --icmp-type any -j ACCEPT

### Rules to allow allow protocol 50 and 51 traffic  ESP and AH for IPSEC ###
-A Firewall-INPUT -p 50 -j ACCEPT
-A Firewall-INPUT -p 51 -j ACCEPT

### Rule to allow udp protocol with destination port of 5353 and destination multicast address 
### 224.0.0.251 - port 5353 is associated with Multicast DNS
-A Firewall-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
 
### cupsd printing daemon rule ###
-A Firewall-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A Firewall-INPUT -p tcp -m tcp --dport 631 -j ACCEPT

### DNS RULES ###
-A Firewall-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A Firewall-INPUT -p tcp -m tcp --dport 53 -j ACCEPT

### all packets with a state of Established or Related ###
-A Firewall-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### all SSH traffic with a state of NEW ###
-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
 
#### ENABLE THESE ON ORACLE OR VNC Server ONLY
# FTP Rule
#-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# VNC RULES
#-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
#-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT
# Oracle Rule
#-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
#### END OF ORACLE ENTRIES

### Netbackup ports get filtered to the NETBACKUP chain
### all traffic to or from the 13xxx ports defined below is -j jumped to the NETBACKUP chain
-A Firewall-INPUT -p tcp -m tcp --sport 13701 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --sport 13711 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --sport 13720:13724 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --sport 13782:13783 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --dport 13701 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --dport 13711 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --dport 13720:13724 -j NETBACKUP
-A Firewall-INPUT -p tcp -m tcp --dport 13782:13783 -j NETBACKUP

### Catch all to block any traffic that hasn&amp;#39;t matched a rule up to this point ###
-A Firewall-INPUT -j LOG&lt;/font&gt;&lt;/pre&gt;&lt;pre style="background-color:#f9f9f9;color:black"&gt;&lt;font face="Arial"&gt;-A Firewall-INPUT -j REJECT --reject-with icmp-host-prohibited
##### End of Firewall-INPUT definitions #####

### Netbackup chain -- only allow netbackup ports to/from netbackup servers
### Traffic forwarded from Firewall-INPUT above is only allowed to the source and destination 
### addresses below
-A NETBACKUP -s 10.3.1.30 -j ACCEPT
-A NETBACKUP -s 10.4.1.20 -j ACCEPT
-A NETBACKUP -d 10.3.1.30 -j ACCEPT
-A NETBACKUP -d 10.4.1.20 -j ACCEPT
### Catch all rules to log and make sure no packets get forwarded that do not match any rules in this chain
-A NETBACKUP -j LOG&lt;/font&gt;&lt;/pre&gt;&lt;pre style="background-color:#f9f9f9;color:black"&gt;&lt;font face="Arial"&gt;-A NETBACKUP -j REJECT --reject-with icmp-port-unreachable

COMMIT&lt;/font&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre style="background-color:#f9f9f9;color:black"&gt;&amp;nbsp;&lt;/pre&gt;&lt;p style="background-color:#f9f9f9;color:black"&gt;&lt;b&gt;Rate Limit Ping example:&lt;/b&gt;&lt;/p&gt;&lt;blockquote style="margin-right:0px"&gt;&lt;pre style="margin:0in 0in 0pt"&gt;&lt;font face="Arial" size="3"&gt;# Allow pings, but only 1/sec tops&lt;/font&gt;&lt;/pre&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -m icmp -p icmp --icmp-type 8 -i eth0 -m limit --limit 10/min --limit-burst 3 -j ACCEPT &lt;/p&gt;&lt;p style="background-color:#f9f9f9;color:black"&gt;-A INPUT -m icmp -p icmp --icmp-type 8 -i eth0 -j DROP &lt;/p&gt;&lt;/blockquote&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Rate Limit SSH example:&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;p style="margin:0in 0in 0pt"&gt;&lt;/p&gt;&lt;blockquote id="o74f"&gt;&lt;p&gt;# Rate limit world SSH new connection attempts &lt;/p&gt;&lt;p&gt;-A INPUT -p tcp -m tcp --dport 1983 -m state --state NEW -m recent --set &lt;/p&gt;&lt;p&gt;-A INPUT -p tcp -m tcp --dport 1983 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j REJECT &lt;/p&gt;&lt;p&gt;-A INPUT -p tcp -m tcp --dport 1983 -j ACCEPT&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Example Routing Filters:&lt;/b&gt;&lt;/div&gt;&lt;blockquote style="margin-right:0px"&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Main routing filter&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;#&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Networks:&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.1.0/24 - NEAR Trusted&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.2.0/24 - FAR Trusted&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.3.0/24 - FAR VPN&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.4.0/24 - NEAR VPN&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.5.0/24 - NEAR Media Systems&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# 192.168.10.0/24 - NEAR Guest Network&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;#&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;*filter&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:INPUT ACCEPT [4389:504305]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:FORWARD ACCEPT [135206:133165003]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:OUTPUT ACCEPT [3451:399970]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Filter packets being routed to internal hosts&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A FORWARD -p tcp -m tcp --dport 22 -i eth0 -m state --state NEW -m recent --set&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A FORWARD -p tcp -m tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Allow ping and VPN as only input to this host from the Internet&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -m icmp -p icmp --icmp-type 8 -i eth0 -j ACCEPT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -m state --state NEW -m tcp -p tcp --dport 563 -j ACCEPT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -i eth0 -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Block impossible packets (source address is on different network than the recieving interface)&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -s 127.0.0.0/8 -i ! lo -j DROP&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -s 192.168.1.0/24 -i ! eth1 -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -s 192.168.3.0/24 -i ! tun+ -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A INPUT -s 192.168.4.0/24 -i ! tun+ -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A FORWARD -s 192.168.1.0/24 -i ! eth1 -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A FORWARD -s 192.168.3.0/24 -i ! tun+ -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A FORWARD -s 192.168.4.0/24 -i ! tun+ -j REJECT&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;COMMIT&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Enabling connection tracking modules:&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;Edit /etc/sysconfig/iptables-config by adding a space delimited list of modules you&amp;#39;d like to add to the IPTABLES_MODULES section. &lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Available Modules&lt;/b&gt;&lt;/p&gt;&lt;ul style="list-style-type:square;margin-left:1.5em;margin-right:0px"&gt;&lt;li&gt;ip_conntrack_ftp - automatically opens required ports &lt;/li&gt;&lt;li&gt;ip_conntrack_tftp &lt;/li&gt;&lt;li&gt;ip_conntrack_netbios_ns &lt;/li&gt;&lt;li&gt;ip_nat_ftp - for computers behind a nat device &lt;/li&gt;&lt;li&gt;ip_nat_tftp &lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;IPTABLES_MODULES=&amp;quot;ip_conntrack_ftp ip_conntrack_netbios_ns&amp;quot; &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;NAT&lt;/b&gt;&lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Source NAT (SNAT) translates the source address of outbound packets and the destination address of incoming return packets. &amp;nbsp;Destination NAT (DNAT) is used to provide selective access to internal resources or to transparently forward traffic to an alternate port. &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Example SNAT entries &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Specific IP Mapping: &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A POSTROUTING -j SNAT --to-source 10.3.1.45 &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Specific port mapping: &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A POSTROUTING -j SNAT --to-source 10.3.1.45:8099 &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Range of IP mapping (randomly selected IP): &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A POSTROUTING -j SNAT --to-source 10.3.1.45-10.3.1.55 &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Range of Ports mapping (randomly selected Port): &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A POSTROUTING -j SNAT --to-source 10.3.1.45:8090-8099 &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Masquerading (Used with DHCP to masquerade as the NAT address of the gateway): &lt;/p&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE &lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Show the running nat tables&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;iptables -t nat -L -n -v&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Flush the running NAT tables&lt;/b&gt;&lt;/div&gt;&lt;div&gt;iptables -t nat --flush&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Save the running Config&lt;/b&gt;&lt;/div&gt;&lt;div&gt;iptables-save&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;/p&gt;&lt;div&gt;&lt;b&gt;NAT Example:&lt;/b&gt;&lt;/div&gt;&lt;blockquote dir="ltr" style="margin-right:0px"&gt;&lt;div&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Generated by iptables-save v1.4.1.1 on Tue Apr 28 23:07:42 2009&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;*nat&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:PREROUTING ACCEPT [532:37226]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:POSTROUTING ACCEPT [92:6041]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;:OUTPUT ACCEPT [74:5393]&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# NAT Internet bound traffic&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A POSTROUTING -o eth0 -j MASQUERADE&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Services on Webserver&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m tcp -p tcp --dport 443 --sport 1024:65535 -j DNAT --to 192.168.1.4&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m tcp -p tcp --dport 22 --sport 1024:65535 -j DNAT --to 192.168.1.4&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m tcp -p tcp --dport 143 --sport 1034:65535 -j DNAT --to 192.168.1.5&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Skype on workstation&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m udp -p udp --dport 26474 -j DNAT --to 192.168.1.102&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m tcp -p tcp --dport 26474 -j DNAT --to 192.168.1.102&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;# Torrent Flux&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;-A PREROUTING -i eth0 -m tcp -p tcp --dport 49160:49300 --sport 1024:65535 -j DNAT --to 192.168.1.4&lt;/p&gt;&lt;p style="margin:0in 0in 0pt"&gt;&amp;nbsp;&lt;/p&gt;COMMIT&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;b&gt;Show the running nat tables&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;iptables -t nat -L -n -v&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Flush the running NAT tables&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;iptables -t nat --flush&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Save the running Config&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;iptables-save&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Example DNAT entries&lt;/b&gt;&lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Redirect inbound html traffic to an alternate internal server: &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-dest 10.3.2.50 &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Forward outbound html traffic to a proxy server on port 3128: &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-dest 10.3.4.60:3128 &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Redirect to alternate destination port for incoming traffic (2200 will be forwarded to ssh on 10.3.1.45 in this case): &lt;/p&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2200 -j DNAT --to-dest 10.3.1.45:22 &lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;Redirect 443 to 8443 example&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iptables -t nat -A PREROUTING -i eth0&amp;nbsp; -p tcp --dport 443 -j DNAT --to-dest 10.2.16.126:8443&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Round Robin: &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 8080 -j DNAT --to-dest 10.3.1.46 --to-dest 10.3.1.47 --to-dest 10.3.1.48 &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;Using at to prevent remote lockout when working with IPTABLES &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cd /etc/sysconfig &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#Backup config &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cp iptables{,.bak} &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#Make firewall config changes &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vi iptables and make changes &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#Schedule a restore for 5min in the future in case your changes lock you out &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo &amp;quot;mv /etc/sysconfig/iptables-bak /etc/sysconfig/iptables &amp;amp;&amp;amp; service iptables restart&amp;quot; | at now+5min &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#Restart iptables &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service iptables restart &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#If your changes worked good enough not to need the at job to run and restore config use the following to determine job ID# &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;atq &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Output: 1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Day&amp;nbsp;&amp;nbsp; &amp;nbsp;Month&amp;nbsp;&amp;nbsp; &amp;nbsp;dd &amp;nbsp;hh:mm:ss &amp;nbsp;yyyy &amp;nbsp;a &amp;nbsp; root&amp;nbsp; &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;#If all went well with config changes run:&amp;nbsp; &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;atrm 1 &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rm -f iptables-bak &lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Otherwise just wait for at to run and restore your config within 5 min if you got locked out. &lt;/p&gt;&lt;p style="margin-left:0px;margin-right:0px"&gt;&lt;/p&gt;&lt;div&gt;&amp;nbsp; &lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Show the running nat tables&lt;/b&gt;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;iptables -t nat -L -n -v&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin-left:0px;margin-right:0px"&gt;&lt;b&gt;Flush the running NAT tables&lt;/b&gt;&lt;/div&gt;&lt;div&gt;iptables -t nat --flush&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Save the running Config&lt;/b&gt;&lt;/div&gt;&lt;div&gt;iptables-save&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-8229550111606456415?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/8229550111606456415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=8229550111606456415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8229550111606456415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/8229550111606456415'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/iptables.html' title='IPTABLES'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-495065671266724846</id><published>2009-10-01T02:19:00.001-05:00</published><updated>2009-10-01T02:19:58.156-05:00</updated><title type='text'>Dovecot notes</title><content type='html'>&lt;h3&gt;Dovecot notes&lt;/h3&gt;&lt;a id="pfdb" href="http://docs.google.com/View?docid=dfxjbxcc_825kpm62" title="yum"&gt;yum&lt;/a&gt; -y install dovecot&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Dovecot is an imap, imaps, pop3, and pop3s server.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;man dovecot, fetchmail, openssl are your buddies and don't be afraid to use s_client for identifying cert problems related to date/time issues&lt;/div&gt;&lt;br&gt;&lt;div&gt;Configuration is handled by /etc/dovecot.conf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Make private key and cert before using ssl (TESTING ONLY!!!!!!!!!!!)&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;confirm date and time&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;locate ssl_cert_file and ssl_key_file locations in /etc/dovecot.conf&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;make -C /etc/pki/tls/certs dovecot.pem &amp;nbsp;#creates single file with key and cert&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;copy the dovecot.pem file to both paths mentioned above&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;But for real, go to the CA of your choice and get a real cert to install in the locations above, putting cert in ssl_cert_file path and key in the ssl_key_file path, or at least separate out the cert from the key for your own internal use on a private lan.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;netstat -tupln |grep dovecot &amp;nbsp;# should see 993, 995 (with SSL) and standard 110, 143 in output&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Testing 1,2,3:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; openssl s_client -connect mail.sysxperts.com:995&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;you should see a Cert Chain with different subject and issuer for a real cert or same for a self-signed, no errors,then:&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+OK Dovecot ready.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;user paul&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+OK&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pass mypass&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+OK Logged in.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;b&gt;stat&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+OK 1 439 octets&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;......&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dele 1&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;+OK marked to be deleted&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;quit&lt;/b&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;also:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Thunderbird and Evolution clients&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f pop://user@server:110&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f pops://user@server:995&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Verify IMAP&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;openssl s_client -connect mail.sysxperts.com:993&lt;br&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;look for similar output as above for pop3s&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;also:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Thunderbird and Evolution clients&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f imap://user@server:143&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f imaps://user@server:993&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-495065671266724846?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/495065671266724846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=495065671266724846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/495065671266724846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/495065671266724846'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/dovecot-notes.html' title='Dovecot notes'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3800465500676268791</id><published>2009-10-01T01:37:00.001-05:00</published><updated>2009-10-01T01:37:06.235-05:00</updated><title type='text'>Linux Mail Server Basics</title><content type='html'>&lt;h3&gt;Linux Mail Server Basics&lt;/h3&gt;&lt;div&gt;An MUA (Mail User Agent) or MSP (Mail Submission Program) composes a message and then connects to an MTA (Mail Transport Agent) via SMTP to relay the message out to a recipient. &amp;nbsp;The MTA queries DNS for the corresponding domains MX record and attempts to use the record with the lowest weight (typically 10). &amp;nbsp;The MTA originates an outbound connection via SMTP to the target MTA which will either accept, defer, or reject the message. &amp;nbsp;If the message is accepted the target MTA assumes responsibility for delivery; however, if it rejects or defers then the originating MTA must requeue the message for another attempt. &amp;nbsp;When the target MTA accepts the message it then must hand it off to the MDA (Message Delivery Agent) which will write the message to the mail spool in either mbox format, maildir format or into a database in advanced setups. &amp;nbsp;On the client side the recipient utilizes an MUA to query a MRA (Mail Retrieval Agent) for new mail. &amp;nbsp;The primary protocols for internet mail are POP3 and IMAP or their SSL counterparts. &amp;nbsp;On Linux dovecot is a popular MRA. &amp;nbsp;The MRA accesses the clients mail spool and returns messages/headers to the MUA of the client.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;IPTABLES for SMTP&lt;/div&gt;&lt;div&gt;Edit /etc/sysconfig/iptables and add the following after ESTABLISHED, RELATED entry:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;-A Firewall-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; service iptables restart&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SMTP Troubleshooting:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;find your mail server to troubleshoot&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dig -t mx sysxperts.com |grep MX&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;telnet to it&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;telnet mx1.sysxperts.com 25&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;HELO pvalentino.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MAIL From: paul@pvalentino.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;RCPT To: pvalentino@sysxperts.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;DATA&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;test&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;QUIT&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Always test MTA from a remote machine so that you can verify intervening firewalls, application layer access, and ensure that you are testing SMTP rather than LMTP&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Reading mail for testing options:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f pop://user@computer&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f imap://user@computer&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;or within a shell&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mutt -f /var/spool/mail/user&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mail&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To display smtp exchange between MSP and MTA&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mail -v user&lt;br&gt;&lt;/div&gt;&lt;div&gt;To view the mail queue&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mailq&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mailq -Ac #will show the local MSP to MTA queue - name resolution problems can cause this queue to pile up&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sendmail -q #to reprocess the mail queue&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Note that smtp does not check TCP Wrappers until after the HELO connection so do not get confused when troubleshooting security and rule out TCP Wrappers issue just because you made it to the HELO step...&lt;/div&gt;&lt;div&gt;Note that LMTP is often used to deliver messages on localhost and therefore some settings that apply to SMTP will not apply to LMTP&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Some choices for MTA include Sendmail, Postfix, &amp;amp; Exim&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Virtual hosting is typically supported by rewriting the user portion of the email address, the domain portion of the email address or both.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;h4&gt;SENDMAIL&lt;/h4&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;yum -y install m4 sendmail sendmail-cf&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Edit the /etc/mail/sendmail.mc file to update config #remember that dnl&amp;lt;space&amp;gt; is the syntax for a comment&lt;/div&gt;&lt;div&gt;then&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;make -C /etc/mail &amp;nbsp;#to rebuild the config&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service sendmail restart #to apply the new config&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;you may also update the timestamps to force a rebuild&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;touch /etc/mail/sendmail.mc&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To configure sendmail to listen on all interfaces comment out the loopback DAEMON_OPTIONS entry:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA`)dnl&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service sendmail restart&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;netstat -tupln |grep sendmail #should return 0.0.0.0:25 entry&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Check if sendmail recognizes hostname:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sendmail -d0 &amp;lt; /dev/null &amp;nbsp;#if you see localhost references it's time to check /etc/hosts and /etc/sysconfig/network to make sure they are configured properly&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Edit /etc/mail/local-host-names and add your host names (make sure all valid names are included so that DSN's (Delivery Status Notifications) work properly, for example:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;sysxperts.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mx1.sysxperts.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mail.sysxperts.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Configure outgoing mail with /etc/mail/submit.cf&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To masquerade as a domain instead of a host uncomment:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;EXPOSED_USER(`root')dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FEATURE(masquerade_envelope)dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MASQUERADE_AS(`sysxperts.com')dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FEATURE(masquerade_entire_domain)dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Create local aliases in /etc/aliases and reload with the newaliases command&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;root: &amp;nbsp;unixteam@sysxperts.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;support: &amp;nbsp;| remedyticket&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ln -s &amp;nbsp;/support/remedy/remedyticket &amp;nbsp;/etc/smrsh/remedyticket #prevents damage to system by linking the program under the sendmail restricted shell&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;newaliases&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Create virtual aliases in /etc/mail/virtusertable and use make to rebuild&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;hr@mynet.net&amp;nbsp;&amp;nbsp; &amp;nbsp;payday &amp;nbsp;#obvious&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;jenny@hernet.net &amp;nbsp; &amp;nbsp;shopping #obvious again&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@pvalentino.com&amp;nbsp;&amp;nbsp; &amp;nbsp;paul@pvalentino.com #everything to pvalentino.com is forwarded to paul@pvalentino.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@hisnet.net&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;%1@theirnet.net &amp;nbsp;#everything with a matching user is forwarded i.e. paul@histnet.net goes to paul@theirnet.net&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To enable outbound rewriting in sendmail comment out the following in sendmail.mc:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FEATURE(genericstable)dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;FEATURE(`always_add_domain')dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;GENERICS_DOMAIN_FILE(`/etc/mail/local-host-names')dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Populate /etc/mail/genericstable:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;paul@jethro.com&amp;nbsp;&amp;nbsp; &amp;nbsp;paul@ellymay.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;amy@darin.com&amp;nbsp;&amp;nbsp; &amp;nbsp;amy.valentino@geanie.com #all these domains must be in local-host-names file&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Address rewrites work for smtp but not lmtp&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Adding Restrictions:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uncomment in sendmail.mc:&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FEATURE(`blacklist_recipients')dnl&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;edit /etc/mail/access:&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;From:spammer@spam.com&amp;nbsp;&amp;nbsp; &amp;nbsp;REJECT&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connect:spammers.net&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;REJECT&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Connect:10.1.4&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;OK&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;To:user@xxx4fun.com &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ERROR:550 mail discarded&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;To:nobody@&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ERROR:550 bad name&lt;br&gt;&lt;/div&gt;&lt;div&gt;Tags are now required for all sendmail access files now (untagged) is no longer supported&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Using alternatives to swap your default MTA&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;alternatives --display mta &amp;nbsp;#shows you what you're using&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;alternatives --config mta &amp;nbsp;#lets you choose from available mta's&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;alternatives --set mta /usr/sbin/sendmail.postfix &amp;nbsp;# will set up Postfix as the default MTA&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#GUI tools system-switch-mail from yum -y install system-switch-mail system-switch-mail-gnome are available&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;h4&gt;POSTFIX&lt;/h4&gt;&lt;div&gt;yum -y install postfix&lt;/div&gt;&lt;div&gt;Edit /etc/postfix/main.cf to configure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;postconf -d #shows default settings&lt;/div&gt;&lt;div&gt;postconf -n &amp;nbsp;#shows current non-default settings&lt;/div&gt;&lt;div&gt;postconf -e key=value #modifies the main.cf file&lt;/div&gt;&lt;div&gt;postconf -m #shows supported map types&lt;/div&gt;&lt;div&gt;postmap -s /etc/postfix/access #shows all access entries&lt;/div&gt;&lt;div&gt;postmap -q exactkey /etc/postfix/access #query a specific access key&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;postqueue -f or postsuper -r ALL #will flush the mail queue&lt;/div&gt;&lt;div&gt;postqueue -p #view deferred messages&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;mail -v user and same troubleshooting steps as sendmail are appropriate&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;man 5 postconf is your buddy&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;smtpd&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;pickup - moves messages sent by Postfix from maildrop to incoming queue&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nqmgr - passes messages from incoming to processes for transmission, relay, or local delivery&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Incoming postfix config:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inet_interfaces = all&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;#inet_interfaces = localhost&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mydestination = $myhost, localhost, $mydom, $mydom2&lt;br&gt;&lt;/div&gt;&lt;div&gt;service postfix restart&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Enabling archiving of all messages in and out:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;always_bcc = address&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;netstat -tupln |grep master #should return a 0.0.0.0:25 entry or your IP if you specified one&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For domain masquerading uncomment:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;myorigin = $mydomain &amp;nbsp;#confirm $mydomain with the hostname command, verify /etc/sysconfig/network and /etc/hosts are correct&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;masquerade_exceptions = root&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Local aliases are treated the same as sendmail above using /etc/aliases and newaliases or postalias&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Enable virtual aliases in main.cf with:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;virtual_alias_maps = hash:/etc/postfix/virtual&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Populate /etc/postfix/virtual in same format as sendmail then rehash the file with:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;postmap /etc/postfix/virtual&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Outbound rewriting is enabled with:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;smtp_generic_maps = hash:/etc/postfix/generic&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;then populate /etc/postfix/generic&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paul@sysxperts.com&amp;nbsp;&amp;nbsp; &amp;nbsp;paul@sysxperts2.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;postmap /etc/postfix/generic&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service postfix restart&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Adding restrictions by creating /etc/postfix/access using same syntax as /etc/mail/access shown above for sendmail except untagged and rehashed using postmap.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;in /etc/postfix/main.cf&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;smtpd_TAG_restrictions = &amp;nbsp; &amp;nbsp; #where TAG is either sender, recipient, or client&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;check_TAG_access hash:/etc/postfix/access,&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;permit_mynet, reject_unauth_destination&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3800465500676268791?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3800465500676268791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3800465500676268791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3800465500676268791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3800465500676268791'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/10/linux-mail-server-basics.html' title='Linux Mail Server Basics'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4094677613670879125</id><published>2009-09-30T23:46:00.001-05:00</published><updated>2009-09-30T23:46:08.573-05:00</updated><title type='text'>A little SQUID</title><content type='html'>&lt;h3&gt;A little SQUID&lt;/h3&gt;&lt;div&gt;I can make you faster, I can be your big brother, or I can be your TSA agent&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;yum -y install squid
&lt;div&gt;chkconfig squid on&lt;/div&gt;&lt;div&gt;service squid start&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;DONE, well not really :) but you do have a very basic default config with lots of uncommenting and playing with to do now so let's start by configuring the browser to connect to the proxy on port 3128 for testing, in my case:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http://squid.sysxperts.com on port 3128&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;So in firefox I go to Edit &amp;gt; Preferences and under General Settings I chose Connection Settings. &amp;nbsp;Then I clicked Manual proxy configuration and added the server above and 3128 in the port field.&lt;/div&gt;&lt;br&gt;&lt;div&gt;Make sure your IPTABLES has a rule to allow this:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;-A Firewall-INPUT -s 10.1.4.0/24 -p tcp --dport 3128 -j ACCEPT&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Save and restart iptables&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service iptables restart&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Edit /etc/squid/squid.conf&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Search for "Recommended minimum" in the file and add just below the acl CONNECT method line:&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;acl sysxperts src 10.1.4.0/24 &amp;nbsp;#sysxperts being the name for the acl and src indicating that this is the source IP for this acl&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Now search further for INSERT YOUR OWN and add a line above the localhost access rule to allow sysxperts.&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access allow localhost&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deny jerks ends up here....&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access allow sysxperts&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;deny all ends up here.....&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Create some acls for some jerks near the sysxperts acl&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;acl jerks dstdomain .nigeria914.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;acl jerks dstdomain .thief.com&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;and go back to the allow rule for sysxperts and add this above it (if you put it below it wouldn't have any effect):&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access deny jerks &amp;nbsp;# will block those bad guys domains entirely provided you remembered the leading dot&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access deny all&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Some useful settings in squid.conf are:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_port - customize freely to make your security admins happy&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cache_mem - 8M default but feel free to beef it up for better performance&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cache_dir ufs /var/spool/squid 100 16 256 # how about mounting this on some flash drives&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;acl all src 0.0.0.0/0.0.0.0 &amp;nbsp;#handy little catch all&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;acl localhost src 127.0.0.1/255.255.255.255 #loopback baby&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access allow localhost #guess what happens if you don't?&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;http_access deny all # make use of that catch all&amp;nbsp;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Then reload&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service squid reload&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Use the browser to try to connect to the badguys domains and it should fail, /var/log/squid/ is your friend just like man pages and google.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-4094677613670879125?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/4094677613670879125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=4094677613670879125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4094677613670879125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/4094677613670879125'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/09/little-squid.html' title='A little SQUID'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-3694943120907354183</id><published>2009-09-30T23:05:00.001-05:00</published><updated>2009-09-30T23:05:45.060-05:00</updated><title type='text'>Apache CGI Notes</title><content type='html'>&lt;h3&gt;Apache CGI and .htaccess Notes&lt;/h3&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;See my &lt;a id="xdpm" href="http://docs.google.com/View?docid=dfxjbxcc_176q4dgmnf4" target="_blank" title="example apache setup"&gt;example apache setup&lt;/a&gt;&amp;nbsp;if you don't already have a basic apache setup.&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;Edit /etc/httpd/conf/sites/www.sysxperts.com.conf #obviously you would name it with your own info but for sake of continuity I am using my own stuff&amp;nbsp;&lt;br&gt;&lt;div&gt;Add:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ScriptAlias /cgi-bin/&amp;nbsp;&amp;nbsp; &amp;nbsp;/www/www.sysxperts.com/cgi-bin/&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Create a shell script for testing called myshell.sh in the directory /www/www.sysxperts.com/cgi-bin/ #if your using &lt;a id="gjgl" href="http://docs.google.com/View?docid=dfxjbxcc_1835pt3bxcb" target="_blank" title="selinux"&gt;selinux&lt;/a&gt; I sure hope you fixed stuff with chcon&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chcon -t httpd_sys_content_t /path/that/is/broke/&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;put the following into myshell.sh:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;blockquote&gt;#!/bin/bash&lt;br&gt;Content-Type: text/html&lt;br&gt;&amp;lt;pre&amp;gt;&lt;br&gt;My Name is: $(id -u)&lt;br&gt;My ID is: $(id -u)&lt;br&gt;My Shell is: $(set)&lt;br&gt;My environment is: $(env)&lt;br&gt;&amp;lt;/pre&amp;gt;&lt;/blockquote&gt;Then change permissions to rwx,rx,rx or 755 using chmod&lt;br&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now go to http://www.sysxperts.com/cgi-bin/myshell.sh and hopefully she works, if not look at your /var/log/httpd/ logs&lt;/div&gt;&lt;br&gt;&lt;div&gt;Ok, now let's add some security to my doc root with .htaccess by creating a .htaccess file in /www/www.sysxperts.com/ and add:&lt;/div&gt;&lt;blockquote&gt;AuthName "my crap"&lt;br&gt;AuthType Basic #only a moron like me would expose this level of auth to an internet facing server without ssl&lt;br&gt;AuthUserFile /etc/httpd/conf/.htpasswd-sysxperts&lt;br&gt;require &amp;nbsp;valid-user&lt;/blockquote&gt;Then create password file in /etc/httpd/conf/&lt;br&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;htpasswd -mc .htpasswd-sysxperts pvalentino&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chgrp apache .htpasswd-sysxperts &amp;nbsp;(substitute apache for whatever group you have setup in httpd.conf - I have pvalentino in my example)&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chmod 640 .htpasswd-sysxperts&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service httpd reload&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Then update your virtual host &amp;lt;Directory&amp;gt; block by adding:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;AllowOverride AuthConfig&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;service httpd reload&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now you should get a logon page and all is good, of course if it is not you want to go to /var/log/httpd and review logs if it is not OK. &amp;nbsp;man pages and google are your friends.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;by Paul Valentino aka sysxperts&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5168152168512265767-3694943120907354183?l=pvalentino.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pvalentino.blogspot.com/feeds/3694943120907354183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5168152168512265767&amp;postID=3694943120907354183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3694943120907354183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5168152168512265767/posts/default/3694943120907354183'/><link rel='alternate' type='text/html' href='http://pvalentino.blogspot.com/2009/09/apache-cgi-notes.html' title='Apache CGI Notes'/><author><name>Paul Valentino</name><uri>http://www.blogger.com/profile/13675062483226550269</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5168152168512265767.post-4482159157348242413</id><published>2009-09-29T20:33:00.001-05:00</published><updated>2009-09-29T20:33:18.939-05:00</updated><title type='text'>DM-MPIO Notes</title><content type='html'>&lt;H3&gt;DM-MPIO MultiPath on RHEL 5.2 IBM x3755 with EMC Clariion Notes - Boot from SAN&lt;/H3&gt;
&lt;P&gt;Setting Up DM-Multipath for RHEL5 &amp;nbsp;- see &lt;A id=r31d title="Multipaht on Ubuntu" href="http://www.thogan.com/site/index.php?option=com_content&amp;amp;view=article&amp;amp;id=5:ubuntu-multipath-boot-from-san-experiment&amp;amp;catid=2:uncatagorized&amp;amp;Itemid=2"&gt;Multipath on Ubuntu&lt;/A&gt; for notes on our wonderful experience with Ubuntu and multipath :)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;For a fresh RHEL5.2 install start the installation with the kernel command line "linux mpath"&lt;/DIV&gt;
&lt;DIV&gt;after first reboot you will need to boot into linux rescue mode from the install disk again because install does not properly create the grub-install&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Then:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ln -s /dev/sda /dev/root&amp;nbsp; (where /dev/sda is the boot volume)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount --bind /dev&amp;nbsp; /mnt/sysimage/dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;chroot /mnt/sysimage&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mount /dev/sda1&amp;nbsp; /boot&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;grub-install /dev/sda&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Grub should now be properly setup and you should be able to reboot into your new OS and continue with the mpath configuration&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Use the following procedures to set up DM-Multipath for active/active &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# cp /usr/share/doc/device-mapper-multipath-&amp;lt;version&amp;gt;/multipath.conf.annotated /etc/multipath.conf&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Alternatively,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# cp /usr/share/doc/device-mapper-multipath-&amp;lt;version&amp;gt;/multipath.conf.defaults /etc/multipath.conf&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;Determine local disk id for blacklist&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# multipath -v3&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Search for your local disk UID entry.&amp;nbsp; For example, /dev/sda&amp;nbsp; UID=.......&lt;/DIV&gt;
&lt;DIV&gt;Replace the blacklist entry below with the UID in your configuration&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;DIV&gt;Edit the /etc/multipath.conf file by uncommenting the necesarry sections/lines of the file.&lt;/DIV&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;B&gt;Working Example for Clariion from an IBM x3755 with Qlogic 24xx hba after fresh install with RHEL 5.2 using "linux mpath" install option:&lt;/B&gt; &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;defaults { &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; udev_dir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; polling_interval 10&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default_selector&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "round-robin 0"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no_path_retry&amp;nbsp;&amp;nbsp;&amp;nbsp; queue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default_path_grouping_policy&amp;nbsp;&amp;nbsp;&amp;nbsp; multibus&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default_getuid_callout&amp;nbsp; "/sbin/scsi_id -g -u -s /block/%n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default_prio_callout&amp;nbsp;&amp;nbsp;&amp;nbsp; "/bin/true"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default_features&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "0"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rr_min_io&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; user_friendly_names&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; failback&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; immediate&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;DIV&gt;blacklist {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; wwid SIBM_Serve_RAID5i_45D1B811&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;P&gt;devices { &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vendor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "DGC"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; product&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "*"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path_grouping_policy&amp;nbsp;&amp;nbsp;&amp;nbsp; group_by_priority&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getuid_callout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/sbin/scsi_id -g -u -s /block/%n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path_checker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; emc_clariion&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; path_selector&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "round-robin 0"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; features&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "1 queue_if_no_path"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no_path_retry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "300"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hardware_handler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "1 emc"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prio_callout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "/sbin/mpath_prio_emc /dev/%n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;}&lt;/DIV&gt;
&lt;P&gt;multipaths { &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; multipath {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wwid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600601606de0220046fe38b57324de11&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp; rootvg&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;Run the following commands: &lt;/P&gt;
&lt;DIV&gt;# multipath -F&lt;/DIV&gt;
&lt;DIV&gt;# multipath -v3&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The default settings for DM-Multipath are compiled in to the system and do not need to be &lt;/P&gt;
&lt;DIV&gt;explicitly set in the /etc/multipath.conf file.&lt;/DIV&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px"&gt;
&lt;DIV&gt;The default value of path_grouping_policy is set to multibus, so in this example you do not&lt;/DIV&gt;
&lt;DIV&gt;need to change the default value. &lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;Save the configuration file and exit the editor.&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;You will see multipathed devices (/dev/mapper/mpath*) as installation devices. &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Now edit /etc/lvm/lvm.conf and add a filter:&lt;/DIV&gt;
&lt;DIV&gt;filter = [ "a/sda/", "a/mapper/", "r/.*/" ]&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Edit /etc/fstab so that your boot lun does not get fsck:&lt;/DIV&gt;
&lt;DIV&gt;change the line that mounts /boot to look similar to this&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/dev/mapper/mpath0p1&amp;nbsp;&amp;nbsp;&amp;nbsp; /boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;noauto&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt; 0 0&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Edit /etc/rc.sysinit and add the following immediately after&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if strstr "$cmdline" noreadonlyroot ; then&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; READONLY=no&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "TIME TO PUT SOME MPATH LINKING CRAP HERE!"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ORIGINAL_IFS=$IFS&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IFS=`echo -en '\n\b'`&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MPATH_LABELS=`for d in /dev/mapper/* ; do echo -n "$d " ; e2label $d 2&amp;gt;&amp;amp;1 ; done | grep mapper | grep -v Bad`&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mkdir /dev/mpath_links 2&amp;gt;/dev/null&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rm -f /dev/mpath_links/*&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for mpath in $MPATH_LABELS; do&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_device=`echo $mpath | awk '{print $1}'`&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_label=`echo $mpath | awk '{print $2}'`&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_link="/dev/mpath_links/$mpath_label"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Linking $mpath_device -&amp;gt; $mpath_link"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ln -s $mpath_device $mpath_link&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;done&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IFS=$ORIGINAL_IFS&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo "DONE WITH CUSTOM MPATH LINKING"&lt;/B&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;Use tune2fs -L &amp;lt;label&amp;gt; to give your disks appropriate labels:&lt;/DIV&gt;
&lt;DIV&gt;For example,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;tune2fs -L u01 /dev/mapper/mpath2p1&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tune2fs -L u02 /dev/mapper/mpath3p1&lt;BR&gt;&lt;/B&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Edit /etc/fstab to use the mpath_links directory for mounting devices properly (where u01 and u02 match the labels you just created above):&lt;/DIV&gt;
&lt;DIV&gt;For example,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;/dev/mpath_links/u01&amp;nbsp;&amp;nbsp;&amp;nbsp; /u01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /dev/mpath_links/u02&amp;nbsp;&amp;nbsp;&amp;nbsp; /u02&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Reboot.&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;For existing RHEL5.2 server: before setting up DM-Multipath on your system, ensure that your system has been updated and&lt;/DIV&gt;
&lt;DIV&gt;includes the device-mapper-multipath package.&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# rpm -qa |grep device-mapper &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device-mapper-event-1.02.28-2.el5&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device-mapper-multipath-0.4.7-23.el5&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device-mapper-1.02.28-2.el5&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device-mapper-1.02.28-2.el5&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;Execute the following commands:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;# modprobe dm-multipath&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;# modprobe dm-round-robin&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;# service multipathd start&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;# chkconfig --add multipathd &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;# chkconfig multipathd on&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&lt;B&gt;Adding a multipathed LVM device&lt;/B&gt;&lt;/DIV&gt;
&lt;DIV&gt;Remember to use the /dev/mapper device names for creating lvm volumes and in /etc/fstab:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;# kpartx -a /dev/mapper/mpath2&amp;nbsp;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;# pvcreate /dev/mapper/mpath2&lt;/DIV&gt;
&lt;DIV&gt;# vgcreate datavg /dev/mapper/mpath2&lt;/DIV&gt;
&lt;DIV&gt;# lvcreate -L 900M -n datalv datavg&lt;/DIV&gt;
&lt;DIV&gt;# mke2fs -j /dev/datavg/datalv&lt;/DIV&gt;
&lt;DIV&gt;# ls /dev/mapper/&lt;/DIV&gt;
&lt;DIV&gt;Now there is a datavg-datalv to mount in /dev/mapper&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px"&gt;
&lt;DIV&gt;/dev/VolGroup00/LogVol00 /&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1&lt;/DIV&gt;
&lt;DIV&gt;/dev/mapper/datavg-datalv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 1&lt;/DIV&gt;
&lt;DIV&gt;LABEL=/boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /boot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ext3&amp;nbsp;&amp;nbsp;&amp;nbsp; defaults&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 2&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;B&gt;Adding an alias&lt;/B&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;# scsi_id -p 0x83 -g -s /block/sdb &lt;/P&gt;
&lt;DIV&gt;3600601606de0220046fe38b57324de11&lt;/DIV&gt;
&lt;P&gt;Then I simply add a section to my multipath.conf file that looks like the following:&lt;/P&gt;
&lt;P&gt;multipaths { &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; multipath {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wwid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3600601606de0220046fe38b57324de11&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rootvg&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;P&gt;So now, instead of /dev/mapper/3600601606de0220046fe38b57324de11 my dm-multipath device will be called /dev/mapper/rootvg and thus my volumes &lt;/P&gt;
&lt;P&gt;will be changed as follows:&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/dev/mapper/rootvg-datalv&amp;nbsp; --&amp;nbsp; /data&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;when I do a multipath -ll&amp;nbsp; I only see the multipath devices that I added and not the /dev/VolGroup00.... that were created at install time.&amp;nbsp; This appears to be ok because testing cable pulls, kernel upgrades, and reboots all work consistently and repeatedly.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;More to come as I do more testing&lt;/P&gt;
&lt;DIV&gt;&amp;nbsp; &lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H3 id=head-6e0c44c7a639438f85bcc9bd0797657a8fa8eed6&gt;4.3. Moving root/swap from single path device to multipath device for Boot From SAN&lt;/H3&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Before you start with this procedure, make sure 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;a) your /etc/multipath.conf works properly in your current setup. 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- appropriate blacklist (make sure your root is not blacklisted) 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- special config stanzas for your storage 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- etc., &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;&lt;B&gt;b) your root device is referred by LABEL rather than the scsi name in both /etc/fstab and in your boot loader configuration file.&amp;nbsp; i.e. root=LABEL=/ in grub.conf&lt;/B&gt; 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;B&gt;and that your LABEL is created using the /dev/mapper device!!!!&amp;nbsp; &lt;FONT color=#ff0000&gt;DON'T use /dev/sd... when creating labels!!!&lt;/FONT&gt;&lt;/B&gt; 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;&lt;B&gt;&lt;FONT color=#ff0000&gt;c) alternatively just point to the /dev/mapper entries in fstab instead of using labels&lt;/FONT&gt;&lt;/B&gt; 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Edit lvm.conf, add preferred devices stanza and change filter to reject SAN related /dev/sd* devices.&amp;nbsp; If these are not explicitly ignored, the mkinitrd script has an internal state inconsistency and won't look for a multipath config at all.&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="COLOR: rgb(255,0,0)"&gt;Before creating the initrd make sure that vgscan can see your boot lun&lt;/SPAN&gt;&amp;nbsp;(example: filter = [ "a/then after mkinitrd is created it is safe to fix with a filter such as the one below...&lt;/P&gt;
&lt;P&gt;For example,&amp;nbsp; &lt;B&gt;filter = [ "a/sda/", "a/mapper/", "a/mpath/", "r/.*/"&amp;nbsp; ]&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;Edit /sbin/mkinitrd&lt;/P&gt;
&lt;P&gt;Add the lines from the wiki post found below: &lt;/P&gt;
&lt;DIV&gt;# - look for "use_multipath=0" and change it to "use_multipath=1"&lt;/DIV&gt;
&lt;DIV&gt;# - look for the line with "echo Creating multipath devices"&lt;/DIV&gt;
&lt;DIV&gt;# - add the following line immediately below the above line (before the for loop)&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * emit "/bin/multipath -v 0 $wwid" &lt;/P&gt;
&lt;P&gt;# use the wwid that was saved in step (1) Add a line for every disk/wwid noted down in step (2)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;THEN - there is a bug in mkinitrd that this will be exposed in RHEL5.2&amp;nbsp; 2.6.18-92.el5, add the following line immediately before line 368:&lt;/P&gt;
&lt;P&gt;[ ! -d 'slaves' ] &amp;amp;&amp;amp; break or diff the file below against your own mkinitrd to see the changes...&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Delete this file: /etc/blkid/blkid.tab&lt;/P&gt;
&lt;P&gt;Make the initrd, the hardware handler for the clariion is used by multipath, BUT mkinitrd skips it (this is what I found out with high speed footage).&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Explicitly include the dm_emc module in the mkinitrd command:&lt;/P&gt;
&lt;P&gt;&lt;B&gt;mkinitrd -f --with=dm_emc --rootdev /dev/mapper/sanvg-rootlv /boot/initrd-$(uname -r).mpath.img $(uname -r)&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;---&lt;/P&gt;
&lt;P&gt;You can verify your mkinitrd file by copying to /tmp/initfiles or somewhere with a .gz extension and gzip -d the file&lt;/P&gt;
&lt;P&gt;Then cpio -i &amp;lt; initrd-$(uname -r).mpath.img.gz&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;grep filter etc/lvm/lvm.conf and verify your updated filter exists&lt;/P&gt;
&lt;P&gt;cat multipath.conf and verify it is the same as your updated file&lt;/P&gt;
&lt;P&gt;ls lib and verify that dm-multipath.ko dm-emc.ko exist&lt;/P&gt;
&lt;P&gt;ls bin and verify that&amp;nbsp; kpartx mpath_prio_emc multipath and&amp;nbsp; lvm exist&lt;/P&gt;
&lt;P&gt;cat init and verify that /bin/multipath -v 0 36006016017811900cc8...... line is before the mkrootdev -t ext3 -o defaults,ro /dev/mapper/... line&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and that the &lt;B&gt;lvm vgchange -ay --ignorelockingfailure&lt;/B&gt; entry includes your boot lun i.e. sanvg in our case.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;After all this the details of the boot multipath device will NOT be hidden under the abstracted /dev/root.&amp;nbsp; It will be seen and can be managed as any other multipath or lvm device: &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=line862&gt;From &lt;A href="http://sources.redhat.com/lvm2/wiki/MultipathUsageGuide"&gt;http://sources.redhat.com/lvm2/wiki/MultipathUsageGuide&lt;/A&gt;&lt;/P&gt;
&lt;P class=line862&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=line862&gt;Procedure above (Red Hat) gives details on how to use &lt;I&gt;linux mpath&lt;/I&gt; to install on a multipathed storage device. What if you have already installed Red Hat on a SCSI disk (instead of a dm device) that has multiple paths. &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class=line862&gt;This section gives details on how to move your root and sdev/sd?? to /dev/mappper/mpath?? &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P class=line862&gt;This procedure is tested on RHEL 5.1. If you are trying on a different wap from /release of RHEL, your mileage may vary. &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;OL type=1&gt;
&lt;LI&gt;Before you start with this procedure, make sure 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;a) your /etc/multipath.conf works properly in your current setup. 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- appropriate blacklist (make sure your root is not blacklisted) 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- special config stanzas for your storage 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- etc., &lt;/LI&gt;&lt;/UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;&lt;B&gt;b) your root device is referred by LABEL rather than the scsi name in both /etc/fstab and in your boot loader configuration file.&amp;nbsp; i.e. root=LABEL=/ in grub.conf&lt;/B&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;run "/sbin/scsi_id -g -u -s /block/$your_disk_name", and save the wwid 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;repeat this step for all disks that are multipathed and used in /etc/fstab (/, /home, /boot, swap etc.,). &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;save /sbin/mkinitrd, we will be making some changes to this file. 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;cp /sbin/mkinitrd /sbin/mkinitrd.save &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;edit /sbin/mkinitrd: 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- look for "use_multipath=0" and change it to "use_multipath=1" 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- look for the line with "echo Creating multipath devices" 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- add the following line immediately below the above line (before the for loop) 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;emit "/bin/multipath -v 0 $wwid" &lt;/LI&gt;&lt;/UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;use the wwid that was saved in step (1) Add a line for every disk/wwid noted down in step (2) &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Run mkinitrd to generate a new initrd image 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- mkinitrd /boot/initrd-mpath-$(uname -r) $(uname -r) &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Change the boot loader configuration file: 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- In your boot loader config file (yaboot.conf or grub.conf or lilo.conf), add a new stanza with the new initrd image and the original kernel. 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;i.e copy the original stanza as is and modify only the initrd line to be initrd-mpath-$(uname -r) (of course with uname -r expanded) &lt;/LI&gt;&lt;/UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- add an option "fastboot" to the kernel command line. It can be added to the "append" string in the stanza. &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Reboot. 
&lt;LI class=gap&gt;Run mkinitrd with rootdev to generate a new initrd image 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- mkinitrd -f --rootdev LABEL=$ROOTLABEL /boot/initrd-mpath-$(uname -r) $(uname -r) 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;Note: -f is to forcefully overwrite the old initrd image 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;Note: Use your root device's label and _not_ $ROOTLABEL &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Remove the file /etc/blkid/blkid.tab, which has labels for non-multipathed block devices. 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;- rm /etc/blkid/blkid.tab 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;Note: Don't worry about removing this, it will be created the next time system is rebooted. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Remove the option "fastboot" from the kernel command line (added in step (6) above). 
&lt;LI class=gap&gt;restore the original mkinitrd (saved in step (3)) 
&lt;UL&gt;
&lt;LI style="LIST-STYLE-TYPE: none"&gt;mv /sbin/mkinird.save /sbin/mkinitrd 
&lt;LI style="LIST-STYLE-TYPE: none"&gt;optionally you can save the modified one for your future reference &lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=gap&gt;Reboot again. 
&lt;LI class=gap&gt;Verification: Your devices should be under dm-multipath's control. Verify it by running "df" and/or "cat /proc/swaps". &lt;/LI&gt;&lt;/OL&gt;
&lt;DIV class=gap&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=gap&gt;&lt;B&gt;Ran into some problems with booting by label and fixed by adding the following to rc.sysinit at line 513 just after&lt;/B&gt; &lt;/DIV&gt;
&lt;DIV class=gap&gt;&amp;nbsp;if strstr "$cmdline" noreadonlyroot ; then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; READONLY=no&lt;BR&gt;fi&lt;BR&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE style="MARGIN-RIGHT: 0px" dir=ltr&gt;
&lt;DIV class=gap&gt;
&lt;P&gt;echo "TIME TO PUT SOME MPATH LINKING CRAP HERE!" &lt;/P&gt;
&lt;DIV&gt;ORIGINAL_IFS=$IFS&lt;/DIV&gt;
&lt;DIV&gt;IFS=`echo -en '\n\b'`&lt;/DIV&gt;
&lt;DIV&gt;MPATH_LABELS=`for d in /dev/mapper/mpath*p* ; do echo -n "$d " ; e2label $d 2&amp;gt;&amp;amp;1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;; done | grep mapper | grep -v Bad`&lt;/DIV&gt;
&lt;DIV&gt;mkdir /dev/mpath_links 2&amp;gt;/dev/null&lt;/DIV&gt;
&lt;DIV&gt;rm -f /dev/mpath_links/*&lt;/DIV&gt;
&lt;P&gt;for mpath in $MPATH_LABELS; do &lt;/P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_device=`echo $mpath | awk '{print $1}'`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_label=`echo $mpath | awk '{print $2}'`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mpath_link="/dev/mpath_links/$mpath_label"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo "Linking $mpath_device -&amp;gt; $mpath_link"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ln -s $mpath_device $mpath_link&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;P&gt;IFS=$ORIGINAL_IFS &lt;/P&gt;
&lt;DIV&gt;echo "DONE WITH CUSTOM MPATH LINKING"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;B&gt;Then i changed fstab to use&amp;nbsp; /dev/mpath_links/...&lt;/B&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;H3&gt;MKINITRD FILE 
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/H3&gt;
&lt;DIV&gt;
&lt;DIV&gt;#!/bin/bash --norc&lt;/DIV&gt;
&lt;DIV&gt;#&lt;/DIV&gt;
&lt;DIV&gt;# mkinitrd&lt;/DIV&gt;
&lt;DIV&gt;#&lt;/DIV&gt;
&lt;DIV&gt;# Copyright 2005 Red Hat, Inc.&lt;/DIV&gt;
&lt;DIV&gt;#&lt;/DIV&gt;
&lt;DIV&gt;# Written by Erik Troan &amp;lt;ewt@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;#&lt;/DIV&gt;
&lt;DIV&gt;# Contributors:&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Elliot Lee &amp;lt;sopwith@cuc.edu&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Miguel de Icaza &amp;lt;miguel@nuclecu.unam.mx&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Christian 'Dr. Disk' Hechelmann &amp;lt;drdisk@ds9.au.s.shuttle.de&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Michael K. Johnson &amp;lt;johnsonm@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Pierre Habraken &amp;lt;Pierre.Habraken@ujf-grenoble.fr&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Jakub Jelinek &amp;lt;jakub@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Carlo Arenas Belon (carenas@chasqui.lared.net.pe&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Keith Owens &amp;lt;kaos@ocs.com.au&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Bernhard Rosenkraenzer &amp;lt;bero@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Matt Wilson &amp;lt;msw@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Trond Eivind Glomsrød &amp;lt;teg@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Jeremy Katz &amp;lt;katzj@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Preston Brown &amp;lt;pbrown@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Bill Nottingham &amp;lt;notting@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Guillaume Cottenceau &amp;lt;gc@mandrakesoft.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp; &amp;nbsp; Peter Jones &amp;lt;pjones@redhat.com&amp;gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;export MALLOC_PERTURB_=204&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH&lt;/DIV&gt;
&lt;DIV&gt;export PATH&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;. /etc/rc.d/init.d/functions&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;LC_COLLATE=C&lt;/DIV&gt;
&lt;DIV&gt;export LC_COLLATE&lt;/DIV&gt;
&lt;DIV&gt;# Set the umask. For iscsi, the initrd can contain platintext&lt;/DIV&gt;
&lt;DIV&gt;# password (chap secret), so only allow read by owner.&lt;/DIV&gt;
&lt;DIV&gt;umask 077&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;VERSION=5.1.19.6&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;PROBE="yes"&lt;/DIV&gt;
&lt;DIV&gt;MODULES=""&lt;/DIV&gt;
&lt;DIV&gt;MODLOOPS=""&lt;/DIV&gt;
&lt;DIV&gt;PREMODS=""&lt;/DIV&gt;
&lt;DIV&gt;PREINTERFACES=""&lt;/DIV&gt;
&lt;DIV&gt;NET_LIST=""&lt;/DIV&gt;
&lt;DIV&gt;DHCPDEVS=""&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;ncryptodevs=0&lt;/DIV&gt;
&lt;DIV&gt;ncryptoparts=0&lt;/DIV&gt;
&lt;DIV&gt;ncryptolvs=0&lt;/DIV&gt;
&lt;DIV&gt;ncryptoraids=0&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;CFG_DIR=${MKINITRD_CONFIG_DIR:-/etc/sysconfig/mkinitrd}&lt;/DIV&gt;
&lt;DIV&gt;cfgs="$CFG_DIR/*[^~]"&lt;/DIV&gt;
&lt;DIV&gt;for cfg in $cfgs ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -x $cfg ] &amp;amp;&amp;amp; . $cfg&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;CONFMODS="$MODULES"&lt;/DIV&gt;
&lt;DIV&gt;MODULES=""&lt;/DIV&gt;
&lt;DIV&gt;ARCH=$(uname -m | sed -e 's/s390x/s390/')&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;compress=1&lt;/DIV&gt;
&lt;DIV&gt;allowmissing=""&lt;/DIV&gt;
&lt;DIV&gt;target=""&lt;/DIV&gt;
&lt;DIV&gt;kernel=""&lt;/DIV&gt;
&lt;DIV&gt;force=""&lt;/DIV&gt;
&lt;DIV&gt;verbose=""&lt;/DIV&gt;
&lt;DIV&gt;img_vers=""&lt;/DIV&gt;
&lt;DIV&gt;builtins=""&lt;/DIV&gt;
&lt;DIV&gt;modulefile=/etc/modules.conf&lt;/DIV&gt;
&lt;DIV&gt;[ "$ARCH" == "s390" ] &amp;amp;&amp;amp; withusb=0 || withusb=1&lt;/DIV&gt;
&lt;DIV&gt;[ "$MULTIPATH" == "no" ] &amp;amp;&amp;amp; withmpath=0 || withmpath=1&lt;/DIV&gt;
&lt;DIV&gt;[ "$DMRAID" == "no" ] &amp;amp;&amp;amp; withdmraid=0 || withdmraid=1&lt;/DIV&gt;
&lt;DIV&gt;rc=0&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;IMAGESIZE=8000&lt;/DIV&gt;
&lt;DIV&gt;PRESCSIMODS="sd_mod"&lt;/DIV&gt;
&lt;DIV&gt;fstab="/etc/fstab"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;vg_list=""&lt;/DIV&gt;
&lt;DIV&gt;net_list="$NET_LIST"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;vecho()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NONL=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$1" == "-n" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NONL="-n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$verbose" ] &amp;amp;&amp;amp; echo $NONL "$@"&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;error()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NONL=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$1" == "-n" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NONL="-n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo $NONL "$@" &amp;gt;&amp;amp;2&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;usage () {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$1" == "-n" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cmd=echo&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cmd=error&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd "usage: `basename $0` [--version] [--help] [-v] [-f] [--preload &amp;lt;module&amp;gt;]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--force-ide-probe] [--force-scsi-probe | --omit-scsi-modules]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--image-version] [--force-raid-probe | --omit-raid-modules]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--with=&amp;lt;module&amp;gt;] [--force-lvm-probe | --omit-lvm-modules]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--builtin=&amp;lt;module&amp;gt;] [--net-dev=&amp;lt;interface&amp;gt;]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--without-usb] [--without-multipath] [--without-dmraid]"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; [--fstab=&amp;lt;fstab&amp;gt;] [--nocompress] &amp;lt;initrd-image&amp;gt; &amp;lt;kernel-version&amp;gt;"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd ""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;$cmd " &amp;nbsp; &amp;nbsp; &amp;nbsp; (ex: `basename $0` /boot/initrd-2.2.5-15.img 2.2.5-15)"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$1" == "-n" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exit 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;moduledep() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vecho -n "Looking for deps of module $1"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;deps=$(modprobe --set-version $kernel --show-depends $1 2&amp;gt;/dev/null| awk '/^insmod / { print gensub(".*/","","g",$2) }' | while read foo ; do [ "${foo%%.ko}" != "$1" ] &amp;amp;&amp;amp; echo -n "${foo%%.ko} " ; done)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$deps" ] &amp;amp;&amp;amp; vecho ": $deps" || vecho&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;locatemodule() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fmPath=$(modprobe --set-version $kernel --show-depends $1 2&amp;gt;/dev/null | awk '/^insmod / { print $2; }' | tail -1)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$fmPath" -a -f "$fmPath" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for modExt in o.gz o ko ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for modDir in /lib/modules/$kernel/updates /lib/modules/$kernel ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -d $modDir ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fmPath=$(findone $modDir -name $1.$modExt)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$fmPath" -a -f "$fmPath" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findone() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo nash-find "$@" | /sbin/nash --force --quiet \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| /bin/awk '{ print $1; exit; }'&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findall() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo nash-find "$@" | /sbin/nash --force --quiet&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;resolve_device_name() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo nash-resolveDevice "$1" | /sbin/nash --forcequiet&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;find_dm_in_sysblock() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;devname=$(resolve_device_name $1)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$devname" ] &amp;amp;&amp;amp; return 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;majmin=$(get_numeric_dev dec $devname)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$majmin" ] &amp;amp;&amp;amp; return 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findall /sys/block -name dev | while read device ; do \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo "$majmin" | cmp -s $device &amp;amp;&amp;amp; echo $device ; done \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| sed -e 's,/dev$,,'&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;is_mpath() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;major=$(echo $1 | cut -d: -f1)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;minor=$(echo $1 | cut -d: -f2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for target in $(dmsetup -C -j $major -m $minor table 2&amp;gt;/dev/null | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;grep -v "No devices found" | awk ' { print $3 }') ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$target" == "multipath" ] &amp;amp;&amp;amp; return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;get_disk_vendor() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local vendor=$(scsi_id -g -u -s ${1#/sys} -x | grep ^ID_VENDOR= | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sed 's/^ID_VENDOR=//')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$vendor" ] || vendor=$(scsi_id -g -ppre-spc3-83 -u -s ${1#/sys} -x \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| grep ^ID_VENDOR= | sed 's/^ID_VENDOR=//')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$vendor" ] &amp;amp;&amp;amp; return 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo ${vendor}&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# this sucks; we need a generic way to get the hardware handler&lt;/DIV&gt;
&lt;DIV&gt;is_emc() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local syspath=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local devpath=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local majmin=$(cat ${syspath}/dev)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local major=$(echo $1 | cut -d: -f1)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local minor=$(echo $1 | cut -d: -f2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if dmsetup -C -j $major -m $minor table 2&amp;gt;/dev/null | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;grep -v "No devices found" | grep -q " emc " ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$(get_disk_vendor ${syspath})" == "DGC" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return 1&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;find_mpath_deps() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local devpath="/dev/$(echo $1 | sed -e 's,.*/\([^/]\+\),\1,' )"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local arg2="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local majmin=$(cat $1/dev)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local ret=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "${arg2}" == "yes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if is_emc ${1} ${devpath} ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ret=0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if is_mpath ${majmin} ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;arg2=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;slaves="$1/slaves/*"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for slave in $slaves ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -e $slave ] || continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;find_mpath_deps $(readlink $slave) ${arg2} &amp;amp;&amp;amp; ret=0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$2" == "yes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo $devpath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return $ret&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findmodule() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;skiperrors=""&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $1 == "--skiperrors" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;skiperrors=--skiperrors&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ $1 == "--loop" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MODLOOPS=" $MODLOOPS$2 "&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local modName=$1&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$modName" = "off" -o "$modName" = "null" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$modName" != "${modName##-}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;skiperrors=--skiperrors&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modName="${modName##-}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case "$MODULES " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*"/$modName.ko "*) return ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if echo $builtins | egrep -q '(^| )'$modName'( |$)' ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "module $modName assumed to be built in"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# special cases&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$modName" = "i2o_block" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule i2o_core&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule -i2o_pci&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modName="i2o_block"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$modName" = "ppa" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule parport&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule parport_pc&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modName="ppa"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$modName" = "sbp2" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule ieee1394&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule ohci1394&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modName="sbp2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$modName" = "gfs2" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $MODLOOPS " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" gfs2 "*) ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule --loop gfs2 lock_nolock&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $MODULES " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*"/gfs2.ko "*) return ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$modName" = "nfs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule sunrpc&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modName="nfs"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$modName" = "usb-storage" -o "$modName" = "ub" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usbModName="$modName"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$usbModName" \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-a "$modName" != "uhci-hcd" \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-a "$modName" != "ohci-hcd" \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-a "$modName" != "ehci-hcd" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;withusb=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule ehci-hcd&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule ohci-hcd&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule uhci-hcd&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usbModName=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;moduledep $modName&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for i in $deps; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $i&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;locatemodule $modName&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -f "$fmPath" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$skiperrors" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# ignore the absence of the scsi modules&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for n in $PRESCSIMODS; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$n" = "$modName" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$allowmissing" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error "WARNING: No module $modName found for kernel $kernel, continuing anyway"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error "No module $modName found for kernel $kernel, aborting."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# only need to add each module once&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MODULES="$MODULES $fmPath"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# need to handle prescsimods here -- they need to go _after_ scsi_mod&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$modName" = "scsi_mod" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for n in $PRESCSIMODS ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $n&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;inst() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$#" != "2" ];then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo "usage: inst &amp;lt;file&amp;gt; &amp;lt;destination&amp;gt;"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vecho "$1 -&amp;gt; $2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mkdir -p $(dirname $2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cp $1 $2&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;readlink() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo nash-readlink "$1" | /sbin/nash --force --quiet&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;access() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo nash-access "$@" | /sbin/nash --force --quiet&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;slavestried=""&lt;/DIV&gt;
&lt;DIV&gt;findstoragedriverinsys () {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while [ ! -L device ]; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -d slaves ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for slave in slaves/* ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$slave" == "slaves/*" ] &amp;amp;&amp;amp; continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;slavename=${slave##*/}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $slavestried " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" $slavename "*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;slavestried="$slavestried $slavename"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pushd $slave &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findstoragedriverinsys&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;popd &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$PWD" = "/sys" ] &amp;amp;&amp;amp; return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cd ..&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cd $(readlink ./device)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if is_iscsi $PWD; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handleiscsi "$PWD"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if echo $PWD | grep -q /virtio-pci/ ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule virtio_pci&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while [ "$PWD" != "/sys/devices" ]; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deps=&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -f modalias ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;moduledep $(cat modalias)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$deps" -a -L driver/module ] &amp;amp;&amp;amp; \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deps=$(basename $(readlink driver/module))&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for driver in $deps ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $driver&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cd ..&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findstoragedriver () {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for device in $@ ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $handleddevices " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" $device "*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*) handleddevices="$handleddevices $device" ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ "$device" =~ "^md[0-9]+" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Found RAID component $device"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handleraid "$device"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;vecho "Looking for driver for device $device"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ "$device" =~ ^(dm-|mapper/) ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;device=$(resolve_dm $device)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Found DM device $device"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;majmin=$(get_numeric_dev dec "/dev/$device")&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sysfs=$(find_dm_in_sysblock /dev/$device)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handledm $(echo "$majmin" |cut -d : -f 1) $(echo "$majmin" |cut -d : -f 2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sysfs=$(findone -type d /sys/block -name $device)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$sysfs" ] &amp;amp;&amp;amp; return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;pushd $sysfs &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findstoragedriverinsys&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;popd &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findnetdriver() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for device in $@ ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $handleddevices " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" $device "*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*) handleddevices="$handleddevices $device" ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -f /sys/class/net/$device/device/modalias ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modalias=$(cat /sys/class/net/$device/device/modalias)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;moduledep $modalias&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;for driver in $deps ; do&lt;/DIV&gt;
&lt;DIV&gt;findmodule $driver&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;elif [ "$(basename $(readlink /sys/class/net/$device/device/bus) 2&amp;gt;/dev/null)" = "xen" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;findmodule xennet # FIXME: hack for xennet sucking&lt;/DIV&gt;
&lt;DIV&gt;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;findmodule $(ethtool -i $device | awk '/^driver:/ { print $2 }')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;iscsi_get_rec_val() {&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# The open-iscsi 742 release changed to using flat files in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# /var/lib/iscsi.&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=$(/sbin/iscsiadm --show -m session -r ${1} | grep "^${2} = ")&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=${result##* = }&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;ibft_get_rec_val() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=$(/sbin/iscsiadm -m fw 2&amp;gt;/dev/null | grep "^${1} = ")&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;result=${result##* = }&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;iscsi_set_parameters() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;path=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vecho setting iscsi parameters&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Check once before getting explicit values, so we can output a decent&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# error message.&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ! /sbin/iscsiadm -m session -r ${path} &amp;gt;/dev/null ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo Unable to find iscsi record for $path&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;nit_name=$(grep "^InitiatorName=" /etc/iscsi/initiatorname.iscsi | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sed -e "s/^InitiatorName=//")&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.name"; tgt_name=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.tpgt"; tpgt=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.conn\[0\].address"; tgt_ipaddr=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.conn\[0\].port"; tgt_port=${result}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Note: we get chap secrets (passwords) in plaintext, and also store&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# them in the initrd.&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.session.auth.username"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chap=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "${chap}" -a "${chap}" != "&amp;lt;empty&amp;gt;" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chap="-u ${chap}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.session.auth.password"&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chap_pw="-w ${result}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;chap=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.session.auth.username_in"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;chap_in=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "${chap_in}" -a "${chap_in}" != "&amp;lt;empty&amp;gt;" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chap_in="-U ${chap_in}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.session.auth.password_in"&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;chap_in_pw="-W ${result}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;chap_in=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;iscsi_is_ibft() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;path=$1&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.name"; tgt_name=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.conn\[0\].address"; tgt_ipaddr=${result}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_get_rec_val $path "node.conn\[0\].port"; tgt_port=${result}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;found_name=no&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;found_ipaddr=no&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;found_port=no&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;res=$(iscsiadm -m fw 2&amp;gt;/dev/null | while read key equal value ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$key" == "node.name" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$value" == "$tgt_name" ] &amp;amp;&amp;amp; found_name=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elif [[ "$key" =~ "node.conn\[[[:alnum:]]+\].address" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$value" == "$tgt_ipaddr" ] &amp;amp;&amp;amp; found_ipaddr=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elif [[ "$key" =~ "node.conn\[[[:alnum:]]+\].port" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$value" == "$tgt_port" ] &amp;amp;&amp;amp; found_port=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$found_name" == "yes" -a \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"$found_ipaddr" == "yes" -a "$found_port" == "yes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$res" == "yes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit_iscsi_device() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dev=${1##iscsi_device_}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Attaching to iSCSI storage"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/iscsistart "$MNTIMAGE/sbin/iscsistart"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if iscsi_is_ibft $dev ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "/bin/iscsistart -b"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iscsi_set_parameters $dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# recid is not really used, just use 0 for it&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "/bin/iscsistart -t ${tgt_name} -i ${nit_name} \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-g ${tpgt} -a ${tgt_ipaddr} ${chap} ${chap_pw} \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;${chap_in} ${chap_in_pw}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;is_iscsi() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;path=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if echo $path | grep -q "/platform/host[0-9]*/session[0-9]*/target[0-9]*:[0-9]*:[0-9]*/[0-9]*:[0-9]*:[0-9]*:[0-9]*"; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handleiscsi() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vecho "Found iscsi component $1"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule iscsi_tcp&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule sd_mod&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# We call iscsi_set_parameters once here to figure out what network to&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# use (it sets tgt_ipaddr), and once again to emit iscsi values,&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# not very efficient.&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if iscsi_is_ibft $1 ; then&lt;/DIV&gt;
&lt;DIV&gt;findmodule iscsi_ibft&lt;/DIV&gt;
&lt;DIV&gt;for mac in $(cat /sys/firmware/ibft/ethernet*/mac) ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;netdev=$(/sbin/ip -o link list | grep $mac | \&lt;/DIV&gt;
&lt;DIV&gt;sed 's/^[^ ]\+ \([^ ]\+\): .*$/\1/g')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addnetdev $netdev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;iscsi_set_parameters $1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;netdev=$(/sbin/ip route get to $tgt_ipaddr | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sed 's|.*dev \(.*\).*|\1|g' | awk '{ print $1; exit }')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;addnetdev $netdev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;iscsi_devs="$iscsi_devs $1"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MODULES="$MODULES iscsi_device_$1"&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handleraid() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local start=0&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$noraid" -o ! -f /proc/mdstat ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;levels=$(awk "/^$1[ ]*:/ { print\$4 }" /proc/mdstat)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;devs=$(gawk "/^$1[ ]*:/ { print gensub(\"\\\\[[0-9]*\\\\]\",\"\",\"g\",gensub(\"^md.*raid[0-9]*\",\"\",\"1\")) }" /proc/mdstat)&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for level in $levels ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case $level in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;linear)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule linear&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;start=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;multipath)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule multipath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;start=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;raid[01456] | raid10)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $level&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;start=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error "raid level $level (in /proc/mdstat) not recognized"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findstoragedriver $devs&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$start" = 1 ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;raiddevices="$raiddevices $1"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return $start&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;resolve_dm() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# resolve device mapper nodes to something of the form /dev/mapper/foo&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [[ ! "$1" =~ ^dm- ]]; then&lt;/DIV&gt;
&lt;DIV&gt;echo $1&lt;/DIV&gt;
&lt;DIV&gt;return 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;majmin=$(cat /sys/block/$1/dev)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for dmdev in /dev/mapper/* ; do&lt;/DIV&gt;
&lt;DIV&gt;dmnum=$(get_numeric_dev dec $dmdev)&lt;/DIV&gt;
&lt;DIV&gt;if [ "$dmnum" = "$majmin" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;echo ${dmdev#/dev/}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;break&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handledm() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;major=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;minor=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while read dmstart dmend dmtype r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case "$dmtype" in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;crypt)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; slavedev=$(findall /sys/block -name dev \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; | while read device ; do \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo "$r3" \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| cmp -s $device &amp;amp;&amp;amp; echo $device ; \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; done \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | sed -e 's,.*/\([^/]\+\)/dev,\1,;s,!,/,' )&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;slavedev=$(resolve_dm ${slavedev##/dev/})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cryptsetup isLuks "/dev/$slavedev" 2&amp;gt;/dev/null || continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "device is LUKS, slave is $slavedev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;find_base_dm_mods&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule dm-crypt&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for mod in $(echo $r0 | tr ':-' ' &amp;nbsp;') ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule --skiperrors $mod&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmname=$(dmsetup info -j $major -m $minor -c --noheadings -o name)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;slavedev=$(resolve_dm $slavedev)&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# determine if $slavedev is an LV&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# &amp;nbsp;if so, add the device to latecryptodevs&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# &amp;nbsp;if not, add the device to cryptodevs&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;local vg=$(lvm.static lvs --ignorelockingfailure --noheadings -o vg_name /dev/$slavedev 2&amp;gt;/dev/null)&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$vg" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eval cryptolv${ncryptolvs}='"'/dev/$slavedev $dmname'"'&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;let ncryptolvs++&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elif grep -q "^$slavedev :" /proc/mdstat ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eval cryptoraid${ncryptoraids}='"'/dev/$slavedev $dmname'"'&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;let ncryptoraids++&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;eval cryptopart${ncryptoparts}='"'/dev/$slavedev $dmname'"'&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;let ncryptoparts++&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;let ncryptodevs++&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handlelvordev "/dev/$slavedev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done &amp;lt;&amp;lt; EOF&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$(dmsetup table -j $major -m $minor 2&amp;gt;/dev/null)&lt;/DIV&gt;
&lt;DIV&gt;EOF&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;dmmods_found="n"&lt;/DIV&gt;
&lt;DIV&gt;find_base_dm_mods()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ "$dmmods_found" == "n" ] || return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dm-mod&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# DM requires all of these to be there in case someone used the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# feature. &amp;nbsp;broken. &amp;nbsp;(#132001)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dm-mirror&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dm-zero&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dm-snapshot&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmmods_found="y"&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handlelvordev() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local vg=`lvm.static lvs --ignorelockingfailure --noheadings -o vg_name $1 2&amp;gt;/dev/null`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$vg" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vg=`echo $vg` # strip whitespace&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " $vg_list " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" $vg "*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vg_list="$vg_list $vg"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for device in `lvm.static vgdisplay --ignorelockingfailure -v $vg 2&amp;gt;/dev/null | sed -n 's/PV Name//p'`; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findstoragedriver ${device##/dev/}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findstoragedriver ${1##/dev/}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handlenetdev() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local dev=$1&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;source /etc/sysconfig/network&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -f /etc/sysconfig/network-scripts/ifcfg-$dev ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error "unable to find network device configuration for $dev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;source /etc/sysconfig/network-scripts/ifcfg-$dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ x"$BOOTPROTO" = x ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;error "bootproto not specified for $dev, assuming DHCP"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;BOOTPROTO=dhcp&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$IPADDR" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --ip $IPADDR"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$NETMASK" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --netmask $NETMASK"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$GATEWAY" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --gateway $GATEWAY"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$ETHTOOL_OPTS" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --ethtool \"$ETHTOOL_OPTS\""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$MTU" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --mtu $MTU"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$IPADDR" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$DOMAIN" ] &amp;amp;&amp;amp; DOMAIN=$(awk '/^search / { print gensub("^search ","",1) }' /etc/resolv.conf)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -z "$DNS1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DNS1=$(awk '/^nameserver / { ORS="" ; if (x &amp;gt; 0) print "," ; printf "%s", $2 ; x = 1}' /etc/resolv.conf)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -n "$DOMAIN" ] &amp;amp;&amp;amp; IPSTR="$IPSTR --domain \"$DOMAIN\""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$DNS1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$DNS2" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IPSTR="$IPSTR --dns $DNS1,$DNS2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IPSTR="$IPSTR --dns $DNS1"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;prenetwork=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$HWADDR" ]; then&lt;/DIV&gt;
&lt;DIV&gt;prenetwork="netname $HWADDR $dev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;network="network --device $dev --bootproto $BOOTPROTO $IPSTR"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$BOOTPROTO" = "dhcp" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;postnetwork="rename /var/lib/dhclient/dhclient.leases /var/lib/dhclient/dhclient-$dev.leases"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DHCPDEVS="$DHCPDEVS $dev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mkdir -p $MNTIMAGE/var/lib/dhclient&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;addnetdev() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dev=$1&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;vecho "Adding network device $dev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findnetdriver $dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MODULES="$MODULES network_device_$netdev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_list="$net_list $netdev"&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;handlenfs() {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;remote=${1%%:*}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;remoteip=$(host $remote | awk '/ address / { print $4 }')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# assume, if it didn't resolve, that it's an IP&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$remoteip" ] &amp;amp;&amp;amp; remoteip=$remote&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;netdev=`/sbin/ip route get to $remoteip |sed 's|.*dev \(.*\).*|\1|g' |awk '{ print $1; exit }'`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;addnetdev $netdev&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;while [ $# -gt 0 ]; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case $1 in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--fstab*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--fstab=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fstab=${1##--fstab=}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fstab=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--with-usb*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--with-usb=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usbmodule=${1##--with-usb=}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usbmodule="usb-storage"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;basicmodules="$basicmodules $usbmodule"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;unset usbmodule&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--without-usb)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;withusb=0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--without-multipath)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;withmpath=0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--without-dmraid)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;withdmraid=0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--with*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--with=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=${1##--with=}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;basicmodules="$basicmodules $modname"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--builtin*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--builtin=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=${1##--builtin=}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;builtins="$builtins $modname"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--version)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo "mkinitrd: version $VERSION"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exit 0&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-v)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;verbose=-v&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--nocompress)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;compress=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--ifneeded)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# legacy&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-f)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;force=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--preload*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--preload=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=${1##--preload=}&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modname=$2&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PREMODS="$PREMODS $modname"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--force-scsi-probe)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;forcescsi=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--omit-scsi-modules)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PRESCSIMODS=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;noscsi=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--force-raid-probe)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;forceraid=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--omit-raid-modules)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;noraid=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--force-lvm-probe)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;forcelvm=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--omit-lvm-modules)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;nolvm=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--force-ide-probe)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;forceide=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--image-version)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;img_vers=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--allow-missing)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;allowmissing=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--net-dev*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--net-dev=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PREINTERFACES="$PREINTERFACES ${1##--net-dev=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PREINTERFACES="$PREINTERFACES $2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--noresume)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;noresume=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--rootdev*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--rootdev=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdev="${1##--rootdev=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdev="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--rootfs*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--rootfs=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootfs="${1##--rootfs=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootfs="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--rootopts*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--rootopts=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootopts="${1##--rootopts=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootopts="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--loopdev*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--loopdev=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopdev="${1##--loopdev=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopdev="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--loopfs*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--loopfs=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopfs="${1##--loopfs=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopfs="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--loopopts*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--loopopts=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopopts="${1##--loopopts=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;loopopts="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;--looppath*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$1" != "${1##--looppath=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;looppath="${1##--looppath=}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;looppath="$2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;--help)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usage -n&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -z "$target" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;target=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elif [ -z "$kernel" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;kernel=$1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usage&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$target" -o -z "$kernel" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;usage&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$img_vers" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;target="$target-$kernel"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$force" -a -f $target ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "$target already exists."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$forcescsi" -a -n "$noscsi" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "Can't both force scsi probe and omit scsi modules"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$forceraid" -a -n "$noraid" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "Can't both force raid probe and omit raid modules"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$forcelvm" -a -n "$nolvm" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "Can't both force LVM probe and omit LVM modules"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ ! -d /lib/modules/$kernel ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error 'No modules available for kernel "'${kernel}'".'&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ $UID != 0 ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "mkinitrd must be run as root."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;vecho "Creating initramfs"&lt;/DIV&gt;
&lt;DIV&gt;modulefile=/etc/modprobe.conf&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# find a temporary directory which doesn't use tmpfs&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$loopfs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TMPDIR="/tmp"&lt;/DIV&gt;
&lt;DIV&gt;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;TMPDIR=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for t in /tmp /var/tmp /root ${PWD}; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ ! -d $t ]; then continue; fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if ! access -w $t ; then continue; fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fs=$(df -T $t 2&amp;gt;/dev/null | awk '{line=$1;} END {printf $2;}')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$fs" != "tmpfs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TMPDIR=$t&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$TMPDIR" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "no temporary directory could be found."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ $TMPDIR = "/root" -o $TMPDIR = "${PWD}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "WARNING: using $TMPDIR for temporary files"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for n in $PREMODS; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $n&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for n in $PREINTERFACES ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findnetdriver $n&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MODULES="$MODULES network_device_$n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;net_list="$net_list $n"&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$withusb" -eq 1 ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule ehci-hcd&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule ohci-hcd&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule uhci-hcd&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "x$PROBE" == "xyes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$rootfs" ] &amp;amp;&amp;amp; rootfs=$(awk '{ if ($1 !~ /^[ \t]*#/ &amp;amp;&amp;amp; $2 == "/") { print $3; }}' $fstab)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$rootopts" ] &amp;amp;&amp;amp; rootopts=$(awk '{ if ($1 !~ /^[ \t]*#/ &amp;amp;&amp;amp; $2 == "/") { print $4; }}' $fstab)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$rootopts" ] &amp;amp;&amp;amp; rootopts="defaults"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# in case the root filesystem is modular&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -${rootfs}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ -z "$rootdev" ] &amp;amp;&amp;amp; rootdev=$(awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' $fstab)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# check if it's nfsroot&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$rootfs" == "nfs" -a "x$net_list" == "x" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handlenfs $rootdev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# check if it's root by label&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$rootdev" != "${rootdev##LABEL=}" -o \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"$rootdev" != "${rootdev##UUID=}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootopts=$(echo $rootopts | sed -e 's/^r[ow],//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,_netdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/_netdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,_rnetdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/_rnetdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,r[ow],$//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,r[ow],/,/' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/^r[ow]$/defaults/' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/$/,ro/')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;devname=$(resolve_device_name $rootdev)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;majmin=$(get_numeric_dev dec $devname)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ "$devname" =~ ^/dev/mapper/ ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Found root device $devname for $rootdev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdev=$devname&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;elif [ -n "$majmin" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dev=$(findall /sys/block -name dev | while read device ; do \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;echo "$majmin" | cmp -s $device &amp;amp;&amp;amp; echo $device ; done \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| sed -e 's,.*/\([^/]\+\)/dev,\1,' )&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$dev" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Found root device $dev for $rootdev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdev=$dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootopts=$(echo $rootopts | sed -e 's/^r[ow],//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,_netdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/_netdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,_rnetdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/_rnetdev//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,r[ow],$//' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/,r[ow],/,/' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/^r[ow]$/defaults/' \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-e 's/$/,ro/')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;[ "$rootfs" != "nfs" ] &amp;amp;&amp;amp; handlelvordev $rootdev&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# find the first swap dev which would get used for swsusp&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;swsuspdev=$(awk '/^[ \t]*[^#]/ { if ($3 == "swap") { print $1; exit }}' $fstab)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$swsuspdev" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ "$swsuspdev" =~ ^(LABEL=|UUID=) ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;swsuspdev=$(resolve_device_name $swsuspdev)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handlelvordev $swsuspdev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$forcescsi" -o -z "$noscsi" -a "x$PROBE" == "xyes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -f $modulefile ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;modulefile=/etc/conf.modules&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f $modulefile ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;scsimodules=`grep "alias[[:space:]]\+scsi_hostadapter" $modulefile | grep -v '^[ ]*#' | LC_ALL=C sort -u | awk '{ print $3 }'`&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$scsimodules" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for n in $scsimodules; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# for now allow scsi modules to come from anywhere. &amp;nbsp;There are some&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# RAID controllers with drivers in block/&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule $n&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# If we have ide devices and module ide, do the right thing&lt;/DIV&gt;
&lt;DIV&gt;ide=/proc/ide/ide*&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$forceide" -o -n "$ide" -a "x$PROBE" == "xyes" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -ide-disk&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# If we have dasd devices, include the necessary modules (S/390)&lt;/DIV&gt;
&lt;DIV&gt;if [ "x$PROBE" == "xyes" -a -d /proc/dasd ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dasd_mod&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dasd_eckd_mod&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dasd_fba_mod&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# Loopback root support&lt;/DIV&gt;
&lt;DIV&gt;# loopdev : device or nfs server:path file is on&lt;/DIV&gt;
&lt;DIV&gt;# looppath : filename&lt;/DIV&gt;
&lt;DIV&gt;# loopfs : filesystem of loopdev&lt;/DIV&gt;
&lt;DIV&gt;# loopots : options to mount loopfs&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "${loopfs}" ] || [[ "$rootopts" =~ "loop" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; # FIXME: probe this somehow?&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;rootdev=/dev/loop0&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;[ -z "$rootopts" ] &amp;amp;&amp;amp; rootopts="defaults"&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findmodule loop&lt;/DIV&gt;
&lt;DIV&gt;findmodule -${loopfs}&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$loopfs" == "nfs" -a "x$net_list" == "x" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;handlenfs $loopdev&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;# FIXME: label support&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;[ "$loopfs" != "nfs" ] &amp;amp;&amp;amp; handlelvordev $loopdev&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# If we use LVM or dm-based raid, include dm-mod&lt;/DIV&gt;
&lt;DIV&gt;testdm=""&lt;/DIV&gt;
&lt;DIV&gt;[ -n "$vg_list" ] &amp;amp;&amp;amp; testdm="yes"&lt;/DIV&gt;
&lt;DIV&gt;[ -n "$forceraid" -o -n "$forcelvm" ] &amp;amp;&amp;amp; testdm="yes"&lt;/DIV&gt;
&lt;DIV&gt;[ -z "$nolvm" -o -z "$noraid" ] &amp;amp;&amp;amp; testdm="yes"&lt;/DIV&gt;
&lt;DIV&gt;[ "x$PROBE" != "xyes" ] &amp;amp;&amp;amp; testdm=""&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;MNTIMAGE=`mktemp -d ${TMPDIR}/initrd.XXXXXX`&lt;/DIV&gt;
&lt;DIV&gt;IMAGE=`mktemp ${TMPDIR}/initrd.img.XXXXXX`&lt;/DIV&gt;
&lt;DIV&gt;RCFILE=$MNTIMAGE/init&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;cemit()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;cat &amp;gt;&amp;gt; $RCFILE&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;NONL=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$1" == "-n" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NONL="-n"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;shift&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;echo $NONL "$@" &amp;gt;&amp;gt; $RCFILE&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;use_multipath=1&lt;/DIV&gt;
&lt;DIV&gt;use_emc=1&lt;/DIV&gt;
&lt;DIV&gt;use_xdr=0&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$testdm" -a -x /sbin/dmsetup -a -e /dev/mapper/control ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;dmout=$(/sbin/dmsetup ls 2&amp;gt;/dev/null)&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$dmout" != "No devices found" -a "$dmout" != "" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sysroot=$(find_dm_in_sysblock ${rootdev})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdevs=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "${withmpath}" -eq 1 -a -n "${sysroot}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for rd in ${sysroot} ; do&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;somedeps=$(find_mpath_deps ${rd})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ "$?" == "0" ] &amp;amp;&amp;amp; use_emc=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$somedeps" ] &amp;amp;&amp;amp; continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for dep in ${somedeps} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;majmin=$(get_numeric_dev dec ${dep})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[[ ${majmin} =~ ^9: ]] &amp;amp;&amp;amp; continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[[ ${dep} =~ ^/dev/xvd.+ ]] &amp;amp;&amp;amp; continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " ${rootdevs} " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" ${dep} "*) continue ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*) rootdevs="${rootdevs} ${dep}" ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -z "$rootdevs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;rootdevs="$rootdev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;root_wwids=""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "${withmpath}" -eq "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for rootdev in ${rootdevs} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;disk=$(find_dm_in_sysblock ${rootdev} | sed -e 's,^/sys,,')&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;wwid=$(/sbin/scsi_id -g -u -s ${disk})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -z "${wwid}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# Could be EMC unit requiring special option&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;wwid=$(/sbin/scsi_id -g -ppre-spc3-83 -u -s ${disk})&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "${wwid}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case " ${root_wwids} " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" ${wwid} "*) continue ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*) root_wwids="${root_wwids} ${wwid}" ;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$root_wwids" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;use_multipath=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;find_base_dm_mods&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;# If we use dm-multipath devices, include the needed modules&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$use_multipath" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule -dm-multipath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule -dm-round-robin&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "$use_emc" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findmodule -dm-emc&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# could be using xDR multipath on s390&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "${ARCH}" = "s390" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -x /sbin/xdrgetuid ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;dasdlist="$(cd /dev ; /bin/ls -1 dasd?)"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ ! -z "${dasdlist}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for dasddev in ${dasdlist} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ ! -z "$(/sbin/xdrgetuid -p ${dasddev} | grep "^xdr")" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;use_multipath=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;use_xdr=1&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;break&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;find_base_dm_mods&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule multipath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule dm-multipath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule -dm-round-robin&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$withdmraid" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule dm-mem-cache&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule dm-region_hash&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule dm-message&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule dm-raid45&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for n in $basicmodules; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule $n&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for n in $CONFMODS; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;findmodule $n&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;vecho "Using modules: $MODULES"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$MNTIMAGE" -o -z "$IMAGE" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;error "Error creating temporaries. &amp;nbsp;Try again"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;exit 1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/lib/firmware&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/bin&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/etc&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/dev&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/proc&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/sys&lt;/DIV&gt;
&lt;DIV&gt;mkdir -p $MNTIMAGE/sysroot&lt;/DIV&gt;
&lt;DIV&gt;ln -s bin $MNTIMAGE/sbin&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -e /etc/fstab.sys ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /etc/fstab.sys "$MNTIMAGE/etc/fstab.sys"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;inst /sbin/nash "$MNTIMAGE/bin/nash"&lt;/DIV&gt;
&lt;DIV&gt;inst /sbin/insmod.static "$MNTIMAGE/bin/insmod"&lt;/DIV&gt;
&lt;DIV&gt;ln -s /sbin/nash $MNTIMAGE/sbin/modprobe&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for MODULE in $MODULES; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [[ "$MODULE" =~ "^iscsi_device_" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [[ "$MODULE" =~ "^network_device_" ]] ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -x /usr/bin/strip ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/usr/bin/strip -g $verbose $MODULE -o $MNTIMAGE/lib/$(basename $MODULE)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp $verbose -a $MODULE $MNTIMAGE/lib&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for fw in $(/sbin/modinfo -F firmware $MODULE 2&amp;gt;/dev/null); do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -f /lib/firmware/$fw ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp $verbose -a /lib/firmware/$fw $MNTIMAGE/lib/firmware/&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# mknod'ing the devices instead of copying them works both with and&lt;/DIV&gt;
&lt;DIV&gt;# without devfs...&lt;/DIV&gt;
&lt;DIV&gt;mkdir $MNTIMAGE/dev/mapper&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/ram0 b 1 0&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/ram1 b 1 1&lt;/DIV&gt;
&lt;DIV&gt;ln -sf ram1 $MNTIMAGE/dev/ram&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/null c 1 3&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/zero c 1 5&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/systty c 4 0&lt;/DIV&gt;
&lt;DIV&gt;if ! echo "$(uname -m)" | grep -q "s390"; then&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mknod $MNTIMAGE/dev/tty$i c 4 $i&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;for i in 0 1 2 3 ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mknod $MNTIMAGE/dev/ttyS$i c 4 $(($i + 64))&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/tty c 5 0&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/console c 5 1&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/ptmx c 5 2&lt;/DIV&gt;
&lt;DIV&gt;mknod $MNTIMAGE/dev/rtc c 10 135&lt;/DIV&gt;
&lt;DIV&gt;if [ "$(uname -m)" == "ia64" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mknod $MNTIMAGE/dev/efirtc c 10 136&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# FIXME -- this can really go poorly with clvm or duplicate vg names.&lt;/DIV&gt;
&lt;DIV&gt;# nash should do lvm probing for us and write its own configs.&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$vg_list" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/lvm.static "$MNTIMAGE/bin/lvm"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f /etc/lvm/lvm.conf ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp $verbose --parents /etc/lvm/lvm.conf $MNTIMAGE/&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$use_multipath" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# For multipath command&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/multipath.static $MNTIMAGE/bin/multipath&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f /etc/multipath.conf ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst /etc/multipath.conf $MNTIMAGE/etc/multipath.conf&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f /var/lib/multipath/bindings ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst /var/lib/multipath/bindings $MNTIMAGE/var/lib/multipath/bindings&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/scsi_id $MNTIMAGE/bin/scsi_id&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /etc/scsi_id.config $MNTIMAGE/etc/scsi_id.config&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# This includes all mpath_prio checkers in the image (~2.5M)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Alternately we can only include those that are used by the&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# current mpath config. This would require users to rebuild&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# the initrd if migrating/adding controllers from different&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# storage vendors&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for M in /sbin/mpath_prio_*.static ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst ${M} $MNTIMAGE/${M%%.static};&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;mkdir -p $MNTIMAGE/tmp&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# For kpartx command which creates device maps for disk partitions&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# and creates device files&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/dmsetup.static $MNTIMAGE/bin/dmsetup&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/kpartx.static $MNTIMAGE/bin/kpartx&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$use_xdr" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/xdrgetuid $MNTIMAGE/bin/xdrgetuid&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/xdrgetprio $MNTIMAGE/bin/xdrgetprio&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f /etc/xdrdevices.conf ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst /etc/xdrdevices.conf $MNTIMAGE/etc/xdrdevices.conf&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# ugly hack for starters because the xdr-tools are not static&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /lib64/libc.so.6 $MNTIMAGE/lib64/libc.so.6&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /lib/ld64.so.1 $MNTIMAGE/lib/ld64.so.1&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$withdmraid" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Only dmraid is needed to set up dmraid volume&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/dmraid.static "$MNTIMAGE/bin/dmraid"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/kpartx.static "$MNTIMAGE/bin/kpartx"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;findkeymap () {&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;local MAP=$1&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ ! -f "$MAP" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MAP=$(find /lib/kbd/keymaps -type f -name $MAP -o -name $MAP.\* | head -n1)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case " $KEYMAPS " in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*" $MAP "*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KEYMAPS="$KEYMAPS $MAP"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;case $MAP in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*.gz)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cmd=zgrep&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*.bz2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cmd=bzgrep&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cmd=grep&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for INCL in $($cmd "^include " $MAP | cut -d' ' -f2 | tr -d '"'); do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for FN in $(find /lib/kbd/keymaps -type f -name $INCL\*); do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findkeymap $FN&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ $ncryptodevs -ne 0 ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;inst /sbin/cryptsetup "$MNTIMAGE/sbin/cryptsetup"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KEYTABLE=&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;KEYMAP=&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;LOADKEYS=&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -f /etc/sysconfig/console/default.kmap ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;KEYMAP=/etc/sysconfig/console/default.kmap&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -f /etc/sysconfig/keyboard ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. /etc/sysconfig/keyboard&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$KEYTABLE" -a -d "/lib/kbd/keymaps" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;KEYMAP="$KEYTABLE.map"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$KEYMAP" -a -x /bin/loadkeys.static ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOADKEYS=loadkeys&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -f /etc/sysconfig/i18n ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;. /etc/sysconfig/i18n&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ "${LANG}" != "${LANG%%.UTF-8}" -o "${LANG}" != "${LANG%%.utf8}" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;LOADKEYS="loadkeys -u"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst /bin/loadkeys.static "$MNTIMAGE/bin/loadkeys"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;findkeymap $KEYMAP&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for FN in $KEYMAPS; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inst $FN "$MNTIMAGE$FN"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;case "$FN" in&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*.gz)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;gzip -d "$MNTIMAGE$FN"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*.bz2)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bzip2 -d "$MNTIMAGE$FN"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;esac&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Not including any keymaps"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;echo -n &amp;gt;| $RCFILE&lt;/DIV&gt;
&lt;DIV&gt;cemit &amp;lt;&amp;lt; EOF&lt;/DIV&gt;
&lt;DIV&gt;#!/bin/nash&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;mount -t proc /proc /proc&lt;/DIV&gt;
&lt;DIV&gt;setquiet&lt;/DIV&gt;
&lt;DIV&gt;echo Mounting proc filesystem&lt;/DIV&gt;
&lt;DIV&gt;echo Mounting sysfs filesystem&lt;/DIV&gt;
&lt;DIV&gt;mount -t sysfs /sys /sys&lt;/DIV&gt;
&lt;DIV&gt;echo Creating /dev&lt;/DIV&gt;
&lt;DIV&gt;mount -o mode=0755 -t tmpfs /dev /dev&lt;/DIV&gt;
&lt;DIV&gt;mkdir /dev/pts&lt;/DIV&gt;
&lt;DIV&gt;mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts&lt;/DIV&gt;
&lt;DIV&gt;mkdir /dev/shm&lt;/DIV&gt;
&lt;DIV&gt;mkdir /dev/mapper&lt;/DIV&gt;
&lt;DIV&gt;echo Creating initial device nodes&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/null c 1 3&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/zero c 1 5&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/systty c 4 0&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/tty c 5 0&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/console c 5 1&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/ptmx c 5 2&lt;/DIV&gt;
&lt;DIV&gt;mknod /dev/rtc c 10 135&lt;/DIV&gt;
&lt;DIV&gt;EOF&lt;/DIV&gt;
&lt;DIV&gt;if [ "$(uname -m)" == "ia64" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "mknod /dev/efirtc c 10 136"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# XXX really we need to openvt too, in case someting changes the&lt;/DIV&gt;
&lt;DIV&gt;# color palette and then changes vts on fbcon before gettys start.&lt;/DIV&gt;
&lt;DIV&gt;# (yay, fbcon bugs!)&lt;/DIV&gt;
&lt;DIV&gt;if ! echo "$(uname -m)" | grep -q "s390"; then&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "mknod /dev/tty$i c 4 $i"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for i in 0 1 2 3 ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "mknod /dev/ttyS$i c 4 $(($i + 64))"&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Setting up hotplug."&lt;/DIV&gt;
&lt;DIV&gt;emit "hotplug"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Creating block device nodes."&lt;/DIV&gt;
&lt;DIV&gt;emit "mkblkdevs"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;usb_mounted="prep"&lt;/DIV&gt;
&lt;DIV&gt;scsi=""&lt;/DIV&gt;
&lt;DIV&gt;for MODULE in $MODULES; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;text=""&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [[ "$MODULE" =~ "^iscsi_device_" ]] ; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit_iscsi_device "${MODULE##iscsi_device_}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [[ "$MODULE" =~ "^network_device_" ]] ; then&lt;/DIV&gt;
&lt;DIV&gt;netdev="${MODULE##network_device_}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "echo Bringing up $netdev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handlenetdev "$netdev"&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$prenetwork" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit $prenetwork&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit $network&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [ -n "$postnetwork" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit $postnetwork&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;module=`echo $MODULE | sed -e "s|.*/||" -e "s/.k\?o$//"`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fullmodule=`echo $MODULE | sed "s|.*/||"`&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;options=`sed -n -e ':a' -e '/\\\\$/N; s/\\\\\n//; ta' -e "s/^options[ ][ ]*$module[ ][ ]*//p" $modulefile 2&amp;gt;/dev/null`&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ -n "$options" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Adding module $module$text with options $options"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vecho "Adding module $module$text"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# we mount usbfs before the first module *after* the HCDs&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$usb_mounted" == "prep" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ "$module" =~ ".hci[_-]hcd" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usb_mounted="no"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;elif [ "$usb_mounted" == "no" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if [[ ! "$module" =~ ".hci[_-]hcd" ]]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;usb_mounted=yes&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "mount -t usbfs /proc/bus/usb /proc/bus/usb"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo \"Loading $fullmodule module\""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "insmod /lib/$fullmodule $options"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# Hack - we need a delay after loading usb-storage to give things&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;# &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;time to settle down before we start looking a block devices&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$module" = "usb-storage" -o "$module" = "ub" ]; then&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Waiting for driver initialization."&lt;/DIV&gt;
&lt;DIV&gt;emit "stabilized /proc/bus/usb/devices"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$module" = "sbp2" ]; then&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Waiting for driver initialization."&lt;/DIV&gt;
&lt;DIV&gt;emit "stabilized /sys/bus/ieee1394/drivers/sbp2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$module" = "scsi_mod" ]; then&lt;/DIV&gt;
&lt;DIV&gt;scsi="yes"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$module" = "zfcp" -a -f /etc/zfcp.conf ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "echo Waiting 2 seconds for driver initialization."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "sleep 2"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cat /etc/zfcp.conf | grep -v "^#" | tr "A-Z" "a-z" | while read DEVICE TWO THREE FOUR FIVE; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;if [ -z "$FIVE" ]; then&lt;/DIV&gt;
&lt;DIV&gt;WWPN=$TWO&lt;/DIV&gt;
&lt;DIV&gt;FCPLUN=$THREE&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;else&lt;/DIV&gt;
&lt;DIV&gt;WWPN=$THREE&lt;/DIV&gt;
&lt;DIV&gt;FCPLUN=$FIVE&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp; &amp;nbsp;cemit &amp;lt;&amp;lt;EOF&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;echo -n $WWPN &amp;gt; /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/port_add&lt;/DIV&gt;
&lt;DIV&gt;echo -n $FCPLUN &amp;gt; /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/$WWPN/unit_add&lt;/DIV&gt;
&lt;DIV&gt;echo -n 1 &amp;gt; /sys/bus/ccw/drivers/zfcp/${DEVICE/0x/}/online&lt;/DIV&gt;
&lt;DIV&gt;EOF&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;unset usb_mounted&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$scsi" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Waiting for driver initialization."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "stabilized --hash --interval 1000 /proc/scsi/scsi"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;# HACK: module loading + device creation isn't necessarily synchronous...&lt;/DIV&gt;
&lt;DIV&gt;# this will make sure that we have all of our devices before trying&lt;/DIV&gt;
&lt;DIV&gt;# things like RAID or LVM&lt;/DIV&gt;
&lt;DIV&gt;emit "mkblkdevs"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;#if [ -n "$vg_list" ]; then&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp;emit "echo Making device-mapper control node"&lt;/DIV&gt;
&lt;DIV&gt;# &amp;nbsp; &amp;nbsp;emit "mkdmnod"&lt;/DIV&gt;
&lt;DIV&gt;#fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$use_multipath" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Creating multipath devices"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "/bin/multipath -v 0"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if [ "$use_xdr" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Setting up XDR dm device"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "/bin/multipath -v 0"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;fi&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "dmsetup ls --target multipath --exec 'kpartx -a -p p'"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ "$withdmraid" == "1" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Scanning and configuring dmraid supported devices"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for x in $(/sbin/dmraid.static -ay -i -p -t 2&amp;gt;/dev/null | \&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; egrep -iv "^no " | awk -F ':' '{ print $1 }') ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dmname=$(resolve_dm_name $x)&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;[ -z "$dmname" ] &amp;amp;&amp;amp; continue&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "dmraid -ay -i -p \"$dmname\""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "kpartx -a -p p \"/dev/mapper/$dmname\""&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emitcrypto()&lt;/DIV&gt;
&lt;DIV&gt;{&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Setting up disk encryption: $1"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "cryptsetup luksOpen $1 $2"&lt;/DIV&gt;
&lt;DIV&gt;}&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$KEYMAP" -a -n "$LOADKEYS" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Loading keymap."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "$LOADKEYS $KEYMAP"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for cryptdev in ${!cryptopart@} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emitcrypto `eval echo '$'$cryptdev`&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$raiddevices" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;for dev in $raiddevices; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cp -a /dev/${dev} $MNTIMAGE/dev&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;emit "raidautorun /dev/${dev}"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;done&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for cryptdev in ${!cryptoraid@} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emitcrypto `eval echo '$'$cryptdev`&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$vg_list" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Scanning logical volumes"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "lvm vgscan --ignorelockingfailure"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Activating logical volumes"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "lvm vgchange -ay --ignorelockingfailure $vg_list"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for cryptdev in ${!cryptolv@} ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emitcrypto `eval echo '$'$cryptdev`&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -z "$noresume" -a -n "$swsuspdev" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "resume $swsuspdev"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$loopfs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Mounting loop backing store."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "mkdir /tmpmount"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "mount -t $loopfs -o ${loopopts:-defaults} $loopdev /tmpmount"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Creating loop device."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "losetup /dev/loop0 /tmpmount/$looppath"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Creating root device."&lt;/DIV&gt;
&lt;DIV&gt;# mkrootdev does "echo /dev/root /sysroot ext3 defaults,ro 0 0 &amp;gt;/etc/fstab"&lt;/DIV&gt;
&lt;DIV&gt;emit "mkrootdev -t $rootfs -o $rootopts $rootdev"&lt;/DIV&gt;
&lt;DIV&gt;rootdev=/dev/root&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Mounting root filesystem."&lt;/DIV&gt;
&lt;DIV&gt;emit "mount /sysroot"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;if [ -n "$loopfs" ]; then&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; emit "Cleaning up loop mount."&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; emit "umount /tmpmount"&lt;/DIV&gt;
&lt;DIV&gt;fi&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Setting up other filesystems."&lt;/DIV&gt;
&lt;DIV&gt;emit "setuproot"&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;for dev in $DHCPDEVS ; do&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "echo Copying DHCP lease for $dev"&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;emit "cp /var/lib/dhclient/dhclient-$dev.leases /sysroot/dev/.dhclient-$dev.leases"&lt;/DIV&gt;
&lt;DIV&gt;done&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;emit "echo Switching to 
