elemental-toolkit/docs/customizing/runtime_persistent_changes/index.html

37 lines
50 KiB
HTML

<!doctype html><html itemscope itemtype=http://schema.org/WebPage lang=en class=no-js><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.111.0"><meta name=robots content="index, follow"><link rel="shortcut icon" href=https://rancher.github.io/elemental-toolkit/favicons/favicon.ico><link rel=apple-touch-icon href=https://rancher.github.io/elemental-toolkit/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-96x96.png sizes=96x96><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=https://rancher.github.io/elemental-toolkit/favicons/android-192x192.png sizes=192x192><title>Runtime persistent changes | Elemental toolkit</title><meta name=description content="Applying changes to Elemental images in runtime or “how to install a package in an immutable OS at runtime?”
"><meta property="og:title" content="Runtime persistent changes"><meta property="og:description" content="Applying changes to Elemental images in runtime or “how to install a package in an immutable OS at runtime?”
"><meta property="og:type" content="article"><meta property="og:url" content="https://rancher.github.io/elemental-toolkit/docs/customizing/runtime_persistent_changes/"><meta property="article:section" content="docs"><meta property="article:published_time" content="2023-08-31T00:00:00+00:00"><meta property="article:modified_time" content="2023-08-31T16:36:37+02:00"><meta property="og:site_name" content="Elemental toolkit"><meta itemprop=name content="Runtime persistent changes"><meta itemprop=description content="Applying changes to Elemental images in runtime or “how to install a package in an immutable OS at runtime?”
"><meta itemprop=datePublished content="2023-08-31T00:00:00+00:00"><meta itemprop=dateModified content="2023-08-31T16:36:37+02:00"><meta itemprop=wordCount content="451"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Runtime persistent changes"><meta name=twitter:description content="Applying changes to Elemental images in runtime or “how to install a package in an immutable OS at runtime?”
"><link rel=preload href=https://rancher.github.io/elemental-toolkit/scss/main.min.a80407f15f0a9ca809d4d1648db3520970d09b1c15cc2f5e6d5211dde876eb46.css as=style><link href=https://rancher.github.io/elemental-toolkit/scss/main.min.a80407f15f0a9ca809d4d1648db3520970d09b1c15cc2f5e6d5211dde876eb46.css rel=stylesheet integrity><script src=https://code.jquery.com/jquery-3.6.3.min.js integrity="sha512-STof4xm1wgkfm7heWqFJVn58Hm3EtS31XFaagaa8VMReCXAkQnJZ+jEy8PCC/iT18dFy95WcExNHFTqLyp72eQ==" crossorigin=anonymous></script>
<script defer src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script>
<link rel=stylesheet href=https://rancher.github.io/elemental-toolkit/css/prism.css><script async src="https://www.googletagmanager.com/gtag/js?id=UA-00000000-0"></script>
<script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","UA-00000000-0")}</script></head><body class=td-page><header><nav class="td-navbar navbar-dark js-navbar-scroll"><div class="container-fluid flex-column flex-md-row"><a class=navbar-brand href=https://rancher.github.io/elemental-toolkit/><span class="navbar-brand__logo navbar-logo"><svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 500" style="enable-background:new 0 0 500 500"><g><path style="fill:#fff" d="M116.8525 421.9722c-5.7041.0-10.3442-4.3127-10.3442-9.6129V88.183c0-5.3002 4.6401-9.6117 10.3442-9.6117H320.858c3.0347.0 9.3959.5498 11.7506 2.6302l.3545.3442 58.905 63.2912c2.3101 2.491 2.9202 8.4928 2.9202 11.3184v256.2039c0 5.3002-4.6407 9.6129-10.3436 9.6129H116.8525z"/><g><g><g><path style="fill:#767676" d="M384.4445 423.2066H116.852c-6.3839.0-11.5786-4.8658-11.5786-10.8474V88.1831c0-5.9804 5.1947-10.8461 11.5786-10.8461h204.0062c.377.0 9.2786.0329 12.568 2.9389l.3947.3833 58.9508 63.337c3.2135 3.4652 3.2514 11.7924 3.2514 12.1593v256.2036C396.0231 418.3408 390.8284 423.2066 384.4445 423.2066zM116.5079 411.9189c.0848.0278.1999.0531.3441.0531h267.5925c.1442.0.2581-.0253.3441-.0531V156.1556c-.0076-.9033-.3593-3.7347-.7034-5.0037l-57.6527-61.9416c-1.4651-.3176-4.4533-.6389-5.5742-.6389H116.852c-.143.0-.2594.024-.3441.0531V411.9189zm267.4533-261.149zM327.0321 89.371v.0013V89.371z"/></g></g></g><g><g><path style="fill:#5b7fc0" d="M189.0874 210.1754l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4473C177.5953 212.627 183.0601 210.1742 189.0874 210.1754zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 234.1722 197.0804 232.033z"/><path style="opacity:.3;fill:#fff" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/><g><defs><path id="SVGID_1_" d="M194.7376 237.6875c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 234.2399 196.1861 236.239 194.7376 237.6875z"/></defs><clipPath id="SVGID_2_"><use xlink:href="#SVGID_1_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_2_);fill:#fff" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/><path style="opacity:.13;clip-path:url(#SVGID_2_);fill:#020202" d="M190.0704 225.0237c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 225.7247 191.9774 225.0237 190.0704 225.0237z"/></g><g><defs><path id="SVGID_3_" d="M189.0898 210.176c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 212.6276 183.0612 210.176 189.0898 210.176zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 236.239 197.0839 234.2399 197.0839 232.0372z"/></defs><clipPath id="SVGID_4_"><use xlink:href="#SVGID_3_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_4_);fill:#5b7fc0" d="M172.6595 215.6045c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8475-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 209.1953 176.6171 211.647 172.6595 215.6045z"/></g></g><rect x="198.8952" y="225.1043" style="fill:#5b7fc0" width="122.6266" height="13.8671"/></g><g><path style="fill:#d95140" d="M189.0874 155.7611l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.0249 2.454-11.4897 6.4116-15.4473C177.5953 158.2128 183.0601 155.7599 189.0874 155.7611zm7.993 21.8577c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.2508 181.7667 197.0816 179.758 197.0804 177.6188z"/><path style="opacity:.3;fill:#fff" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/><g><defs><path id="SVGID_5_" d="M194.7376 183.2733c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 179.8256 196.1861 181.8248 194.7376 183.2733z"/></defs><clipPath id="SVGID_6_"><use xlink:href="#SVGID_5_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_6_);fill:#fff" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/><path style="opacity:.13;clip-path:url(#SVGID_6_);fill:#020202" d="M190.0704 170.6095c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9546.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.663-2.8588-6.116.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C193.7885 171.3104 191.9774 170.6095 190.0704 170.6095z"/></g><g><defs><path id="SVGID_7_" d="M189.0898 155.7617c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8066-21.8612-21.8613.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 158.2134 183.0612 155.7617 189.0898 155.7617zm7.9941 21.8613c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 181.8248 197.0839 179.8256 197.0839 177.623z"/></defs><clipPath id="SVGID_8_"><use xlink:href="#SVGID_7_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_8_);fill:#d95140" d="M172.6595 161.1903c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 154.7811 176.6171 157.2327 172.6595 161.1903z"/></g><rect x="198.8952" y="170.69" style="fill:#d95140" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#56a55c" d="M189.5379 264.6147l.0012-.0012c7.7751.0012 15.0294 4.1862 18.932 10.9235 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3304-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032-5.8394.0-11.3281-2.2733-15.458-6.4032-4.13-4.13-6.4032-9.6186-6.4056-15.4628.0012-6.0249 2.454-11.4897 6.4116-15.4472C178.0458 267.0663 183.5105 264.6135 189.5379 264.6147zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6538 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403C196.7013 290.6202 197.5321 288.6115 197.5309 286.4723z"/><path style="opacity:.3;fill:#fff" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/><g><defs><path id="SVGID_9_" d="M195.1881 292.1268c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.9989 7.9942-7.9941 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.5344 288.6792 196.6366 290.6783 195.1881 292.1268z"/></defs><clipPath id="SVGID_10_"><use xlink:href="#SVGID_9_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_10_);fill:#fff" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/><path style="opacity:.13;clip-path:url(#SVGID_10_);fill:#020202" d="M190.5209 279.463c-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7446-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9941 2.3802-1e-4 4.616 1.0833 6.1218 2.8788C194.239 280.164 192.4279 279.463 190.5209 279.463z"/></g><g><defs><path id="SVGID_11_" d="M189.5403 264.6153c7.7763.0 15.0283 4.1826 18.926 10.9151 1.9201 3.3135 2.9377 7.0987 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8613-12.0547.0024-21.8636-9.8065-21.8612-21.8613.0-6.0285 2.4516-11.492 6.4116-15.452C178.0482 267.0669 183.5117 264.6153 189.5403 264.6153zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9941.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.6366 290.6783 197.5344 288.6792 197.5344 286.4765z"/></defs><clipPath id="SVGID_12_"><use xlink:href="#SVGID_11_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_12_);fill:#56a55c" d="M173.11 270.0439c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8613 12.0547.0024 21.8636-9.797 21.8613-21.8613.0024-3.8474-1.0151-7.6326-2.9353-10.9462-3.8977-6.7325-11.1497-10.9151-18.926-10.9151C182.5311 263.6346 177.0676 266.0863 173.11 270.0439z"/></g></g><rect x="199.3456" y="279.5436" style="fill:#56a55c" width="122.6266" height="13.8671"/></g><g><g><path style="fill:#f1bc42" d="M189.0874 318.7208l.0012-.0012c7.7751.0012 15.0295 4.1862 18.932 10.9234 1.9177 3.3159 2.9305 7.1011 2.9293 10.9378.0 5.8394-2.2733 11.3305-6.4032 15.4604-4.1288 4.1288-9.6186 6.4032-15.458 6.4032s-11.328-2.2733-15.458-6.4032-6.4032-9.6186-6.4056-15.4628c.0012-6.025 2.454-11.4897 6.4116-15.4472C177.5953 321.1724 183.0601 318.7196 189.0874 318.7208zm7.993 21.8576c.0012-1.4042-.3687-2.7868-1.063-3.9887-1.4293-2.4684-4.0833-3.9995-6.9299-4.0019-4.4077.0024-7.993 3.5877-7.993 7.993.0 2.1356.832 4.1431 2.3427 5.6539 1.5083 1.5083 3.5159 2.3403 5.6503 2.3415 2.1356.0 4.1443-.8308 5.6539-2.3403S197.0816 342.7176 197.0804 340.5784z"/><path style="opacity:.3;fill:#fff" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/><g><defs><path id="SVGID_13_" d="M194.7376 346.2329c-1.4461 1.4461-3.4452 2.3439-5.6479 2.3439-4.4077-.0024-7.9918-3.5865-7.9942-7.9942.0024-4.4125 3.5937-7.999 7.9942-7.9942 2.8443.0 5.497 1.5323 6.924 3.9983.6991 1.2067 1.0702 2.5881 1.0702 3.9959C197.0839 342.7853 196.1861 344.7844 194.7376 346.2329z"/></defs><clipPath id="SVGID_14_"><use xlink:href="#SVGID_13_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_14_);fill:#fff" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/><path style="opacity:.13;clip-path:url(#SVGID_14_);fill:#020202" d="M190.0704 333.5691c-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0011 1.9547.7088 3.7452 1.8782 5.1354-1.7447-1.4674-2.8575-3.6631-2.8588-6.1161.0024-4.4125 3.5936-7.999 7.9942-7.9942 2.3802-1e-4 4.616 1.0834 6.1218 2.8788C193.7885 334.2701 191.9774 333.5691 190.0704 333.5691z"/></g><g><defs><path id="SVGID_15_" d="M189.0898 318.7214c7.7763.0 15.0283 4.1826 18.926 10.915 1.9201 3.3136 2.9377 7.0988 2.9353 10.9462.0024 12.0643-9.8065 21.8636-21.8613 21.8612-12.0547.0024-21.8636-9.8065-21.8612-21.8612.0-6.0285 2.4516-11.4921 6.4116-15.452C177.5977 321.173 183.0612 318.7214 189.0898 318.7214zm7.9941 21.8612c0-1.4078-.3711-2.7892-1.0702-3.9959-1.4269-2.466-4.0797-3.9983-6.924-3.9983-4.4005-.0048-7.9918 3.5817-7.9942 7.9942.0024 4.4077 3.5865 7.9918 7.9942 7.9942 2.2027.0 4.2018-.8978 5.6479-2.3439C196.1861 344.7844 197.0839 342.7853 197.0839 340.5826z"/></defs><clipPath id="SVGID_16_"><use xlink:href="#SVGID_15_" style="overflow:visible"/></clipPath><path style="clip-path:url(#SVGID_16_);fill:#f1bc42" d="M172.6595 324.15c-3.96 3.96-6.4116 9.4235-6.4116 15.452-.0024 12.0547 9.8066 21.8636 21.8613 21.8612 12.0547.0024 21.8636-9.797 21.8613-21.8612.0024-3.8474-1.0151-7.6327-2.9353-10.9462-3.8977-6.7324-11.1497-10.9151-18.926-10.9151C182.0806 317.7407 176.6171 320.1924 172.6595 324.15z"/></g></g><rect x="198.8952" y="333.6497" style="fill:#f1bc42" width="122.6266" height="13.8671"/></g></g></svg></span><span class=navbar-brand__name>Elemental toolkit</span></a><div class="td-navbar-nav-scroll ms-md-auto" id=main_navbar><ul class=navbar-nav><li class=nav-item><a class="nav-link active" href=https://rancher.github.io/elemental-toolkit/docs/><span>Documentation</span></a></li><li class=nav-item><a class=nav-link href=https://github.com/rancher/elemental-toolkit/releases target=_blank rel=noopener><i class='fab fa-github'></i><span>Github releases</span></a></li></ul></div><div class="d-none d-lg-block"><div class="td-search td-search--offline"><div class=td-search__icon></div><input type=search class="td-search__input form-control" placeholder="Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=https://rancher.github.io/elemental-toolkit/offline-search-index.621b939d4f22b12fd224ccc17839a3cf.json data-offline-search-base-href=https://rancher.github.io/elemental-toolkit/ data-offline-search-max-results=10></div></div></div></nav></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-xl-nowrap"><aside class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><div id=td-sidebar-menu class=td-sidebar__inner><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><div class="td-search td-search--offline"><div class=td-search__icon></div><input type=search class="td-search__input form-control" placeholder="Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=https://rancher.github.io/elemental-toolkit/offline-search-index.621b939d4f22b12fd224ccc17839a3cf.json data-offline-search-base-href=https://rancher.github.io/elemental-toolkit/ data-offline-search-max-results=10></div><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ms-3 fas fa-bars" type=button data-bs-toggle=collapse data-bs-target=#td-section-nav aria-controls=td-section-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav" id=td-section-nav><ul class="td-sidebar-nav__section pe-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-docs-li><a href=https://rancher.github.io/elemental-toolkit/docs/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section tree-root" id=m-docs><span>Documentation</span></a><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsgetting-started-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docsgetting-started><span>Getting Started</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsgetting-starteddownload-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/download/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsgetting-starteddownload><span>Download</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsgetting-startedinstall-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/install/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsgetting-startedinstall><span>Installing</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsgetting-startedupgrading-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/upgrading/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsgetting-startedupgrading><span>Upgrading</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsgetting-startedrecovery-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/recovery/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsgetting-startedrecovery><span>Recovery</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsgetting-starteddeploy-li><a href=https://rancher.github.io/elemental-toolkit/docs/getting-started/deploy/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsgetting-starteddeploy><span>Deploying</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-docscustomizing-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docscustomizing><span>Customizing</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingstages-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/stages/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingstages><span>Stages</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingconfiguration_persistency-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/configuration_persistency/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingconfiguration_persistency><span>Configuration persistency</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingembedded_features-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/embedded_features/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingembedded_features><span>Embedded configuration</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizinglogin-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/login/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizinglogin><span>Login</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingoem_configuration-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/oem_configuration/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingoem_configuration><span>OEM configuration</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child active-path" id=m-docscustomizingruntime_persistent_changes-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/runtime_persistent_changes/ class="align-left ps-0 active td-sidebar-link td-sidebar-link__page" id=m-docscustomizingruntime_persistent_changes><span class=td-sidebar-nav-active-item>Runtime persistent changes</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizinggeneral_configuration-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/general_configuration/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizinggeneral_configuration><span>General Configuration</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingupgrades-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/upgrades/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingupgrades><span>Upgrades</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingconfigure_grub-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/configure_grub/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingconfigure_grub><span>GRUB</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscustomizingselinux_support-li><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/selinux_support/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscustomizingselinux_support><span>SELinux Support</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docscreating-derivatives-li><a href=https://rancher.github.io/elemental-toolkit/docs/creating-derivatives/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docscreating-derivatives><span>Creating derivatives</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscreating-derivativespackage_stack-li><a href=https://rancher.github.io/elemental-toolkit/docs/creating-derivatives/package_stack/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscreating-derivativespackage_stack><span>Package stack</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscreating-derivativescreating_bootable_images-li><a href=https://rancher.github.io/elemental-toolkit/docs/creating-derivatives/creating_bootable_images/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscreating-derivativescreating_bootable_images><span>Creating bootable images</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscreating-derivativesbuild_disk-li><a href=https://rancher.github.io/elemental-toolkit/docs/creating-derivatives/build_disk/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscreating-derivativesbuild_disk><span>Build disk images with Elemental</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docscreating-derivativesbuild_iso-li><a href=https://rancher.github.io/elemental-toolkit/docs/creating-derivatives/build_iso/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docscreating-derivativesbuild_iso><span>Build ISOs</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsexamples-li><a href=https://rancher.github.io/elemental-toolkit/docs/examples/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docsexamples><span>Examples</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsexamplescreating_bootable_images-li><a href=https://rancher.github.io/elemental-toolkit/docs/examples/creating_bootable_images/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsexamplescreating_bootable_images><span>Creating bootable images</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsexamplescloud_config-li><a href=https://rancher.github.io/elemental-toolkit/docs/examples/cloud_config/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsexamplescloud_config><span>Cloud config examples</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsexamplesembedded_images-li><a href=https://rancher.github.io/elemental-toolkit/docs/examples/embedded_images/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsexamplesembedded_images><span>Creating embedded images</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docstutorials-li><a href=https://rancher.github.io/elemental-toolkit/docs/tutorials/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docstutorials><span>Tutorials</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docstutorialsk3s_and_fleet_on_vanilla_image_example-li><a href=https://rancher.github.io/elemental-toolkit/docs/tutorials/k3s_and_fleet_on_vanilla_image_example/ title="K3s + Fleet" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docstutorialsk3s_and_fleet_on_vanilla_image_example><span>K3s and Fleet</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docstutorialstrigger_upgrades_with_fleet-li><a href=https://rancher.github.io/elemental-toolkit/docs/tutorials/trigger_upgrades_with_fleet/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docstutorialstrigger_upgrades_with_fleet><span>Trigger upgrades with K3s and Fleet</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsreference-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docsreference><span>Reference</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferencecloud_init-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/cloud_init/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferencecloud_init><span>Cloud-init support</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferenceimmutable_rootfs-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/immutable_rootfs/ title="Immutable Root Filesystem" class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferenceimmutable_rootfs><span>Immutable Rootfs</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferencelayout-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/layout/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferencelayout><span>Runtime layout</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferencetroubleshooting-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/troubleshooting/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferencetroubleshooting><span>Troubleshooting</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferencebuilt_with_elemental-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/built_with_elemental/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferencebuilt_with_elemental><span>Built with Elemental</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferencehigh_level_architecture-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/high_level_architecture/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferencehigh_level_architecture><span>High level architecture</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsreferenceinstallation_state-li><a href=https://rancher.github.io/elemental-toolkit/docs/reference/installation_state/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsreferenceinstallation_state><span>Installation State</span></a></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsdevelopment-li><a href=https://rancher.github.io/elemental-toolkit/docs/development/ class="align-left ps-0 td-sidebar-link td-sidebar-link__section" id=m-docsdevelopment><span>Development</span></a><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsdevelopmentcreating_derivatives-li><a href=https://rancher.github.io/elemental-toolkit/docs/development/creating_derivatives/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsdevelopmentcreating_derivatives><span>Creating derivatives</span></a></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsdevelopmentdependencies-li><a href=https://rancher.github.io/elemental-toolkit/docs/development/dependencies/ class="align-left ps-0 td-sidebar-link td-sidebar-link__page" id=m-docsdevelopmentdependencies><span>Build requirements</span></a></li></ul></li></ul></li></ul></nav></div></aside><aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none"><div class="td-page-meta ms-2 pb-1 pt-2 mb-0"><a href=https://github.com/rancher/elemental-toolkit/tree/main/docs/content/en/docs/Customizing/runtime_persistent_changes.md class=td-page-meta--view target=_blank rel=noopener><i class="fa-solid fa-file-lines fa-fw"></i> View page source</a>
<a href=https://github.com/rancher/elemental-toolkit/edit/main/docs/content/en/docs/Customizing/runtime_persistent_changes.md class=td-page-meta--edit target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Edit this page</a>
<a href="https://github.com/rancher/elemental-toolkit/new/main/docs/content/en/docs/Customizing/runtime_persistent_changes.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" class=td-page-meta--child target=_blank rel=noopener><i class="fa-solid fa-pen-to-square fa-fw"></i> Create child page</a>
<a href="https://github.com/rancher/elemental-toolkit/issues/new?title=Runtime%20persistent%20changes" class=td-page-meta--issue target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create documentation issue</a>
<a href=https://github.com/rancher/elemental-toolkit/issues/new class=td-page-meta--project-issue target=_blank rel=noopener><i class="fa-solid fa-list-check fa-fw"></i> Create project issue</a></div><div class=td-toc><nav id=TableOfContents><ul><li><a href=#transient-changes>Transient changes</a></li><li><a href=#persist-changes-with-cloud-init-files>Persist changes with Cloud init files</a></li><li><a href=#example>Example</a></li></ul></nav></div></aside><main class="col-12 col-md-9 col-xl-8 ps-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://rancher.github.io/elemental-toolkit/docs/>Documentation</a></li><li class=breadcrumb-item><a href=https://rancher.github.io/elemental-toolkit/docs/customizing/>Customizing</a></li><li class="breadcrumb-item active" aria-current=page>Runtime persistent changes</li></ol></nav><div class=td-content><h1>Runtime persistent changes</h1><div class=lead>Applying changes to Elemental images in runtime or “how to install a package in an immutable OS at runtime?”</div><header class=article-meta></header><p>Elemental and derivatives are <a href=../../reference/immutable_rootfs>immutable</a> systems. That means that any change in the running OS will not persist after a reboot.</p><p>While <a href=../configuration_persistency>configurations can be persisted</a>, there are occasions where installing a custom package or provide additional persistent files in the end system is needed.</p><p>We will see here a way to install packages, drivers, or apply any modification we might want to do in the OS image during runtime, without any need to rebuild the derivative container image. This will let any user (and not derivative developer) to apply any needed customization and to be able to persist across upgrades.</p><h2 id=transient-changes>Transient changes</h2><p>To apply transient changes, it&rsquo;s possible to boot a Elemental derivative in read/write mode by specifying <code>rd.cos.debugrw</code> <a href=../../reference/immutable_rootfs>see here for more details</a>. This allows to do any change and will persist into the active/passive booting system (does NOT apply for recovery). Altough this methodology should be only considered for debugging purposes.</p><h2 id=persist-changes-with-cloud-init-files>Persist changes with Cloud init files</h2><p>Elemental allows to apply a set of commands, or cloud-init steps, during upgrade, deploy, install and reset in the context of the target image, in RW capabilities. This allows to carry on changes during upgrades on the target image without the need to re-build or have a custom derivative image.</p><p>All the configuration that we want to apply to the system will run each time we do an upgrade, a reset or an installation on top of the new downloaded image (in case of upgrade) or the image which is the target system.</p><p>Between the available <a href=../stages>stages</a> in the <a href=../../reference/cloud_init/>cloud-init</a> there are <code>after-upgrade-chroot</code>, <code>after-install-chroot</code>, <code>after-reset-chroot</code> and <code>after-deploy-chroot</code>, for example, consider the following cloud-init file:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yaml data-lang=yaml><span style=display:flex><span><span style=color:#204a87;font-weight:700>stages</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span><span style=color:#204a87;font-weight:700>name</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>&#34;Install something&#34;</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span><span style=color:#204a87;font-weight:700>stages</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>after-upgrade-chroot</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#204a87;font-weight:700>commands</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#000>zypper in -y ...</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>after-reset-chroot</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#204a87;font-weight:700>commands</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#000>zypper in -y ...</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>after-deploy-chroot</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#204a87;font-weight:700>commands</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#000>zypper in -y ...</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>after-install-chroot</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#204a87;font-weight:700>commands</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#000>zypper in -y ...</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span></code></pre></div><p>It will run the <code>zypper in -y ...</code> calls during each stage, in the context of the target system, allowing to customize the target image with additional packages.</p><div class="alert alert-primary" role=alert><h4 class=alert-heading>Note</h4><code>zypper</code> calls here are just an example. We could have used <code>dnf</code> for fedora based, or <code>apt-get</code> for ubuntu based images.</div><p>When running the cloud-init steps the <code>/oem</code> partition and <code>/usr/local</code> will be mounted to <code>COS_OEM</code> and <code>COS_PERSISTENT</code> respectively, allowing to load extra data (e.g. rpm files, or configuration).</p><h2 id=example>Example</h2><p>If an user wants to install an additional package in the running system, and keep having that persistent across upgrades, he can copy the following file (<code>install.yaml</code>) inside the <code>/oem</code> folder, or <code>/usr/local/cloud-config</code>:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yaml data-lang=yaml><span style=display:flex><span><span style=color:#204a87;font-weight:700>stages</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span><span style=color:#204a87;font-weight:700>name</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>&#34;Install something&#34;</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span><span style=color:#204a87;font-weight:700>stages</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>after-upgrade-chroot</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#204a87;font-weight:700>commands</span><span style=color:#000;font-weight:700>:</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>- <span style=color:#000>zypper in -y vim</span><span style=color:#f8f8f8;text-decoration:underline>
</span></span></span></code></pre></div><p>and run <code>elemental upgrade</code>.</p><p>It will automatically upgrade the system with the changes above included.</p><style>.feedback--answer{display:inline-block}.feedback--answer-no{margin-left:1em}.feedback--response{display:none;margin-top:1em}.feedback--response__visible{display:block}</style><div class=d-print-none><h2 class=feedback--title>Feedback</h2><p class=feedback--question>Was this page helpful?</p><button class="btn btn-primary mb-4 feedback--answer feedback--answer-yes">Yes</button>
<button class="btn btn-primary mb-4 feedback--answer feedback--answer-no">No</button><p class="feedback--response feedback--response-yes">Glad to hear it! Please <a href=https://github.com/rancher/elemental-toolkit/issues/new>tell us how we can improve</a>.</p><p class="feedback--response feedback--response-no">Sorry to hear that. Please <a href=https://github.com/rancher/elemental-toolkit/issues/new>tell us how we can improve</a>.</p></div><script>const yesButton=document.querySelector(".feedback--answer-yes"),noButton=document.querySelector(".feedback--answer-no"),yesResponse=document.querySelector(".feedback--response-yes"),noResponse=document.querySelector(".feedback--response-no"),disableButtons=()=>{yesButton.disabled=!0,noButton.disabled=!0},sendFeedback=e=>{if(typeof ga!="function")return;const t={command:"send",hitType:"event",category:"Helpful",action:"click",label:window.location.pathname,value:e};ga(t.command,t.hitType,t.category,t.action,t.label,t.value)};yesButton.addEventListener("click",()=>{yesResponse.classList.add("feedback--response__visible"),disableButtons(),sendFeedback(1)}),noButton.addEventListener("click",()=>{noResponse.classList.add("feedback--response__visible"),disableButtons(),sendFeedback(0)})</script><br><div class="text-muted mt-5 pt-3 border-top">Last modified August 31, 2023: <a href=https://github.com/rancher/elemental-toolkit/commit/2360815df80996e0ddcdf2aaee28ed039c43fc6b>More documentation work (#1819) (2360815df)</a></div></div></main></div></div><footer class="td-footer row d-print-none"><div class=container-fluid><div class="row mx-md-2"><div class="col-6 col-sm-4 text-xs-center order-sm-2"></div><div class="col-6 col-sm-4 text-end text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item h3" data-bs-toggle=tooltip title=Slack aria-label=Slack><a class=text-white target=_blank rel=noopener href=https://rancher-users.slack.com/messages/elemental aria-label=Slack><i class="fab fa-slack"></i></a></li></ul></div><div class="td-footer__copyright-etc col-12 col-sm-4 text-center py-2 order-sm-2"><span>&copy; 2024 SUSE LLC All Rights Reserved</span>
<span class=ms-1><a href=https://www.suse.com/company/legal/ target=_blank rel=noopener>Privacy Policy</a></span></div></div></div></footer></div><script src=https://rancher.github.io/elemental-toolkit/js/main.min.99abe30f7fb05785a480d405ee1665ebd520cec6bbadffe966b7737e103675b8.js integrity="sha256-mavjD3+wV4WkgNQF7hZl69Ugzsa7rf/pZrdzfhA2dbg=" crossorigin=anonymous></script>
<script src=https://rancher.github.io/elemental-toolkit/js/prism.js></script>
<script src=https://rancher.github.io/elemental-toolkit/js/tabpane-persist.js></script></body></html>