Files
Linux/Task_4-6/Linux-Cl-Praktikum_06_en.html

1229 lines
76 KiB
HTML

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Prof. Dr. Andreas Claßen">
<title>Linux Praktikumstermin 2025_06: Simple Container &amp; btrfs</title>
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{color:rgb(0,177,172);}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{color:rgb(0,177,172);}
#header>h1:first-child{color:rgb(0,177,172);}
details>summary::before{left:-2.25rem;} /* ... move triangle slightly left */
#itsheader {
/* border:2px solid red; */
float: left;
width: 100%;
}
#itsheader #header-text {
width: 90%;
float: left;
}
#itsheader #header-image {
padding-top: 10px;
float: right;
/* width: 20%; */
}
.h2-summary{font-size:2.3125em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:rgb(0,177,172);text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em}
.h3-summary{font-size:1.6875em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:rgb(0,177,172);text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em}
headingcode{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;}
.close-button{background-color:white;border-color:rgb(0,177,172);color:rgb(0,177,172);}
</style>
<script>
const openDetailsIfAnchorHidden = (evt) => {
const el = evt.target;
let details = document.querySelector(el.getAttribute("href"));
if ( !!details.offsetHeight || details.getClientRects().length ) return;
if (details != null)
{
details = details.closest("details:not(#" + details.id + ")");
if (details == null)
return;
const summary = details.querySelector("summary");
details.setAttribute('open', '');
}
}
window.addEventListener("load", function(event) {
[...document.querySelectorAll("[href^='#']")].forEach(
el => el.addEventListener("click", openDetailsIfAnchorHidden )
);
});
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="article">
<div id="header">
<div id="itsheader">
<div id="header-text">
<h1>Linux Praktikumstermin 2025_06: Simple Container &amp; btrfs</h1>
</div>
<div id="header-image"><img src="https://login.fh-aachen.de/idp/images/fh-logo-left.svg" height="120px" alt="FH Logo" id="topright"/></div>
</div>
<div class="details">
<span id="author" class="author">Prof. Dr. Andreas Claßen</span><br>
<span id="email" class="email"><a href="mailto:a.classen@fh-aachen.de">a.classen@fh-aachen.de</a></span><br>
</div>
<div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#sect_id_general_notes_with_respect_to_this_lab_exercise">General Notes with respect to this Lab Exercise</a>
<ul class="sectlevel2">
<li><a href="#sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its">FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em></a></li>
<li><a href="#sect_id_on_your_own_computer_virtualbox_installation">On your own computer: VirtualBox Installation</a></li>
<li><a href="#sect_id_operating_the_virtualbox_vm">Operating the VirtualBox VM</a></li>
<li><a href="#sect_id_persistence_of_data_and_changes">Persistence of data and changes</a></li>
<li><a href="#sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it">Interrupting the Lab Work: Shut down the VM, do not pause it</a></li>
<li><a href="#sect_id_superuser_permissions">Superuser Permissions</a></li>
</ul>
</li>
<li><a href="#sect_id_download_and_setup_of_the_virtual_machine_vm_container_btrfs_vm"> Download and Setup of the Virtual Machine (VM) <code>Container_btrfs_VM</code></a>
<ul class="sectlevel2">
<li><a href="#sect_id_adding_additional_virtual_hard_disks">Adding additional Virtual Hard Disks</a></li>
<li><a href="#sect_id_starting_the_vm">Starting the VM</a></li>
<li><a href="#sect_id_account_data_for_the_vm">Account Data for the VM</a></li>
</ul>
</li>
<li><a href="#sect_id_result_logging">Result logging</a></li>
<li><a href="#sect_id_btrfs">btrfs</a></li>
<li><a href="#sect_id_simple_container_with_file_system">Simple container with file system</a></li>
<li><a href="#sect_id_upload_of_console_log_file_and_completion_of_this_lab">Upload of console log file and completion of this lab</a></li>
</ul>
</div>
</div>
<div id="content">
<div class="sect1"><details id="sect_id_general_notes_with_respect_to_this_lab_exercise">
<summary class="h2-summary">General Notes with respect to this Lab Exercise</summary>
<div class="sectionbody">
<div class="sect2"><details id="sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its">
<summary class="h3-summary">FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em></summary>
<div class="paragraph">
<p>As the technical setup (using VirtualBox Virtual Machines) is similar
in several of Prof. Classen&#8217;s lectures / labs, we provide shared FAQ answers
in a separate, shared Ilias course at
<a href="https://www.ili.fh-aachen.de/goto_elearning_crs_367289.html">Support für die WF Praktika Prof. Claßen</a>.
Feel free to become a member of that Ilias course.</p>
</div>
<div class="paragraph">
<p>A
<a href="https://www.ili.fh-aachen.de/ilias.php?baseClass=ilWikiHandlerGUI&amp;ref_id=367292&amp;cmd=view">Wiki</a>
there provides FAQ answers
related to the technical setup of the Prof. Classen labs.
New FAQ answers will be added on demand.
If you have problems creating and starting the VM,
first check the information in our FAQ.
In particular, the points on the topic of activating hardware virtualization on Windows systems.</p>
</div>
<div class="paragraph">
<p>Specific questions specifically related
to one module' lab only will however not be answered there, but in the Ilias of the specific module
instead. Only questions that are valid for multiple / all of the labs will be handled
via the shared Support Wiki.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its').open=false">(close: FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em>)</button>
</details></div>
<div class="sect2"><details id="sect_id_on_your_own_computer_virtualbox_installation">
<summary class="h3-summary">On your own computer: VirtualBox Installation</summary>
<div class="paragraph">
<p>VirtualBox Version 7.x is installed on the terminal computers.</p>
</div>
<div class="paragraph">
<p>If you are working on your own computer,
so you should also install and use the latest version of Virtualbox 7.x.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_on_your_own_computer_virtualbox_installation').open=false">(close: On your own computer: VirtualBox Installation)</button>
</details></div>
<div class="sect2"><details id="sect_id_operating_the_virtualbox_vm">
<summary class="h3-summary">Operating the VirtualBox VM</summary>
<div class="paragraph">
<p>With VirtualBox, the mouse and keyboard may be "caught" in the VM,
as soon as you click in the console window.
You can then "release" it by pressing the right <code>Ctrl</code> key.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_operating_the_virtualbox_vm').open=false">(close: Operating the VirtualBox VM)</button>
</details></div>
<div class="sect2"><details id="sect_id_persistence_of_data_and_changes">
<summary class="h3-summary">Persistence of data and changes</summary>
<div class="paragraph">
<p>The changes in the virtual machine are persistent
even if you have to shut down or reboot the virtual machine during the lab exercises.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_persistence_of_data_and_changes').open=false">(close: Persistence of data and changes)</button>
</details></div>
<div class="sect2"><details id="sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it">
<summary class="h3-summary">Interrupting the Lab Work: Shut down the VM, do not pause it</summary>
<div class="paragraph">
<p>If you need to interrupt your lab work,
please do not pause the VM,
instead, shut down the VM.
Otherwise, when paused, the VM will not have a
working network connection when you continue your work.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it').open=false">(close: Interrupting the Lab Work: Shut down the VM, do not pause it)</button>
</details></div>
<div class="sect2"><details id="sect_id_superuser_permissions">
<summary class="h3-summary">Superuser Permissions</summary>
<div class="paragraph">
<p>Many of the commands and file content changes in the following exercises
require superuser (<code>root</code>) permissions, because they impact general system settings. In many cases, this is explicitly mentioned in the explanation of the respective exercise.
We do however expect you to understand the concept,
so therefore there might be cases where you are expected to recognize and handle this yourself.
As a general hint: should you get error messages like <code>command not found</code> or <code>Permission denied</code>
when issueing a command, this might be an indication
that the respective command needs to be executed as
<code>root</code> superuser.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_superuser_permissions').open=false">(close: Superuser Permissions)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_general_notes_with_respect_to_this_lab_exercise').open=false">(close: General Notes with respect to this Lab Exercise)</button>
</details></div>
<div class="sect1"><details id="sect_id_download_and_setup_of_the_virtual_machine_vm_container_btrfs_vm">
<summary class="h2-summary"> Download and Setup of the Virtual Machine (VM) <headingcode>Container_btrfs_VM</headingcode></summary>
<div class="sectionbody">
<details>
<summary class="title"><strong>On the FH Aachen PCs:</strong></summary>
<div class="content">
<div class="paragraph">
<p>Start VirtualBox.</p>
</div>
<div class="paragraph">
<p><strong>Importing the appliance for the ITS-VM ("ITS" == "Lehrgebiet Informationstechnische Systeme, Prof. Claßen"):</strong></p>
</div>
<div class="paragraph">
<p>Open the windows command shell <strong>cmd.exe</strong> by clicking on the menu in the bottom left corner, then "blindly" type in <strong>cmd</strong>, followed
by a left click onto <strong>cmd.exe</strong>.
Enter the following command into the shell:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="cmd"><span></span><span class="linenos">1</span>net use S: \\ad.fh-aachen.de\files\FB05\StudiShare</code></pre>
</div>
</div>
<div class="paragraph">
<p>You should now see a new drive <code>S:</code> in the explorer.</p>
</div>
<div class="paragraph">
<p>=== Importing the appliance for the VM) <code>Container_btrfs_VM</code></p>
</div>
<div class="paragraph">
<p>In VirtualBox menu <code>file</code> :
<code>import appliance</code>, select <code>ITS_Client_Debian12_AMD64_V02.ova</code> in
<code>S:\Classen\VM_OVAs\</code> ,
click <code>Next</code>,
change <code>name</code> setting to <code>Container_btrfs_VM</code>.</p>
</div>
<div class="paragraph">
<p>On FH terminal room computers:
change <code>virtual disk image</code> to
<code>D:\VMs\Container_btrfs_VM.vmdk</code>.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="title">Assign a new MAC address</div>
Important (on all computers):
Make sure to set the checkbox
<code>Assign new MAC addresses for all network cards</code>,
alternatively go to <code>MAC Address Policy</code>
and set <code>Include all network adapter MAC addresses</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally click on <code>Import</code>.</p>
</div>
</div>
</details>
<details>
<summary class="title"><strong>On your private computer:</strong></summary>
<div class="content">
<div class="paragraph">
<p>Download <code>ITS_Client_Debian12_AMD64_V02.ova</code> from
<a href="https://fh-aachen.sciebo.de/s/voHfcjRsXAfYbfJ" class="bare">https://fh-aachen.sciebo.de/s/voHfcjRsXAfYbfJ</a></p>
</div>
<div class="paragraph">
<p>In VirtualBox menu <code>file</code> :
<code>import appliance</code>, select <code>ITS_Client_Debian12_AMD64_V02.ova</code>
from your local download folder,
click <code>Next</code>,
change <code>name</code> setting to <code>Container_btrfs_VM</code>.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="title">Assign a new MAC address</div>
Important (on all computers):
Make sure to set the checkbox
<code>Assign new MAC addresses for all network cards</code>,
alternatively go to <code>MAC Address Policy</code>
and set <code>Include all network adapter MAC addresses</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally click on <code>Import</code>.</p>
</div>
</div>
</details>
<div class="sect2"><details id="sect_id_adding_additional_virtual_hard_disks">
<summary class="h3-summary">Adding additional Virtual Hard Disks</summary>
<div class="paragraph">
<p>Change the configuration for this VM under <code>storage</code>:</p>
</div>
<div class="paragraph">
<p>Click on
<code>Controller: SATA</code> (or` Controller: SATA Controller`).</p>
</div>
<div class="paragraph">
<p>Then click on the right icon with a plus sign that appears to the right (<code>Add hard disk</code>).</p>
</div>
<div class="paragraph">
<p>There <code>Create new disk</code>, <code>File type</code>: <code>VDI</code>, <code>Next</code>, <code>Type of storage</code>:` dynamically allocated`, <code>Next</code>.</p>
</div>
<div class="paragraph">
<p>You can freely choose the file name and leave the suggested size of <code>10 GB</code>
(because of dynamic storage, the size of <code>10 GB</code> is actually not really allocated,
so this will not take up that much hard disk space on your physical computer),
<code>Create</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="title">Add 3 virtual hard disks</div>
Repeat this procedure until you have added in total
3
such additional virtual disks
(that makes a total of 3+1 hard disks:
The operating system is installed on the first hard disk,
all other disks are used as data disks).
</td>
</tr>
</table>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_adding_additional_virtual_hard_disks').open=false">(close: Adding additional Virtual Hard Disks)</button>
</details></div>
<div class="sect2"><details id="sect_id_starting_the_vm">
<summary class="h3-summary">Starting the VM</summary>
<div class="paragraph">
<p>Start the VM.</p>
</div>
<div class="paragraph">
<p>Should you get an error message when starting the VM regarding
<code>VirtualBox Host-Only Ethernet Adapter is not a Host-Only Network</code>
(or similar), the name of the host-only network in your VirtualBox installation differs from
the name expected by the VM definition.
For the VM refusing to start, click on <code>Configure</code> (upper-left of the
VirtualBox window) and a settings window will open for that VM.
Click on <code>OK</code> without changing any VM settings.
This will nevertheless update the VM settings and correct the problem.
Start the VM again.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_starting_the_vm').open=false">(close: Starting the VM)</button>
</details></div>
<div class="sect2"><details id="sect_id_account_data_for_the_vm">
<summary class="h3-summary">Account Data for the VM</summary>
<div class="paragraph">
<p>The user accounts of the VM are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>User: <code>itsadmin</code>, Password: <code>itsadmin</code></p>
</li>
<li>
<p>Administrator-User: <code>root</code>, Password: <code>itsadmin</code></p>
</li>
</ul>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_account_data_for_the_vm').open=false">(close: Account Data for the VM)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_download_and_setup_of_the_virtual_machine_vm_container_btrfs_vm').open=false">(close: Download and Setup of the Virtual Machine (VM) <headingcode>Container_btrfs_VM</headingcode>)</button>
</details></div>
<div class="sect1"><details id="sect_id_result_logging">
<summary class="h2-summary">Result logging</summary>
<div class="sectionbody">
<div class="paragraph">
<p>To show that you have successfully finished this lab, please upload a log file to ILIAS. The log file
will contain all commands that you typed in during your session and all system outputs.</p>
</div>
<div class="paragraph">
<p>It is not a problem if there are commands in the logfile that did not work on first try or were typed in wrong,
we just want to see that at some point all the required commands were used correctly.</p>
</div>
<div class="paragraph">
<p>Open a terminal in the virtual
machine and start the logging by using the <code>script</code> command
(option <code>-a</code> means: <em>append to file</em> in case the file is non-empty
when the logging to file is started):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>script<span style="color: #bbbbbb"> </span>-a<span style="color: #bbbbbb"> </span>Linux-praktikum-06.log</code></pre>
</div>
</div>
<div class="paragraph">
<p>The following output should appear:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>Script<span style="color: #bbbbbb"> </span>started,<span style="color: #bbbbbb"> </span>file<span style="color: #bbbbbb"> </span>is<span style="color: #bbbbbb"> </span>Linux-praktikum-06.log</code></pre>
</div>
</div>
<div class="paragraph">
<p>From now on, please only use the console in which the logger is running, so that everything gets logged correctly!</p>
</div>
<div class="paragraph">
<p>If you want to interrupt the lab and shut down the virtual machine, e.g. to take a break, or if you get interrupted somehow,
you have to restart the logging when you continue.
Choose a new / different file name.
Finally, use a text editor to merge the resulting log files into a single file in the correct order.</p>
</div>
<div class="paragraph">
<p>After completing the lab, upload the complete result files to the Ilias course.</p>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_result_logging').open=false">(close: Result logging)</button>
</details></div>
<div class="sect1"><details id="sect_id_btrfs">
<summary class="h2-summary">btrfs</summary>
<div class="sectionbody">
<div class="paragraph">
<p>Install the <code>btrfs</code> file system driver and the tools required for <code>btrfs</code> using the software package <code>btrfs-progs</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>apt-get<span style="color: #bbbbbb"> </span>update
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>apt-get<span style="color: #bbbbbb"> </span>install<span style="color: #bbbbbb"> </span>-y<span style="color: #bbbbbb"> </span>btrfs-progs</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a <code>btrfs</code> file system using the two hard drives <code>sdb</code> and <code>sdc</code> as devices:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mkfs.btrfs<span style="color: #bbbbbb"> </span>/dev/sdb<span style="color: #bbbbbb"> </span>/dev/sdc</code></pre>
</div>
</div>
<div class="paragraph">
<p>Have the system output information about the file system.
Each of the two devices can be used as "reference" to the overall file system spanning the two devices:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>show<span style="color: #bbbbbb"> </span>/dev/sdb
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>show<span style="color: #bbbbbb"> </span>/dev/sdc</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a directory <code>/mnt/prakt</code> and mount the <code>btrfs</code> file system with administrator rights at this mount point.
Again, each of the two devices can be used as reference to the file system.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mkdir<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>mount<span style="color: #bbbbbb"> </span>-t<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>/dev/sdc<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">3</span>mount<span style="color: #bbbbbb"> </span>|<span style="color: #bbbbbb"> </span>grep<span style="color: #bbbbbb"> </span>btrfs</code></pre>
</div>
</div>
<div class="paragraph">
<p>Make the mounted file system writable for all users and copy some "dummy files" there:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>chmod<span style="color: #bbbbbb"> </span>a+w<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>cp<span style="color: #bbbbbb"> </span>-r<span style="color: #bbbbbb"> </span>/usr/share/doc<span style="color: #bbbbbb"> </span>/mnt/prakt/</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now that the file system is mounted, the mount point can also in many cases be used as a reference to the file system.
E.g. the following command displays information about the file system "level of fill up" analogous to the "classic" <code>df</code> command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>df<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Add another device:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>device<span style="color: #bbbbbb"> </span>add<span style="color: #bbbbbb"> </span>/dev/sdd<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>balance<span style="color: #bbbbbb"> </span>start<span style="color: #bbbbbb"> </span>--full-balance<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">3</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>show<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">4</span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>df<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now we remove one of the original devices:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>device<span style="color: #bbbbbb"> </span>remove<span style="color: #bbbbbb"> </span>/dev/sdc<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>balance<span style="color: #bbbbbb"> </span>start<span style="color: #bbbbbb"> </span>--full-balance<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">3</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>show<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a new subvolume <code>SV1</code>, in the <code>/mnt/prakt</code> directory, i.e. at the top level within the <code>btrfs</code> file system:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>create<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>list<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Together with the subvolume the associated directory is also created. The directory is still empty, of course:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1</code></pre>
</div>
</div>
<div class="paragraph">
<p>Make the directory writable for all users and create two files there (file content does not matter, can also be empty):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>chmod<span style="color: #bbbbbb"> </span>a+w<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1
<span class="linenos">2</span><span style="color: #3D7B7B; font-style: italic"># Create two files file1.txt and file2.txt in that directory</span>
<span class="linenos">3</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1</code></pre>
</div>
</div>
<div class="paragraph">
<p>Place a second, nested subvolume:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>create<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1/SV11
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>list<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">3</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1/SV11
<span class="linenos">4</span>sudo<span style="color: #bbbbbb"> </span>chmod<span style="color: #bbbbbb"> </span>a+w<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1/SV11</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create two files <code>file11.txt</code> and <code>file12.txt</code> in this subvolume.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1/SV11</code></pre>
</div>
</div>
<div class="paragraph">
<p>Place two mount points for the two subvolumes:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mkdir<span style="color: #bbbbbb"> </span>-p<span style="color: #bbbbbb"> </span>/mnt/SV1<span style="color: #bbbbbb"> </span>/mnt/SV11</code></pre>
</div>
</div>
<div class="paragraph">
<p>Mount the outer / upper subvolume <code>SV1</code>. Again, one of the involved Devices must be specified as a reference to the file system containing the subvolume. Observe that when mounting the outer subvolume, the inner / nested subvolume <code>SV11</code> is also automatically available:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mount<span style="color: #bbbbbb"> </span>-o<span style="color: #bbbbbb"> </span><span style="color: #19177C">subvol</span><span style="color: #666666">=</span>SV1<span style="color: #bbbbbb"> </span>/dev/sdb<span style="color: #bbbbbb"> </span>/mnt/SV1
<span class="linenos">2</span>ls<span style="color: #bbbbbb"> </span>-R<span style="color: #bbbbbb"> </span>/mnt/SV1
<span class="linenos">3</span>ls<span style="color: #bbbbbb"> </span>/mnt/SV1/SV11</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now mount the inner subvolume <code>SV11</code> separately. This shows that each subvolume can also be mounted separately. And it is not a problem that <code>SV11</code> is now available via "multiple paths" in the file system:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mount<span style="color: #bbbbbb"> </span>-o<span style="color: #bbbbbb"> </span><span style="color: #19177C">subvol</span><span style="color: #666666">=</span>SV1/SV11<span style="color: #bbbbbb"> </span>/dev/sdb<span style="color: #bbbbbb"> </span>/mnt/SV11
<span class="linenos">2</span>ls<span style="color: #bbbbbb"> </span>/mnt/SV11/
<span class="linenos">3</span>ls<span style="color: #bbbbbb"> </span>/mnt/SV1/SV11</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a snapshot of the current state of the subvolume <code>SV11</code>. The snapshot is also made available as a subvolume. We need to specify where this new subvolume should be placed in the <code>btrfs</code> file system:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>snapshot<span style="color: #bbbbbb"> </span>/mnt/prakt/SV1/SV11<span style="color: #bbbbbb"> </span>/mnt/prakt/sv11-snapshot
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>list<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">3</span>
<span class="linenos">4</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a mount point for the new subvolume and mount it there:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mkdir<span style="color: #bbbbbb"> </span>-p<span style="color: #bbbbbb"> </span>/mnt/SV11-Snapshot
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>mount<span style="color: #bbbbbb"> </span>-o<span style="color: #bbbbbb"> </span><span style="color: #19177C">subvol</span><span style="color: #666666">=</span>sv11-snapshot<span style="color: #bbbbbb"> </span>/dev/sdb<span style="color: #bbbbbb"> </span>/mnt/SV11-Snapshot
<span class="linenos">3</span>ls<span style="color: #bbbbbb"> </span>/mnt/SV11-Snapshot</code></pre>
</div>
</div>
<div class="paragraph">
<p>The snapshot is writable: delete the file <code>file11.txt</code> from the snapshot. Check that this file is really deleted in the snapshot, but is still available in the source subvolume <code>SV11</code>.</p>
</div>
<div class="paragraph">
<p>Then delete the file <code>file12.txt</code> in the source subvolume <code>SV11</code> and check that this file is still available in the snapshot.</p>
</div>
<div class="paragraph">
<p>Now a backup of the snapshot could now be made, even if it takes a long time, and the original subvolume <code>SV11</code> could still continue to be in use and could be changed without jeopardizing the consistency of the backup&#8217;s data.</p>
</div>
<div class="paragraph">
<p>Unmount the snapshot:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>umount<span style="color: #bbbbbb"> </span>/mnt/SV11-Snapshot</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now delete the snapshot itself:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>delete<span style="color: #bbbbbb"> </span>--commit-after<span style="color: #bbbbbb"> </span>/mnt/prakt/sv11-snapshot</code></pre>
</div>
</div>
<div class="paragraph">
<p>Check that the snapshot is no longer available:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>ls<span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>list<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now delete the mount point that is no longer needed:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>rmdir<span style="color: #bbbbbb"> </span>/mnt/SV11-Snapshot</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now also unmount the other mount:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>umount<span style="color: #bbbbbb"> </span>/mnt/SV1
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>rmdir<span style="color: #bbbbbb"> </span>/mnt/SV1</code></pre>
</div>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_btrfs').open=false">(close: btrfs)</button>
</details></div>
<div class="sect1"><details id="sect_id_simple_container_with_file_system">
<summary class="h2-summary">Simple container with file system</summary>
<div class="sectionbody">
<div class="paragraph">
<p>Download the following file into the directory <code>/home/itsadmin</code> using <code>wget</code>:</p>
</div>
<div class="paragraph">
<p><a href="https://github.com/ericchiang/containers-from-scratch/releases/download/v0.1.0/rootfs.tar.gz" class="bare">https://github.com/ericchiang/containers-from-scratch/releases/download/v0.1.0/rootfs.tar.gz</a></p>
</div>
<div class="paragraph">
<p>Copy the file <code>/home/itsadmin/rootfs.tar.gz</code> to the <code>/mnt/prakt</code> directory, i.e. to the <code>btrfs</code> file system.</p>
</div>
<div class="paragraph">
<p>Unzip the downloaded file with administrator rights (important):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span><span style="color: #008000">cd</span><span style="color: #bbbbbb"> </span>/mnt/prakt
<span class="linenos">2</span>sudo<span style="color: #bbbbbb"> </span>tar<span style="color: #bbbbbb"> </span>-zxf<span style="color: #bbbbbb"> </span>rootfs.tar.gz</code></pre>
</div>
</div>
<div class="paragraph">
<p>Create a new subvolume <code>root_subvolume</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>create<span style="color: #bbbbbb"> </span>root_subvolume</code></pre>
</div>
</div>
<div class="paragraph">
<p>Move all contents of the <code>rootfs/</code> directory into the new subvolume <code>root_subvolume</code> and delete the emptied source directory:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>mv<span style="color: #bbbbbb"> </span>rootfs/*<span style="color: #bbbbbb"> </span>root_subvolume/
<span class="linenos">2</span>ls<span style="color: #bbbbbb"> </span>rootfs
<span class="linenos">3</span>rmdir<span style="color: #bbbbbb"> </span>rootfs</code></pre>
</div>
</div>
<div class="paragraph">
<p>Take a look at and remember how much space for <code>data</code> is occupied in the <code>btrfs</code> file system. The <code>rootfs.tar.gz</code> file is about 260 MB in size, the resulting files occupy about 705 MB, altogether under 1 GB:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>df<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>Now we create two writable snapshots. These are then used as file systems for two containers. Because of the <em>Copy-on-Write</em> principle, the containers do not get real copies of the files, so little space is consumed per container. The original subvolume and its contents are not changed by the containers:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>snapshot<span style="color: #bbbbbb"> </span>root_subvolume<span style="color: #bbbbbb"> </span>root_container1
<span class="linenos">2</span>ls<span style="color: #bbbbbb"> </span>root_container1/
<span class="linenos">3</span>
<span class="linenos">4</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>subvolume<span style="color: #bbbbbb"> </span>snapshot<span style="color: #bbbbbb"> </span>root_subvolume<span style="color: #bbbbbb"> </span>root_container2
<span class="linenos">5</span>ls<span style="color: #bbbbbb"> </span>root_container2/</code></pre>
</div>
</div>
<div class="paragraph">
<p>Take a look at and compare with the previous value, how much space for <code>data</code> is occupied in the <code>btrfs</code> file system:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>df<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>In case of real copying of all files, the occupied disk space would have increased by 2x 705 MB &#8230;&#8203;</p>
</div>
<div class="paragraph">
<p>Open a new command line or a new command line tab and start a "simple container" there:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>unshare<span style="color: #bbbbbb"> </span>--pid<span style="color: #bbbbbb"> </span>--mount<span style="color: #bbbbbb"> </span>--fork<span style="color: #bbbbbb"> </span>chroot<span style="color: #bbbbbb"> </span>/mnt/prakt/root_container1<span style="color: #bbbbbb"> </span>/bin/bash</code></pre>
</div>
</div>
<div class="paragraph">
<p>Use <code>ls /</code> to list the contents of the root directory of the container. You should see the files from <code>rootfs</code> there.</p>
</div>
<div class="paragraph">
<p>In this first container, recursively delete the directory <code>/srv</code> and all of its content.</p>
</div>
<div class="paragraph">
<p>In the root directory of the container, create a file <code>container1_added.txt</code>. The file content does not matter and the file can also be empty. Create a directory <code>/container1_added_subdir_1</code> and in this directory create a file <code>/container1_added_subdir_1/container1_added.txt</code>.</p>
</div>
<div class="paragraph">
<p>Now open another new command line or a new command line tab and start a second "simple container" there:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>unshare<span style="color: #bbbbbb"> </span>--pid<span style="color: #bbbbbb"> </span>--mount<span style="color: #bbbbbb"> </span>--fork<span style="color: #bbbbbb"> </span>chroot<span style="color: #bbbbbb"> </span>/mnt/prakt/root_container2<span style="color: #bbbbbb"> </span>/bin/bash</code></pre>
</div>
</div>
<div class="paragraph">
<p>Also in this container, use <code>ls /</code> to list the contents of the root directory of the container. You should see the files from <code>rootfs</code> there.</p>
</div>
<div class="paragraph">
<p>In this second container, recursively delete the directory <code>/media</code> including all of its content. Check that the directory is indeed deleted. Also check that the <code>/srv</code> directory still exists, i.e. its deletion in container1 obviously had no effect on container2.</p>
</div>
<div class="paragraph">
<p>In the root directory of the container, create a file <code>container2_added.txt</code>. The file content does not matter and can also be empty. Create a directory <code>/container2_added_subdir_1</code> and in this directory a file <code>/container2_added_subdir_1/container2_added.txt</code>.</p>
</div>
<div class="paragraph">
<p>Change to the command lines of container1 and container2 and check that the changes made in each container did not have an impact on the other container.</p>
</div>
<div class="paragraph">
<p>Switch to the command line of container2. End this command line and thus the container via <code>exit</code>.</p>
</div>
<div class="paragraph">
<p>Also end the command line or command line tab that was opened before starting the container container2 by means of <code>exit</code>.</p>
</div>
<div class="paragraph">
<p>Switch to the command line of container1. Via command <code>ps aux</code> take a look at the list of processes in the container and end this command line and thus the container via <code>exit</code>.</p>
</div>
<div class="paragraph">
<p>Also end the command line or command line tab that was opened for starting the container by means of <code>exit</code>.</p>
</div>
<div class="paragraph">
<p>Starting from <code>/mnt/prakt</code>, take a look at the top level content of directory <code>root_subvolume</code>. The changes made in the containers should have had no impact on the contents of this subvolume.</p>
</div>
<div class="paragraph">
<p>Analyze the top level contents of the directories <code>root_container1</code> and <code>root_container2</code>. The changes made in the containers should be visible here.</p>
</div>
<div class="paragraph">
<p>Check the amount of occupied space in the file system:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>sudo<span style="color: #bbbbbb"> </span>btrfs<span style="color: #bbbbbb"> </span>filesystem<span style="color: #bbbbbb"> </span>df<span style="color: #bbbbbb"> </span>/mnt/prakt</code></pre>
</div>
</div>
<div class="paragraph">
<p>The amount of occupied space should not have changed significantly.</p>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_simple_container_with_file_system').open=false">(close: Simple container with file system)</button>
</details></div>
<div class="sect1"><details id="sect_id_upload_of_console_log_file_and_completion_of_this_lab">
<summary class="h2-summary">Upload of console log file and completion of this lab</summary>
<div class="sectionbody">
<div class="paragraph">
<p>When you have finalized your lab work, you need to end the logging by entering <code>exit</code> into your console. The following output should appear:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><span></span><span class="linenos">1</span>Script<span style="color: #bbbbbb"> </span><span style="color: #008000; font-weight: bold">done</span>,<span style="color: #bbbbbb"> </span>file<span style="color: #bbbbbb"> </span>is<span style="color: #bbbbbb"> </span>Linux-praktikum-06.log</code></pre>
</div>
</div>
<div class="paragraph">
<p>Start a webbrowser inside the virtual machine and upload the log file to ILIAS, using this web browser.</p>
</div>
<div class="paragraph">
<p>Shut down the VM, remove the VM completely (<code>delete all files</code>) and end your session.</p>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_upload_of_console_log_file_and_completion_of_this_lab').open=false">(close: Upload of console log file and completion of this lab)</button>
</details></div>
</div>
<div id="footer">
<div id="footer-text">
</div>
</div>
</body>
</html>