diff --git a/css/app.css b/css/app.css index dec1b0acf5311010026f7760bc500da235317fe2..199134d6c4286cb0553b5b82a0668aa804f3ebc7 100644 --- a/css/app.css +++ b/css/app.css @@ -4968,12 +4968,14 @@ table.hover tr:nth-of-type(even):hover { content: ""; } code { - font-size: 0.8em; } + font-size: 0.8em; + background-color: #fafafa; + border: 1px solid #eee; } div.sourceCode { line-height: 1; - border: 1px #cacaca solid; - background-color: #f7f7f7; + border: 1px solid #eee; + background-color: #fafafa; margin-bottom: 0.625rem; overflow-x: auto; } div.sourceCode pre { @@ -5152,3 +5154,6 @@ figcaption { width: 100%; } .text-left-medium { text-align: left; } } + +figure { + text-align: center; } diff --git a/images/posts/gentoo-partitions.svg b/images/posts/gentoo-partitions.svg new file mode 100644 index 0000000000000000000000000000000000000000..abc71b0688c4e7614d2789ec2796eb1a8236004d --- /dev/null +++ b/images/posts/gentoo-partitions.svg @@ -0,0 +1,2 @@ +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" width="523px" height="323px" version="1.1" content="%3CmxGraphModel%20dx%3D%22794%22%20dy%3D%22525%22%20grid%3D%221%22%20gridSize%3D%2210%22%20guides%3D%221%22%20tooltips%3D%221%22%20connect%3D%221%22%20arrows%3D%221%22%20fold%3D%221%22%20page%3D%221%22%20pageScale%3D%221%22%20pageWidth%3D%22826%22%20pageHeight%3D%221169%22%20background%3D%22%23ffffff%22%20math%3D%220%22%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%22597a973fc3456320-1%22%20value%3D%22OS%20X%20Partitions%26lt%3Bbr%26gt%3B%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2280%22%20y%3D%2240%22%20width%3D%22120%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-2%22%20value%3D%22%2Fboot%2Fefi%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-green%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22200%22%20y%3D%2240%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-3%22%20value%3D%22%2Fboot%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-green%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22260%22%20y%3D%2240%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-4%22%20value%3D%22LUKS%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-blue%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22320%22%20y%3D%2240%22%20width%3D%22280%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-5%22%20value%3D%22Fedora%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-orange%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22380%22%20y%3D%22100%22%20width%3D%22100%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-7%22%20value%3D%22Swap%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-gray%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22320%22%20y%3D%22100%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-8%22%20value%3D%22Home%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-orange%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22480%22%20y%3D%22100%22%20width%3D%22120%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-17%22%20value%3D%22%22%20style%3D%22shape%3DsingleArrow%3Bdirection%3Dsouth%3BwhiteSpace%3Dwrap%3Bhtml%3D1%3BarrowWidth%3D0.5583333333333333%3BarrowSize%3D0.5041666666666667%3BfillColor%3D%23ffffff%3BstrokeColor%3D%23000000%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22310%22%20y%3D%22170%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-18%22%20value%3D%22%22%20style%3D%22group%22%20vertex%3D%221%22%20connectable%3D%220%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%2280%22%20y%3D%22240%22%20width%3D%22520%22%20height%3D%22120%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-9%22%20value%3D%22OS%20X%20Partitions%26lt%3Bbr%26gt%3B%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3B%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20width%3D%22120%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-10%22%20value%3D%22%2Fboot%2Fefi%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-green%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22120%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-11%22%20value%3D%22%2Fboot%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-green%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22180%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-12%22%20value%3D%22LUKS%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-blue%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22240%22%20width%3D%22280%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-13%22%20value%3D%22Fedora%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-orange%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22300%22%20y%3D%2260%22%20width%3D%2250%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-14%22%20value%3D%22Swap%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-gray%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22240%22%20y%3D%2260%22%20width%3D%2260%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-15%22%20value%3D%22Home%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-orange%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22400%22%20y%3D%2260%22%20width%3D%22120%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3CmxCell%20id%3D%22597a973fc3456320-16%22%20value%3D%22Gentoo%22%20style%3D%22whiteSpace%3Dwrap%3Bhtml%3D1%3Bplain-orange%22%20vertex%3D%221%22%20parent%3D%22597a973fc3456320-18%22%3E%3CmxGeometry%20x%3D%22350%22%20y%3D%2260%22%20width%3D%2250%22%20height%3D%2260%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-d5e8d4-1-97d077-1-s-0"><stop offset="0%" style="stop-color:#D5E8D4"/><stop offset="100%" style="stop-color:#97D077"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-7ea6e0-1-s-0"><stop offset="0%" style="stop-color:#DAE8FC"/><stop offset="100%" style="stop-color:#7EA6E0"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffcd28-1-ffa500-1-s-0"><stop offset="0%" style="stop-color:#FFCD28"/><stop offset="100%" style="stop-color:#FFA500"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f5f5f5-1-b3b3b3-1-s-0"><stop offset="0%" style="stop-color:#F5F5F5"/><stop offset="100%" style="stop-color:#B3B3B3"/></linearGradient></defs><g transform="translate(0.5,0.5)"><rect x="1" y="1" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(19.5,24.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="82" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 83px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">OS X Partitions<br /></div></div></foreignObject><text x="41" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">OS X Partitions<br></text></switch></g><rect x="121" y="1" width="60" height="60" fill="url(#mx-gradient-d5e8d4-1-97d077-1-s-0)" stroke="#82b366" pointer-events="none"/><g transform="translate(129.5,24.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="43" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 44px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">/boot/efi</div></div></foreignObject><text x="22" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">/boot/efi</text></switch></g><rect x="181" y="1" width="60" height="60" fill="url(#mx-gradient-d5e8d4-1-97d077-1-s-0)" stroke="#82b366" pointer-events="none"/><g transform="translate(197.5,24.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="27" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 28px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">/boot</div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">/boot</text></switch></g><rect x="241" y="1" width="280" height="60" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="none"/><g transform="translate(365.5,24.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="31" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 32px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">LUKS</div></div></foreignObject><text x="16" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">LUKS</text></switch></g><rect x="301" y="61" width="100" height="60" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="none"/><g transform="translate(331.5,84.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="38" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 39px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Fedora</div></div></foreignObject><text x="19" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Fedora</text></switch></g><rect x="241" y="61" width="60" height="60" fill="url(#mx-gradient-f5f5f5-1-b3b3b3-1-s-0)" stroke="#666666" pointer-events="none"/><g transform="translate(255.5,84.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Swap</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Swap</text></switch></g><rect x="401" y="61" width="120" height="60" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="none"/><g transform="translate(444.5,84.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 33px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Home</div></div></foreignObject><text x="16" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Home</text></switch></g><path d="M 231 144.25 L 260.75 144.25 L 260.75 131 L 291 161 L 260.75 191 L 260.75 177.75 L 231 177.75 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,261,161)" pointer-events="none"/><rect x="1" y="201" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(19.5,224.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="82" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 83px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">OS X Partitions<br /></div></div></foreignObject><text x="41" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">OS X Partitions<br></text></switch></g><rect x="121" y="201" width="60" height="60" fill="url(#mx-gradient-d5e8d4-1-97d077-1-s-0)" stroke="#82b366" pointer-events="none"/><g transform="translate(129.5,224.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="43" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 44px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">/boot/efi</div></div></foreignObject><text x="22" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">/boot/efi</text></switch></g><rect x="181" y="201" width="60" height="60" fill="url(#mx-gradient-d5e8d4-1-97d077-1-s-0)" stroke="#82b366" pointer-events="none"/><g transform="translate(197.5,224.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="27" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 28px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">/boot</div></div></foreignObject><text x="14" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">/boot</text></switch></g><rect x="241" y="201" width="280" height="60" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" pointer-events="none"/><g transform="translate(365.5,224.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="31" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 32px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">LUKS</div></div></foreignObject><text x="16" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">LUKS</text></switch></g><rect x="301" y="261" width="50" height="60" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="none"/><g transform="translate(306.5,284.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="38" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 39px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Fedora</div></div></foreignObject><text x="19" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Fedora</text></switch></g><rect x="241" y="261" width="60" height="60" fill="url(#mx-gradient-f5f5f5-1-b3b3b3-1-s-0)" stroke="#666666" pointer-events="none"/><g transform="translate(255.5,284.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 31px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Swap</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Swap</text></switch></g><rect x="401" y="261" width="120" height="60" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="none"/><g transform="translate(444.5,284.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="32" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 33px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Home</div></div></foreignObject><text x="16" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Home</text></switch></g><rect x="351" y="261" width="50" height="60" fill="url(#mx-gradient-ffcd28-1-ffa500-1-s-0)" stroke="#d79b00" pointer-events="none"/><g transform="translate(356.5,284.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="39" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 40px; white-space: nowrap; text-align: center;"><div style="display:inline-block;text-align:inherit;text-decoration:inherit;" xmlns="http://www.w3.org/1999/xhtml">Gentoo</div></div></foreignObject><text x="20" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Gentoo</text></switch></g></g></svg> \ No newline at end of file diff --git a/images/posts/gentoo-screenfetch.png b/images/posts/gentoo-screenfetch.png new file mode 100644 index 0000000000000000000000000000000000000000..d8281c9a273cfe54ce6a7077966ea8bf2f6fa6fb Binary files /dev/null and b/images/posts/gentoo-screenfetch.png differ diff --git a/images/posts/networkmanager-vpn.png b/images/posts/networkmanager-vpn.png new file mode 100644 index 0000000000000000000000000000000000000000..744da1705581d26744214aba0d8e55eeeaa6c126 Binary files /dev/null and b/images/posts/networkmanager-vpn.png differ diff --git a/posts/2016-03-13-first-impressions-on-gentoo.md b/posts/2016-03-13-first-impressions-on-gentoo.md new file mode 100644 index 0000000000000000000000000000000000000000..7636456bb1fc0d3484f17073ff97ea603cd35626 --- /dev/null +++ b/posts/2016-03-13-first-impressions-on-gentoo.md @@ -0,0 +1,146 @@ +--- +title: First Impressions on Using Gentoo +date: Sun Mar 13 16:01:00 EDT 2016 +author: Eduardo Trujillo +uuid: c6dbbd2f-4e46-469f-82c6-a3a259fe7ca7 +--- + + + +Not too long ago I left OS X and installed Fedora on my laptop. Now, over the +past few days, I've been working on bootstrapping a Gentoo install from within +my Fedora setup. + +Unlike other Linux distributions, [Gentoo](https://gentoo.org) does not have an +installer. It is expected that you setup and install the system yourself. Yes. +It is tedious and definitely takes longer than following a setup wizard, but on +the other hand you gain some knowledge on how Linux works and end up with a +custom system. + +The learning factor was what convinced me to give Gentoo a try. + +Given the particular route I decided to take, the +[Gentoo Handbook](https://wiki.gentoo.org/wiki/Handbook:Main_Page) only helped +on certain parts of the process. On a normal setup, you start with a live +image of Gentoo containing just enough tools to install the system. It is also +assumed that you will start with an empty disk or one that you don't mind +erasing. + +On my case, I have an SSD that has a Fedora and OS X partitions, which are both +encrypted using each operating system's built-in encryption methods. The Linux +side consisted of a +[LUKS](https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup) partition +containing a +[LVM](https://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29) setup. + +Thus, the first step was to figure out how to make space for Gentoo while also +avoid breaking the existing systems. Having LVM setup, certainly helped here. +I shrunk my Fedora root (`/`) while keeping my home partition (`/home`) intact. + + + +After that was done, I created a new partition for the root Gentoo filesystem +and followed the section of the handbook on how to download the _Stage3_ +archive and chrooting into the environment. + +Once, chroot-ed, you can sort of begin using Gentoo and install packages using +Portage. You can even run X programs if you have an X server running on the +host. However, the goal here was to also boot into Gentoo directly. A chroot-ed +environment meant that the system is still running using the Fedora kernel. +A big part of installing Gentoo is building your own kernel and then rebooting +into it. + +Building a bootable kernel wasn't too hard. I installed the kernel sources +using Portage, configured it using `make menuconfig`, and compiled it. Once it +was finished. I copied over to my `/boot` partition so that GRUB could find it. + +A few test boots showed that the system was booting correctly (and very fast +too). Unfortunately, once booted nothing happened because the disk partition +is encrypted using LUKS. + +Getting LUKS and LVM to work was bit painful due to how long it took me to find +a working solution. + +My initial attempt resulted in me trying to setup an _initramfs_ using Fedora's +`dracut` tool, which was available on the Gentoo repository and mentioned in +many guides on the distribution's wiki. It seemed logical given that it was the +same tool being used by the Fedora install, so getting it to work with Gentoo +should have only consisted of building a similar image but pointing to the +Gentoo partition. + +That did not work out well. I was simply not able to get past the disk +unlocking and mounting process. I think it may have been just trying to make +many things work together: EFI, `systemd`, `plymouth`, `cryptsetup`, and `lvm`. + +So, I continued with the other option presented by the Gentoo wiki, +`genkernel`. This is a tool used to automate the process of building a kernel +in Gentoo, but it also supports automatically building an initramfs. I +initially tried to avoid it given that I wanted to build the kernel myself as a +learning exercise. However, after installing it, I was pleased to find that +building an initramfs did not involved building a kernel with `genkernel`. + +A few key things to enable on my setup was the LUKS and LVM options on +`/etc/genkernel.conf`, and adding `dolvm` to my kernel command line on GRUB. + +_BAM!_ It booted, asked for my password, and dropped my into a login shell. + +I still had to go back to Fedora and `chroot` a couple of more times until I +got the right network drivers compiled. It was nice to find out that plugging +in a Thunderbolt Ethernet adapter worked and did not crashed the kernel like it +does on Fedora. + +Another thing I didn't realize immediately was that the `genkernel` initramfs +does not use `systemd` by default, so I had to add that to the kernel command +line too. + +Then I continued to install software and drivers, but this time from within +Gentoo. GNOME took a good 4-6 hours to compile, mainly due to WebKit taking so +long. + +Once I started GDM, NetworkManager, and the bluetooth service using +`systemctl`, I finally felt like I had a fully working system on my hands. + +Everything worked, except one major peripheral, the trackpad: Apparently, the +`usbhid` driver was claiming the device before the right driver, so the +keyboard worked, but the trackpad was dead. + +After a few hours of debugging, I gave up and decided to try compiling the +latest kernel available (_4.4.4 vs 4.1.15_), and after rebooting the trackpad +began working, including multitouch support! + +Lastly, I switched from X to Wayland, given that X had an odd issue with some +letters not rendering after the laptop came back from sleep. Adding Wayland +support simply consisted of adding `wayland wayland-compositor xwayland egl` to +my `USE` flags, and then recompiled the affected packages. After another +reboot, "GNOME on Wayland" appeared as an option on the GDM login screen. + +## Summary + +In general, I think I'm happy with my current build and will attempt to use it +as my main driver for the next few weeks. If it turns out to not have any major +issues, I'll remove my fedora partition to clear up some space. + +### The good + +- **Worked, almost, out-of-the-box**: I was surprised by the amount of hardware +that simply just worked out of the box by enabling the right kernel modules: +GPU, Keyboard, Sound, Lid, Keyboard Backlight, Mic, Media Keys, USB, +Thunderbolt. +- **Needed some extra work:** Wi-Fi, Trackpad. +- **Closing the laptop actually puts it to sleep.** No workarounds needed like +in Fedora. Wayland is slightly better at this since it doesn't turn on the +screen for a few seconds while closed like Xorg does. +- Power consumptions seems to be slightly better than Fedora, especially after +enabling all the toggles on `powertop`. +- The system boots really fast. Around, maybe, 20-40 seconds from GRUB to GDM? +- The Gentoo repositories are generally closer to upstream than other +distributions, and I'm also growing to like Portage's `USE` keyword feature. +- Learned a lot about how modern Linux systems are setup. + +### The bad + +- It's not for everyone. Many users probably just want an OS that works out of +the box. +- The compile time of some packages can be very long (I'm looking at you +WebKit). +- Many commercial software packages are only distributed as `deb`s or `rpm`s. diff --git a/posts/2016-04-08-networkmanager-vpn.md b/posts/2016-04-08-networkmanager-vpn.md new file mode 100644 index 0000000000000000000000000000000000000000..0c571534d81289370f90c3c6528a4c1576c67d79 --- /dev/null +++ b/posts/2016-04-08-networkmanager-vpn.md @@ -0,0 +1,75 @@ +--- +title: Automatically connecting to VPNs using NetworkManager +date: Fri April 08 16:01:00 EDT 2016 +author: Eduardo Trujillo +uuid: 2bdc6147-c228-47f2-8b5f-8f71915a5ea4 +--- + +Coming from OS X, I've grown accustomed to [Tunnelblick][tb], which is one of +the best OpenVPN clients for the platform. It is not perfect and there are many +commercial offerings out there that have a much nicer user interface, however +Tunnelblick gets the job done and it's open source. + +On Linux, the story is a bit different. Most distributions come with +[NetworkManager][nm], which is, as the name implies, a daemon for managing +network connections. For most systems, it is the component that takes care of +connecting to Wi-Fi networks, setting up an Ethernet connection when you plug +in the cable, and even 3G/4G modems. + +NetworkManager has support for plugins, which has led it to support many VPN +protocols, [including OpenVPN][nmo]! + +<div class="callout-quote"> +...it was pleasant to find that it not only is integrated with the main +networking daemon, but it also supported on the UI-side... +</div> + +When trying to figure out how to setup an OpenVPN client on Linux, it was +pleasant to find that it not only is integrated with the main networking +daemon, but it also supported on the UI-side, where most settings can be +tweaked. + +However, Tunnelblick still had something I couldn't find how to do using +NetworkManager alone: Connecting to the VPN automatically and reconnecting on +cases where the connection is dropped. + +For me, this is a _must have_ feature for VPN clients, given that I tend to +roam a lot with my laptop and can't remember to connect every time it connects +to a new network. + +Some initial digging led me to an [Arch Linux wiki page][alp] describing how to +write a script which sort-of achieves what I'm looking for. However, the +approach seemed brittle and insecure, due to the fact that you have to make the +connection available to other users on the system, and in some cases write +connection secrets in plaintext. + +After a while, I attempted to start writing a small daemon that would monitor +D-Bus and respond to NetworkManager events by determining if a VPN connection +should be started or stopped. An initial version was capable of determining if +the VPN connection is active. However, due to lack of free time to work on it +and the complexity of keeping track of the state of the machine, I decided to +put it on hold. + +While working on this project, I did discover that NetworkManager does have +some of this functionality built-in. It turns out you can specify a VPN to +connect to as a requirement for some connections to succeed: + + + +On Gentoo, this configuration can be accessed using `nm-connection-editor`, +which can be installed using the `gnome-extra/nm-applet` package. + +This is working great so far, but it does required some manual configuration +for every new connection you setup, which can be annoying if you roam through +many Wi-Fi networks. + +In the future, I might resume work on the D-Bus approach in order to automate +this a bit more. I would love it if my laptop simply did not trust any network +and automatically attempted to connect to a VPN. It would also be nice if this +is only attempted after a hotspot login is shown. For now, however, this should +be enough. + +[tb]: https://github.com/Tunnelblick/Tunnelblick +[nm]: https://wiki.gnome.org/Projects/NetworkManager/ +[nmo]: https://packages.gentoo.org/packages/net-misc/networkmanager-openvpn +[alp]: https://wiki.archlinux.org/index.php/NetworkManager#Use_dispatcher_to_connect_to_a_VPN_after_a_network_connection_is_established diff --git a/scss/_code.scss b/scss/_code.scss index b0ef18b9484fcc7da4073f5bd50f716571fee58d..f663db97ca74c1d7d0b307baaac1a54a53a86228 100644 --- a/scss/_code.scss +++ b/scss/_code.scss @@ -1,11 +1,13 @@ code { font-size: 0.8em; + background-color: #fafafa; + border: 1px solid #eee; } div.sourceCode { line-height: 1; - border: 1px $medium-gray solid; - background-color: scale-color($medium-gray, $lightness: 85%); + border: 1px solid #eee; + background-color: #fafafa; margin-bottom: rem-calc(10); overflow-x: auto; diff --git a/scss/app.scss b/scss/app.scss index d45ca07cd64b46a2757616a64f9c36e1f0b3fe9f..8eca4af028f955a5f79f2398cc2552ae184980e1 100644 --- a/scss/app.scss +++ b/scss/app.scss @@ -124,3 +124,7 @@ figcaption { text-align: left; } } + +figure { + text-align: center; +}