{"id":16368,"date":"2023-12-12T12:38:21","date_gmt":"2023-12-12T07:08:21","guid":{"rendered":"https:\/\/opstree.com\/blog\/\/?p=16368"},"modified":"2023-12-12T16:02:50","modified_gmt":"2023-12-12T10:32:50","slug":"kernel-patching-with-the-help-of-loop-script","status":"publish","type":"post","link":"https:\/\/opstree.com\/blog\/2023\/12\/12\/kernel-patching-with-the-help-of-loop-script\/","title":{"rendered":"Kernel Patching with the help of Loop Script"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"400\" src=\"https:\/\/opstree.com\/blog\/\/wp-content\/uploads\/2023\/12\/kernel.gif?w=800\" alt=\"\" class=\"wp-image-16670\" \/><\/figure>\n\n\n\n<p><strong>What is Kernel Patching?<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">The operating system kernel is the central component that controls system resources and enables hardware and software connection. Kernel patching is the act of changing or maintaining the kernel&#8217;s source code.<br><br><strong>When to choose this type of patching?<br><\/strong><br>Organizations that are thinking about kernel patching usually assess how well the available solutions work with the particular kernel version they are using, test extensively in a non-production setting, and set up reliable backup and rollback procedures to reduce risks in the production environment.<br><br>It&#8217;s critical to thoroughly evaluate the organization&#8217;s particular requirements and risks, as well as the advantages and disadvantages of kernel patching. Other considerations that might impact the choice include the organization&#8217;s overall risk tolerance, regulatory requirements, and how critical the systems are.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p><strong>The primary reasons for kernel patching are:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Bug Fixes:<\/strong> Kernel patches are frequently developed to fix errors in software, security flaws, or other kernel-related problems. When a defect is found, developers make the required code modifications in a patch to address the issue.<\/p>\n\n\n\n<p><strong>Security Updates:<\/strong> Kernel patching is crucial to apply security updates and close these vulnerabilities to protect the system from attacks.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Hardware Support:<\/strong> Support for new hardware components and devices must be introduced to the kernel as they are created. To make sure that the kernel recognizes and functions with new hardware, kernel patches may be developed.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Performance Enhancements:<\/strong> Kernel patches can be applied to add new features or enhance the kernel&#8217;s performance. These patches might improve the functionality of the kernel or optimize already-written code.<\/p>\n\n\n\n<p><strong>The process of kernel patching typically involves the following steps:<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Identification:<\/strong> Kernel developers and maintainers find problems, defects, or improvements that need to be patched.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Patch Creation:<\/strong> A patch file containing the precise modifications needed to fix the found problem or apply the intended improvement is made by a developer. Usually, this patch takes the form of a unified diff file that lists the lines of code that need to be added, changed, or eliminated.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Testing:<\/strong> To make sure the patch fixes the problem or adds the desired functionality, it is tested. It shouldn&#8217;t cause any regressions or new issues.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Distribution:<\/strong> Following testing and verification, the patch is either released to the general public or added to the official kernel source code.<\/p>\n\n\n\n<p class=\"has-text-align-justify\"><strong>Application:<\/strong> The updated kernel source code must be compiled and installed by end users or system administrators in order to apply the patch to their system&#8217;s kernel. As an alternative, users can make use of the pre-built kernel packages that their distribution offers.<\/p>\n\n\n\n<p><strong>Prerequisites required to accomplish the task<\/strong><\/p>\n\n\n\n<ol>\n<li>Login to the master host from where you can access all the hosts (means public key of this host should be present on all the hosts).<\/li>\n\n\n\n<li>Or you can use public-private key pair which can access all the hosts (passing private key while running commands).<\/li>\n<\/ol>\n\n\n\n<p>Example:<br>\n<code>loop \"-i &lt;private-key-path&gt; &lt;command to run&gt;\" patch-hosts<\/code><\/p>\n\n\n\n<p><strong>Steps to perform the patching process and obtain the latest kernel version<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">First create a loop script on the master host through which we can ssh all the required hosts<\/p>\n\n\n\n<p><strong>Loop Script:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">#!\/bin\/sh\nfor i in cat $2; do\n  echo\n  echo $i\n  ssh -oStrictHostKeyChecking=no -oKexAlgorithms=+diffie-hellman-group1-sha1 -q root@$i  $1\n  echo\ndone\n<\/pre>\n\n\n\n<p><strong>1. Check the current kernel version<\/strong><\/p>\n\n\n\n<p>First you can check the current kernel version of all the hosts list<\/p>\n\n\n\n<p><code>loop \"rpm -qa | grep kernel\" patch-hosts | tee current_kernel.out<\/code><\/p>\n\n\n\n<p><strong>loop:<\/strong> script to access all the hosts via ssh<br>\n<strong>patch-hosts:<\/strong> list of all the required patching hosts<br>\n<strong>current_kernel.out:<\/strong> output file to store the loop script results<\/p>\n\n\n\n<p><strong>2. Update the kernel version<\/strong><\/p>\n\n\n\n<p>Now you need to update the hosts with the latest kernel version available<br>\n<code>loop \"yum clean all ; yum -y update\" patch-hosts | tee update_kernel.out<\/code><\/p>\n\n\n\n<p><strong>3. Check the kernel versions<\/strong><\/p>\n\n\n\n<p>Now with below command check the kernel versions available on the hosts<\/p>\n\n\n\n<p><code>loop \"rpm -qa | grep kernel\" patch-hosts | tee list_of_kernel.out<\/code><\/p>\n\n\n\n<p><strong>4. Check filesystem<\/strong><\/p>\n\n\n\n<p>Now reboot the hosts so that hosts will update to new kernel version<\/p>\n\n\n\n<p><code>loop \"reboot\" patch-hosts | tee reboot.out<\/code><\/p>\n\n\n\n<p><strong>5. Reboot the hosts<\/strong><\/p>\n\n\n\n<p>Now reboot the hosts so that hosts will update to the new kernel version<\/p>\n\n\n\n<p><code>loop \"reboot\" patch-hosts | tee reboot.out<\/code><\/p>\n\n\n\n<p><strong>6. Check the current kernel release<\/strong><\/p>\n\n\n\n<p>When all machines come up after reboot, check the current kernel release on the required hosts<\/p>\n\n\n\n<p><code>loop \"uname -r\" patch-hosts | tee latest_kernel.out<\/code><\/p>\n\n\n\n<p><strong>7. Remove old kernels<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">To not be stuck in the boot disk out-of-space issue on the device, means \/boot is full, probably too many old kernels. The command below will remove all except the latest two kernels<\/p>\n\n\n\n<p><code>loop \"package-cleanup -y --oldkernels --count=2\" patch-hosts<\/code><\/p>\n\n\n\n<p><strong>8. Check core drops<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-justify\">On some gen10 HP hardware, there is a problem with the hp-health service, it will crash and dump cores under <code>\/<\/code> and fill the disk.<\/p>\n\n\n\n<p><code>loop \"ls \/ | grep -i core\" patch-hosts | tee corelist.out<\/code><\/p>\n\n\n\n<p><strong>9. Fix the core drops<\/strong><\/p>\n\n\n\n<p>If there are core drops, you can fix them with the below command<br><br> <code>loop \"systemctl disable hp-health.service ; systemctl stop hp-health.service ; rm -f \/core.*\" coredrophosts<\/code><\/p>\n\n\n\n<p class=\"has-text-align-justify\">Using parallel script in steps 2,4,5,7 and 9 will be useful<br><br><strong>Note: If you have a long list of patching hosts you can use parallel script instead of loop script which may save you time.<\/strong><br><br><strong>Parallel script:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-syntaxhighlighter-code\">#!\/bin\/sh\nfor i in `cat $2`; do\necho\necho $i\nssh -oStrictHostKeyChecking=no -oKexAlgorithms=+diffie-hellman-group1-sha1 -q &amp; root@$i\u00a0 $1 &amp;\necho\ndone\n<\/pre>\n\n\n\n<p class=\"has-text-align-justify\"><br><strong>Example: Using parallel script in step 2<\/strong><br><code>parallel \"yum clean all ; yum -y update\" patchhosts | tee update_kernel.out<\/code><br><br><strong>Caution:<\/strong><br><br>It is essential to use caution when applying kernel patches and to fully understand the goals and implications of each patch. It is also recommended to thoroughly test the patched kernel in a non-production environment before deploying it in a production environment.<br><br><strong>Conclusion:<\/strong><br><br>It&#8217;s crucial to remember that patching the kernel can be a tricky and intricate procedure that calls for a solid grasp of both the internal workings of the operating system and the kernel&#8217;s source code. To maintain system stability and security, users should often rely on official kernel updates and patches from their operating system distribution rather than writing their own.<\/p>\n\n\n\n<p><strong>Blog Pundits: <strong><a href=\"https:\/\/www.linkedin.com\/in\/sanjeevpandey18\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sanjeev Pandey<\/a><\/strong><a href=\"https:\/\/opstree.com\/blog\/\/author\/naveenverma023\/\"> <\/a>and <a href=\"https:\/\/opstree.com\/blog\/\/author\/sandeep7c51ad81ba\/\" target=\"_blank\" rel=\"noreferrer noopener\">Sandeep Rawat<\/a><\/strong><\/p>\n\n\n\n<p><strong>OpsTree is an End-to-End <a href=\"https:\/\/opstree.com\/services\/\" target=\"_blank\" rel=\"noreferrer noopener\">DevOps Solution<\/a> Provider.<\/strong><\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/opstree.com\/contact-us\/?utm_source=WordPress&amp;utm_medium=Blog&amp;utm_campaign=Kernel+Patching+with+the+help+of+Loop+Script\" target=\"_blank\" rel=\"noreferrer noopener\">Contact Us<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><strong>Connect with Us<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-social-links aligncenter is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-1 wp-block-social-links-is-layout-flex\"><li class=\"wp-social-link wp-social-link-linkedin  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.linkedin.com\/company\/opstree-solutions\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">LinkedIn<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-youtube  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/channel\/UCeLma6SpNYH7jjYKSBNSexw\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">YouTube<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-github  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/OpsTree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">GitHub<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-facebook  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/opstree\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Facebook<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-medium  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/medium.com\/buildpiper\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20.962,7.257l-5.457,8.867l-3.923-6.375l3.126-5.08c0.112-0.182,0.319-0.286,0.527-0.286c0.05,0,0.1,0.008,0.149,0.02 c0.039,0.01,0.078,0.023,0.114,0.041l5.43,2.715l0.006,0.003c0.004,0.002,0.007,0.006,0.011,0.008 C20.971,7.191,20.98,7.227,20.962,7.257z M9.86,8.592v5.783l5.14,2.57L9.86,8.592z M15.772,17.331l4.231,2.115 C20.554,19.721,21,19.529,21,19.016V8.835L15.772,17.331z M8.968,7.178L3.665,4.527C3.569,4.479,3.478,4.456,3.395,4.456 C3.163,4.456,3,4.636,3,4.938v11.45c0,0.306,0.224,0.669,0.498,0.806l4.671,2.335c0.12,0.06,0.234,0.088,0.337,0.088 c0.29,0,0.494-0.225,0.494-0.602V7.231C9,7.208,8.988,7.188,8.968,7.178z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Medium<\/span><\/a><\/li>\n\n<li class=\"wp-social-link wp-social-link-twitter  wp-block-social-link\"><a rel=\"noopener nofollow\" target=\"_blank\" href=\"https:\/\/twitter.com\/opstreedevops\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M22.23,5.924c-0.736,0.326-1.527,0.547-2.357,0.646c0.847-0.508,1.498-1.312,1.804-2.27 c-0.793,0.47-1.671,0.812-2.606,0.996C18.324,4.498,17.257,4,16.077,4c-2.266,0-4.103,1.837-4.103,4.103 c0,0.322,0.036,0.635,0.106,0.935C8.67,8.867,5.647,7.234,3.623,4.751C3.27,5.357,3.067,6.062,3.067,6.814 c0,1.424,0.724,2.679,1.825,3.415c-0.673-0.021-1.305-0.206-1.859-0.513c0,0.017,0,0.034,0,0.052c0,1.988,1.414,3.647,3.292,4.023 c-0.344,0.094-0.707,0.144-1.081,0.144c-0.264,0-0.521-0.026-0.772-0.074c0.522,1.63,2.038,2.816,3.833,2.85 c-1.404,1.1-3.174,1.756-5.096,1.756c-0.331,0-0.658-0.019-0.979-0.057c1.816,1.164,3.973,1.843,6.29,1.843 c7.547,0,11.675-6.252,11.675-11.675c0-0.178-0.004-0.355-0.012-0.531C20.985,7.47,21.68,6.747,22.23,5.924z\"><\/path><\/svg><span class=\"wp-block-social-link-label screen-reader-text\">Twitter<\/span><\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n","protected":false},"excerpt":{"rendered":"<p>What is Kernel Patching? The operating system kernel is the central component that controls system resources and enables hardware and software connection. Kernel patching is the act of changing or maintaining the kernel&#8217;s source code. When to choose this type of patching?Organizations that are thinking about kernel patching usually assess how well the available solutions &hellip; <a href=\"https:\/\/opstree.com\/blog\/2023\/12\/12\/kernel-patching-with-the-help-of-loop-script\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Kernel Patching with the help of Loop Script&#8221;<\/span><\/a><\/p>\n","protected":false},"author":242684335,"featured_media":29900,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"aside","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[28070474],"tags":[768739308,676319247,339504909,4996032],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/opstree.com\/blog\/wp-content\/uploads\/2025\/11\/DevSecOps-1.jpg","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfDBOm-4g0","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/16368"}],"collection":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/users\/242684335"}],"replies":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/comments?post=16368"}],"version-history":[{"count":25,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/16368\/revisions"}],"predecessor-version":[{"id":16718,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/posts\/16368\/revisions\/16718"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media\/29900"}],"wp:attachment":[{"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/media?parent=16368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/categories?post=16368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opstree.com\/blog\/wp-json\/wp\/v2\/tags?post=16368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}