<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://nikotidar.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://nikotidar.github.io/" rel="alternate" type="text/html" /><updated>2024-05-22T20:35:12+00:00</updated><id>https://nikotidar.github.io/feed.xml</id><title type="html">/dev/urandom/</title><subtitle>A (nearly) no-CSS, fast, minimalist Jekyll theme.
</subtitle><author><name>rndtx</name></author><entry><title type="html">Change Indent in VSCode</title><link href="https://nikotidar.github.io/change-indent-in-vscode.html" rel="alternate" type="text/html" title="Change Indent in VSCode" /><published>2022-12-21T00:00:00+00:00</published><updated>2022-12-21T00:00:00+00:00</updated><id>https://nikotidar.github.io/change-indent-in-vscode</id><content type="html" xml:base="https://nikotidar.github.io/change-indent-in-vscode.html"><![CDATA[<h2 id="how-to-turn-4-spaces-indents-in-all-files-in-vscode-to-2-spaces">How to turn 4 spaces indents in all files in VSCode to 2 spaces</h2>
<ul>
  <li>Open file search</li>
  <li>Turn on regular expressions</li>
  <li>Enter <code class="language-plaintext highlighter-rouge">( {2})(?: {2})(\b|(?!=[,'";\.:\*\\\/\{\}\[\]\(\)]))</code> in the search fields</li>
  <li>Enter: <code class="language-plaintext highlighter-rouge">$1</code> in the replace field</li>
</ul>

<h2 id="how-to-turn-2-spaces-indents-in-all-files-in-vscode-to-4-spaces">How to turn 2 spaces indents in all files in VSCode to 4 spaces</h2>
<ul>
  <li>Open file search</li>
  <li>Turn on regular expressions</li>
  <li>Enter <code class="language-plaintext highlighter-rouge">( {2})(\b|(?!=[,'";\.:\\*\\\/{\}\[\]\(\)]))</code> in the search fields</li>
  <li>Enter: <code class="language-plaintext highlighter-rouge">$1$1</code> in the replace field</li>
</ul>

<p>Hope someone see this :)</p>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[How to turn 4 spaces indents in all files in VSCode to 2 spaces Open file search Turn on regular expressions Enter ( {2})(?: {2})(\b|(?!=[,'";\.:\*\\\/\{\}\[\]\(\)])) in the search fields Enter: $1 in the replace field]]></summary></entry><entry><title type="html">Find big files on Linux</title><link href="https://nikotidar.github.io/find-big-files-on-linux.html" rel="alternate" type="text/html" title="Find big files on Linux" /><published>2020-07-18T00:00:00+00:00</published><updated>2020-07-18T00:00:00+00:00</updated><id>https://nikotidar.github.io/find-big-files-on-linux</id><content type="html" xml:base="https://nikotidar.github.io/find-big-files-on-linux.html"><![CDATA[<p>What’s that, young man? Oh, you’re woman? I <strong>am</strong> sorry… Anyway;  what was it you wanted? You’re running out of disk space and you want to find all the big files on your linux machine so you can blindly delete them? Try this:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find / <span class="nt">-type</span> f <span class="nt">-size</span> +20000k <span class="nt">-exec</span> <span class="nb">ls</span> <span class="nt">-lh</span> <span class="o">{}</span> <span class="se">\;</span> | <span class="nb">awk</span> <span class="s1">'{ print $9 ": " $5 }'</span>
</code></pre></div></div>

<p>You’re welcome :)</p>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[What’s that, young man? Oh, you’re woman? I am sorry… Anyway; what was it you wanted? You’re running out of disk space and you want to find all the big files on your linux machine so you can blindly delete them? Try this:]]></summary></entry><entry><title type="html">How To Fix `unable to lock database` Arch Linux</title><link href="https://nikotidar.github.io/how-to-fix-unable-to-lock-database-archlinux.html" rel="alternate" type="text/html" title="How To Fix `unable to lock database` Arch Linux" /><published>2020-07-11T00:00:00+00:00</published><updated>2020-07-11T00:00:00+00:00</updated><id>https://nikotidar.github.io/how-to-fix-unable-to-lock-database-archlinux</id><content type="html" xml:base="https://nikotidar.github.io/how-to-fix-unable-to-lock-database-archlinux.html"><![CDATA[<p>The other day, I was about to update my Arch Linux repository. When I issued the following command to update Arch Linux repository, it showed error, and won’t let me to install any package or remove any package</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>pacman <span class="nt">-Syu</span>
</code></pre></div></div>

<p>Sample output</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>:: Synchronizing package databases...
error: failed to update core <span class="o">(</span>unable to lock database<span class="o">)</span>
error: failed to update extra <span class="o">(</span>unable to lock database<span class="o">)</span>
error: failed to update community <span class="o">(</span>unable to lock database<span class="o">)</span>
error: failed to update multilib <span class="o">(</span>unable to lock database<span class="o">)</span>
error: failed to synchronize any databases
error: failed to init transaction <span class="o">(</span>unable to lock database<span class="o">)</span>
error: could not lock database: File exists
 <span class="k">if </span>you<span class="s1">'re sure a package manager is not already
 running, you can remove /var/lib/pacman/db.lck
</span></code></pre></div></div>

<p>The beauty of Linux distros is sometimes they will the explicitly display the solution along with the error message. As you can see in the above output, it says: <strong>“..you can remove /var/lib/pacman/db.lck”</strong>.</p>

<p>So, I simply deleted aforementioned file with command:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">sudo rm</span> /var/lib/pacman/db.lck
</code></pre></div></div>

<p>Voila! It worked. I can then able to update, install and remove without any problems.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">sudo </span>pacman <span class="nt">-Syu</span>
</code></pre></div></div>

<p>Sample output</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>:: Synchronizing package databases...
 core is up to <span class="nb">date
 </span>extra is up to <span class="nb">date
 </span>community is up to <span class="nb">date
 </span>multilib is up to <span class="nb">date
 </span>endeavouros is up to <span class="nb">date</span>
:: Starting full system upgrade...
resolving dependencies...
looking <span class="k">for </span>conflicting packages...

Packages <span class="o">(</span>64<span class="o">)</span> alsa-lib-1.2.3.2-1  cdrtools-3.02a09-3  code-1.47.0-1  electron7-7.1.14-6  endeavouros-theming-5-2.2  firefox-78.0.2-1  fribidi-1.0.10-1  gjs-2:1.64.4-1
              gnome-boxes-3.36.5-1  gnome-clocks-3.36.2-2  gnome-control-center-3.36.4-1  gnome-desktop-1:3.36.4-1  gnome-multi-writer-3.32.1-2  gnome-music-1:3.36.4.1-1
              gnome-packagekit-3.32.0-2  gnome-shell-1:3.36.4-1  gnome-usage-3.33.2-2  grub-tools-1.3-1  hardinfo-0.5.1.816.g877ea2b-2  hidapi-0.9.0-2  i3lock-2.12-2
              i3status-2.13-3  jq-1.6-3  js68-68.10.0-1  jshon-20131105-4  keyutils-1.6.3-1  lib32-libpng-1.6.37-3  libconfig-1.7.2-3  libfdk-aac-2.0.1-2  libgcrypt-1.8.6-1
              libiptcdata-1.0.4-5  liblrdf-0.6.1-4  libmfx-20.2.0-1  libnfs-4.0.0-4  libopenraw-0.1.3-2  libosinfo-1.8.0-1  libpng-1.6.37-3  libsodium-1.0.18-2
              libutempter-1.2.1-1  lsb-release-1.4-16  lxappearance-0.6.3-3  lxinput-gtk3-0.3.5-3  mesa-20.1.3-1  mutter-3.36.4-1  ndisc6-1.0.4-2  os-prober-1.77-2
              osinfo-db-20200529-1  php-7.4.8-2  php-gd-7.4.8-2  plank-0.11.89-2  python-sphinx-3.1.2-1  re2-1:20200706-1  sdl2-2.0.12-2  simple-scan-3.36.4-1
              sqlitebrowser-3.11.2-2  thunderbird-extension-enigmail-2.1.7-3  ttf-ubuntu-font-family-0.83-6  usbredir-0.8.0-2  webkit2gtk-2.28.3-1  wmctrl-1.07-6
              wvdial-1.61-8  xl2tpd-1.3.15-2  xterm-357-1  zeromq-4.3.2-2

Total Download Size:     5.59 MiB
Total Installed Size:  820.45 MiB
Net Upgrade Size:       <span class="nt">-0</span>.78 MiB
</code></pre></div></div>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[The other day, I was about to update my Arch Linux repository. When I issued the following command to update Arch Linux repository, it showed error, and won’t let me to install any package or remove any package]]></summary></entry><entry><title type="html">Seperti Apa Rasanya Ikhlas Itu?</title><link href="https://nikotidar.github.io/seperti-apa-rasanya-ikhlas-itu.html" rel="alternate" type="text/html" title="Seperti Apa Rasanya Ikhlas Itu?" /><published>2020-03-26T00:00:00+00:00</published><updated>2020-03-26T00:00:00+00:00</updated><id>https://nikotidar.github.io/seperti-apa-rasanya-ikhlas-itu</id><content type="html" xml:base="https://nikotidar.github.io/seperti-apa-rasanya-ikhlas-itu.html"><![CDATA[<p>Teori dan praktik memang sering tidak sejalan. Mengerti teori dan manfaat tentang menahan marah, misalnya. Tapi dalam praktiknya, belum tentu bisa dijalankan.</p>

<p>Saya butuh waktu yang sangat lama untuk benar-benar memahami tentang mengapa harus mengendalikan amarah dan bagaimana caranya. Juga untuk mengerti tentang apa sebenarnya yang disebut “Ikhlas” itu, dan bagaimana rasanya.</p>

<p>Saya tidak akan bercerita tentang pengalaman detilnya, namun ciri utamanya saja. Yakni: jika orang sudah ikhlas tentang suatu hal, dia tidak akan membicarakan itu lagi. Tidak membahas, tidak mengingat-ingat, tidak bercerita di laman medsos, tidak curhat, tidak nggrundhel, juga tidak lagi berusaha ikhlas dengan berulang-ulang mengatakan berusaha ikhlas. Semua lepas, seperti layang-layang yang dibiarkan terbang mengikuti angin. Tak lagi dipegang, dikendalikan, atau dicari.</p>

<p>Ini berlaku untuk semua pengalaman, baik kecil maupun besar. Tidak ada batas usia maupun bobot pengalaman. Begitu ybs sudah ikhlas beneran, semua keinginan untuk bercerita atau mengulang-ulang kenangan lama, akan sirna begitu saja. Paling-paling kalau menemui hal serupa, ia hanya merespon pendek dan tidak punya minat lagi untuk membahasnya.</p>

<p>Satu hal yang membuat ikhlas jadi sukar dilakukan adalah: Ego.
Misalnya: ada orang pernah disakiti. Ia merasa diperlakukan tidak adil, merasa berhak untuk membalas, merasa tak layak disakiti, merasa ingin melihat mereka yang menyakitinya mendapat balasan setimpal, merasa ingin membicarakannya terus-menerus, dan masih memberi ruang khusus di hatinya untuk menyimpan file buruk tersebut. Masih ada rasa sakit di hati ketika mengenang pengalaman itu, dan masih ada rasa penasaran tentang kapan balasan akan menimpa orang yang pernah menyakitinya.</p>

<p>Sebaliknya, kalau sudah ikhlas, semua rasa marah dan sakit itu lenyap seketika. Berganti dengan rasa “Nrimo”. No problem, no hard feeling, menerima semua pengalaman itu dengan lapang dada dan gembira. Menerima semuanya sebagai keniscayaan semata, sebagai bagian dari proses bertumbuh sebagai manusia. Bukan lagi sebagai pengalaman yang dilabeli dengan buruk-baik.</p>

<p>–</p>

<p>Susah juga ternyata, ya?</p>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[Teori dan praktik memang sering tidak sejalan. Mengerti teori dan manfaat tentang menahan marah, misalnya. Tapi dalam praktiknya, belum tentu bisa dijalankan.]]></summary></entry><entry><title type="html">Setting Up Your TurtleCoin Public Node</title><link href="https://nikotidar.github.io/set-up-your-turtlecoin-public-node.html" rel="alternate" type="text/html" title="Setting Up Your TurtleCoin Public Node" /><published>2020-01-10T00:00:00+00:00</published><updated>2020-01-10T00:00:00+00:00</updated><id>https://nikotidar.github.io/set-up-your-turtlecoin-public-node</id><content type="html" xml:base="https://nikotidar.github.io/set-up-your-turtlecoin-public-node.html"><![CDATA[<h1 id="setting-up-and-configuring-the-server">Setting up and configuring the server</h1>

<p>First of all we need a server that will be used to host our public node. You can use your own server or purchase a cheap VPS at DigitalOcean, Google Cloud, Vultr or any others VPS provider. Many cloud providers have a free trial so you can set up a server at no cost.</p>

<p>We’ll use an <strong>Ubuntu 18.04 server</strong> for this purpose. The steps will be almost the same for any flavor of Linux. You can use ssh or putty for connecting to your server.</p>

<p>Now we need to add a user as most VPS comes with a root login and it is really not a good idea to run anythis as root (<em>consider it as a admin with superpowers</em>). We’ll create a user named <strong><em>turtlenode</em></strong> but you’re free to choose any username.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># adduser turtlenode</span>
</code></pre></div></div>

<p><em>Set and confirm the new user’s password at the prompt. A strong password is highly recommended! Follow the prompts to set the new user’s information. It is fine to accept the defaults to leave all of this information blank.</em></p>

<p>Next, run this command to provide admin rights to our server and switch to our new user</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># usermod -aG sudo turtlenode</span>
<span class="c"># su - turtlenode</span>
</code></pre></div></div>

<p><em>After running this command, you’llbe able to see the prompt has changed. If you’ve completed these steps and see a terminal with username as <strong>turtlenode</strong>, congrats! You’re already halfway through!</em></p>

<h1 id="getting-turtlecoin">Getting TurtleCoin</h1>

<p>Now we’ll build TurtleCoin on our server. First of all, we need to install all the dependencies.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt-get <span class="nb">install</span> <span class="nt">-y</span> build-essential python-dev gcc g++ git cmake
<span class="nb">sudo </span>add-apt-repository universe
<span class="nb">sudo </span>apt-get update
<span class="nb">sudo </span>apt-get <span class="nb">install </span>libboost-all-dev
</code></pre></div></div>

<p>After all the dependencies have been installed, we need to get the <a href="https://github.com/turtlecoin/turtlecoin">TurtleCoin source code</a> and build using the following commands</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone <span class="nt">-b</span> master <span class="nt">--single-branch</span> https://github.com/turtlecoin/turtlecoin <span class="o">&amp;&amp;</span> <span class="nb">cd </span>turtlecoin
<span class="nb">mkdir </span>build <span class="o">&amp;&amp;</span> <span class="nb">cd </span>build
cmake .. <span class="o">&amp;&amp;</span> make
</code></pre></div></div>

<p><em>This will take some time to complete so you can grab a coffee till then. After this step is complete, you’ll be able to see new files in the ~/turtlecoin/build/src/ directory. If you don’t, then probably the build did not complete successfully and you may want to execute these steps again.</em></p>

<h1 id="setting-up-turtlecoind-high-availability-daemon-wrapper">Setting up TurtleCoind High-Availability Daemon Wrapper</h1>

<p>Now that we have everything ready with us, we need to make sure that our daemon always stays up and on the right chain. For this, we’ll be using the <a href="https://github.com/turtlecoin/turtlecoind-ha">turtlecoind-ha-wrapper</a>.</p>

<p>First of all we need to get back to our home directory (~) using</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> ~
</code></pre></div></div>

<p>Next, we need to install nodejs, a dependency for the wrapper using the following command</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>apt-get <span class="nb">install </span>nodejs npm
</code></pre></div></div>

<p>Verify if it is installed successfully by running</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nodejs <span class="nt">-v</span>
</code></pre></div></div>

<p>This will output the current version of nodejs. If your version is v8.x or higher, you’re good to go. Else, you’ll need to update.</p>

<p>Next, we need to clone the wrapper and place the daemon to work with the wrapper</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/turtlecoin/turtlecoind-ha.git <span class="o">&amp;&amp;</span> <span class="nb">cd </span>turtlecoind-ha
<span class="nb">cp</span> ~/turtlecoin/build/src/TurtleCoind <span class="nb">.</span>
</code></pre></div></div>

<p>Now we need to install all the dependencies for the wrapper. Don’t worry, we don’t need to run every command now as installing dependencies with nodejs is pretty easy. All you need to do is run this single command</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span>
</code></pre></div></div>

<p><strong><em>Note</em></strong> : Running <em>npm install</em> will automatically fetch and starting syncing from checkpoints for a faster sync.</p>

<p>We now need to set a few parameters to tell the network about our daemon and the fee it charges, for example say 250.00 TRTL per transaction. We need to add these parameters to the file <em>service.js</em>. Open up a text editor, in this tutorial i will use nano.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nano service.js
</code></pre></div></div>

<p>Add the following lines in bold here (<em>after line number 10</em>) without missing the commas</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">var</span> <span class="nx">daemon</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">TurtleCoind</span><span class="p">({</span>
    <span class="na">loadCheckpoints</span><span class="p">:</span> <span class="dl">'</span><span class="s1">./checkpoints.csv</span><span class="dl">'</span><span class="p">,</span>
    <span class="na">feeAddress</span><span class="p">:</span> <span class="dl">"</span><span class="s2">YOUR TURTLECOIN ADDRES</span><span class="dl">"</span><span class="p">,</span>
    <span class="na">feeAmount</span><span class="p">:</span> <span class="mi">25000</span>
<span class="p">})</span>
</code></pre></div></div>

<p>Substitute your wallet address and the feeAmount. Please not that the <strong>amount here is in shells</strong>.</p>

<p>1 TRTL = 100 shells, so 25000 shells = 250 TRTL</p>

<p>Save this file with <strong>CTRL + O</strong>, then <strong>CTRL + X</strong></p>

<p><em>As we want our daemon to continue running non-stop 24x7x365, we need something that will help us accomplish that</em>.</p>

<p>There’s a process manager called pm2 wich can be installed with npm, the package manager for <strong><em><a href="https://www.npmjs.com/package/pm2">nodejs</a></em></strong>. The setup is very simple</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">sudo </span>npm <span class="nb">install</span> <span class="nt">-g</span> pm2
</code></pre></div></div>

<p><em>Simple, isn’t it?</em></p>

<p>Now start the daemon with the following command</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pm2 start service.js <span class="nt">--name</span> turtlecoind
</code></pre></div></div>

<p>Now if you want to monitor your daemon or want to check the logs, you can do so by</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pm2 monit
pm2 log
</code></pre></div></div>

<p><em>Yay! You’ve successfully set up your own public TurtleCoin node.</em></p>

<p><em>Congratulations! You are now a TurtleCoin service operator.</em></p>

<p>–</p>

<p>If you liked this tutorial, or made some TRTLs running your public node, please consider donating. Thanks!</p>

<blockquote>
  <p>TRTLv2Vdfgp3chLbD5NUKMEgkwQjLthtuf3YHLUv6tSATLxDv6VP69N9GH8H6uQF4J1rBr5P1wPfM58sG5NRFXdfPGXoag7fvpz</p>
</blockquote>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[Setting up and configuring the server]]></summary></entry><entry><title type="html">An Idiot’s Guide to Bruteforcing [PART I]</title><link href="https://nikotidar.github.io/an-idiot-guide-to-bruteforcing-part-1.html" rel="alternate" type="text/html" title="An Idiot’s Guide to Bruteforcing [PART I]" /><published>2019-11-03T00:00:00+00:00</published><updated>2019-11-03T00:00:00+00:00</updated><id>https://nikotidar.github.io/an-idiot-guide-to-bruteforcing-part-1</id><content type="html" xml:base="https://nikotidar.github.io/an-idiot-guide-to-bruteforcing-part-1.html"><![CDATA[<p>The other day i found a password-protected zip file on an old hard drive. Seeing that it had an intruiging name, and that i didn’t know the password, i told my self that this would be a good challange to learn bruteforcing.</p>

<p><em>Bruteforcing</em>. The act of systematically checking every possible password until the correct one is found - <a href="https://en.wikipedia.org/wiki/Brute-force_attack">see Wikipedia for more.</a></p>

<hr />

<h1 id="the-math-behind-it">The Math Behind It</h1>
<p>I know, now you’ll start to hate me. It seems that the definition of bruteforcing requires you not to worry about math. If anything, bruteforcers want to get away from math. But once you get started with it, it’s not possible to evade it.</p>

<p>So i told myself i needed to learn it, at least to be able to know how long cracking this file would work.</p>

<p>Bruteforcing is pure math and i didn’t understand that in the beginning. Which is why i ended up frustrated after trying to crack on password 24/7 for 30 consecutive days with no results :(.</p>

<p>The math it is simple. Let’s define its two component and then their relationship:</p>
<ol>
  <li>Character set</li>
  <li>Password length</li>
</ol>

<h1 id="character-set">Character Set</h1>
<p>The character set is a list of characters the password, you are trying to bruteforce, contains. Typically it’s made up of a combination of the following types:</p>
<ul>
  <li>lowercase alphabet [a-z]</li>
  <li>uppercase alphabet [A-Z]</li>
  <li>numbers [0-9]</li>
  <li>extra characters [.-!]</li>
</ul>

<p>Let’s use a practical example. In the case of the file i wanted to crack, i used the following command to bruteforce it.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>fcrackzip <span class="nt">-b</span> <span class="nt">-c</span> aA1! <span class="nt">-u</span> <span class="nt">-l</span> 4-10 file.zip <span class="o">&gt;</span> result.txt
</code></pre></div></div>
<p>In <code class="language-plaintext highlighter-rouge">fcrackzip</code> the <code class="language-plaintext highlighter-rouge">c aA1!</code> parameter defines the character set. In this case it means that we are going to use lowercase and uppercase alphabet numbers and extra characters.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Character <span class="nb">set</span> <span class="o">=</span> a-z + A-Z + 0-9 + .-!

<span class="c"># of characters = 26 + 26 + 10 + 33 = 95</span>
</code></pre></div></div>
<p>If you add all these characters, you will end up with a total of 95. Let’s go look at password length.</p>

<h1 id="password-length">Password Length</h1>
<p>It defines how many characters the password, we are trying to crack, has.</p>

<p>When bruteforcing, the password length tends to be an educated guess. It’s rare to exactly know how long the password is. More often we know a minimal and maximum password length.</p>

<p>If we took at the command from above again, we can see that i, too, made an educated guess concercing the password length.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>fcrackzip <span class="nt">-b</span> <span class="nt">-c</span> aA1! <span class="nt">-u</span> <span class="nt">-l</span> 4-10 file.zip <span class="o">&gt;</span> result.txt
</code></pre></div></div>
<p>I estimated it to be between 4 and 10 characters.</p>

<h1 id="the-relationship">The Relationship</h1>
<p>Now that we have the basic information straightened out, let’s see how this helps us. Let us calculate the total number of possible combinations.</p>

<p>So far, we have established the following:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Minimum password length : 4
Maximum password length : 10
Size of character <span class="nb">set</span> : 95
</code></pre></div></div>
<p>The relationship between the two is described by this equation:</p>

<p><img src="https://i.imgur.com/FPip4mE.png" alt="Character Set" /></p>

<p>For each character in the password you have 95 possibilities.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>95 x 95 x 95 x 95 <span class="o">=</span> 81,450,625 possible combinations
</code></pre></div></div>
<p>That means for a 4 characters password, you have 81 million possible combinations. For a password with 5 characters the total number of combinations is:</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>95 x 95 x 95 x 95 x 95 <span class="o">=</span> 7,737,809,375 possible combinations
</code></pre></div></div>
<p>We can obviously also calculate the number of combinations for a 6, 7, 8, 9 or 10 character password - if it interests you, do go ahead and calculate it.</p>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[The other day i found a password-protected zip file on an old hard drive. Seeing that it had an intruiging name, and that i didn’t know the password, i told my self that this would be a good challange to learn bruteforcing.]]></summary></entry><entry><title type="html">Methods of Signing with GPG</title><link href="https://nikotidar.github.io/signing-your-commit-on-osx.html" rel="alternate" type="text/html" title="Methods of Signing with GPG" /><published>2019-10-28T00:00:00+00:00</published><updated>2019-10-28T00:00:00+00:00</updated><id>https://nikotidar.github.io/signing-your-commit-on-osx</id><content type="html" xml:base="https://nikotidar.github.io/signing-your-commit-on-osx.html"><![CDATA[<h1 id="using-gpg">Using GPG</h1>

<h2 id="step-1-install-software">Step 1: Install software</h2>
<p>We use the Homebrew package manager for this step.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew install gpg2 gnupg pinentry-mac       
</code></pre></div></div>

<h2 id="step-2-update-gnupggpg-agentconf">Step 2: Update ~/.gnupg/gpg-agent.conf</h2>
<p>If this file does not exist, create it.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Insert the following text
pinentry-program /usr/local/bin/pinentry-mac
</code></pre></div></div>

<h2 id="step-3-update-or-create-gnupggpgconf">Step 3: Update or Create ~/.gnupg/gpg.conf</h2>
<p>If this file does not exist, create it.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Uncomment within config (or add this line)
# This tells gpg to use the gpg-agent
use-agent
</code></pre></div></div>

<h2 id="step-4-modify-your-shell">Step 4: Modify your Shell</h2>
<p>Append the following to your ~/.bash_profile or ~/.bashrc or ~/.zshrc</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
export GPG_TTY=`tty`
</code></pre></div></div>

<h2 id="step-5-restart-your-terminal-or-source-your-rc-file">Step 5: Restart your Terminal or source your ~/.*rc file</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># on the built-in bash on macos use
source ~/.bash_profile
# if using bash through homebrew over ssh use
source ~/.bashrc
# and if using zsh
source ~/.zshrc
</code></pre></div></div>

<h2 id="step-6-create-your-gpg-key">Step 6: Create your GPG Key</h2>
<p>Run the following command to generate your key, note we have to use the <code class="language-plaintext highlighter-rouge">--expert</code> flag so as to generate a 4096-bit key.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg --full-gen-key
</code></pre></div></div>

<h2 id="step-7-update-the-permissions-on-your-gnupg-directory">Step 7: Update the Permissions on your ~/.gnupg Directory</h2>
<p>You will need to modify the permissions to 700 to secure this directory.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>chmod 700 ~/.gnupg
</code></pre></div></div>

<h2 id="step-8-answer-the-questions">Step 8: Answer the Questions</h2>
<p>Once you have entered your options, pinentry will prompt you for a password for the new PGP key.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
         0 = key does not expire
      &lt;n&gt;  = key expires in n days
      &lt;n&gt;w = key expires in n weeks
      &lt;n&gt;m = key expires in n months
      &lt;n&gt;y = key expires in n years
Key is valid for? (0) 3y
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "RandallTux (rndtx) &lt;me@rndtx.id&gt;"

Real name: RandallTux
Email address: me@rndtx.id
Comment:
You selected this USER-ID:
    "RandallTux &lt;me@rndtx.id&gt;"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
</code></pre></div></div>

<h2 id="step-9-get-your-key-info-for-git-etc">Step 9: Get your key info for Git, etc.</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># List your keys
gpg -k
</code></pre></div></div>

<h2 id="step-10-get-your-key-id">Step 10: Get your key id</h2>
<p>Use the next command to generate a short form of the key fingerprint.</p>

<p>Copy the text after the <code class="language-plaintext highlighter-rouge">rsa4096/</code> and before the date generated and use the copied id in step 13:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg -K --keyid-format SHORT
sec rsa4096/######## YYYY-MM-DD [SC] [expires: YYYY-MM-DD]
</code></pre></div></div>

<p><em>You need to copy the output similar to the example above where the ######## is.</em></p>

<h2 id="step-11-export-the-fingerprint">Step 11: Export the fingerprint</h2>
<p>In the output from step 10, the line below the row that says ‘pub’ shows a fingerprint-this is what you use in the <your key=""> placeholder.  The output from below is what you copy to Github:</your></p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># The export command below gives you the key you add to GitHub
gpg --armor --export &lt;your key id&gt;
</code></pre></div></div>

<h2 id="step-12-configure-git-to-use-gpg">Step 12: Configure Git to use gpg</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config --global gpg.program $(which gpg)
</code></pre></div></div>

<h2 id="step-13-configure-git-to-use-your-signing-key">Step 13: Configure Git to use your signing key</h2>
<p>The below command needs the fingerprint from step 10 above:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config --global user.signingkey 1111111
</code></pre></div></div>

<h2 id="step-14-configure-git-to-sign-all-commits-optional-you-can-configure-this-per-repository-too">Step 14: Configure Git to sign all commits (Optional-you can configure this per repository too)</h2>
<p>This tells Git to sign all commits using the key you specified in step 13.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git config --global commit.gpgsign true
</code></pre></div></div>

<h2 id="step-15-perform-a-commit">Step 15: Perform a Commit</h2>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git commit -S -s -m "My Signed Commit"
</code></pre></div></div>

<h2 id="step-16-pinentry-prompt">Step 16: Pinentry Prompt</h2>
<p>You will now be prompted by Pinentry for the password for your signing key.  You can enter it into the Dialog box-with the option of saving the password to the macOS X Keychain.</p>

<h2 id="step-17-submit-your-pgp-key-to-github-to-verify-your-commits">Step 17: Submit your PGP key to Github to verify your Commits</h2>
<p>Login into Github.com and go to your settings, SSH and GPG Keys, and add your GPG key from the page.</p>

<h2 id="step-18-submitting-your-key-to-a-public-keyserver-very-optional">Step 18: Submitting Your Key to a Public Keyserver (very optional)</h2>
<p>Before you jump on submitting your key to a service such as the <a href="https://pgp.mit.edu">MIT PGP Key Server</a>, you should consider the following:</p>
<ul>
  <li>You cannot delete your key once submitted</li>
  <li>Spammers have been known to harvest email addresses from these servers</li>
  <li>If you’re only signing your Git commits to Github this isn’t necessary</li>
</ul>

<h1 id="troubleshooting">Troubleshooting</h1>
<p>If you have any errors when generating a key regarding gpg-agent, try the following command to see what error it generates:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gpg-agent --daemon
</code></pre></div></div>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[Using GPG]]></summary></entry><entry><title type="html">KISS Linux and ThinkPad = &amp;lt;3</title><link href="https://nikotidar.github.io/kiss-and-thinkpad.html" rel="alternate" type="text/html" title="KISS Linux and ThinkPad = &amp;lt;3" /><published>2019-10-26T00:00:00+00:00</published><updated>2019-10-26T00:00:00+00:00</updated><id>https://nikotidar.github.io/kiss-and-thinkpad</id><content type="html" xml:base="https://nikotidar.github.io/kiss-and-thinkpad.html"><![CDATA[<h1 id="install-kiss">Install KISS</h1>
<p>The installation is very similiar to Gentoo’s stage 3 tarballs.</p>

<p>An archive is used which contains a full KISS system minus the boot-loader and kernel. The provided archive contains all of the tooling needed to rebuild itself as well as the remaining packages needed for an installation.</p>

<p>You will need an existing Linux distribution to use as a base for the installation. It does not matter what kind of distribution it is nor does it matter what <code class="language-plaintext highlighter-rouge">lib</code> it uses.</p>

<p>For the purpose of this guide I will be using another Linux distribution’s Live-CD to bootstrap KISS. The Live-CD <em>must</em> include <code class="language-plaintext highlighter-rouge">tar</code> (with <code class="language-plaintext highlighter-rouge">xz</code> support), <code class="language-plaintext highlighter-rouge">mountpoint</code> and other basic utilities.</p>

<p>From this point on, the guide assumes you have booted a Live-CD and have an <em>internet connection</em>.</p>

<h1 id="index">Index</h1>
<ul>
  <li>Setting up disks</li>
  <li>Install KISS</li>
  <li>Enable repository signing</li>
  <li>Rebuild KISS</li>
  <li>Build userspace tools</li>
  <li>Configure and build the kernel
    <ul>
      <li>Download the kernel sources</li>
      <li>Extract the kernel sources</li>
      <li>Configure the kernel</li>
      <li>Build the kernel</li>
      <li>Install the kernel</li>
    </ul>
  </li>
  <li>Install grub</li>
  <li>Install init scripts</li>
  <li>Enable the community repository</li>
</ul>

<h1 id="setting-up-disks">Setting up disks</h1>
<p>Get the disks ready for the installation. This involves creating a partition table, partitions and the desired file-systems. This step will differ depending on whether or not you are doing a BIOS or UEFI installation.</p>

<p>The guide will <em>not</em> cover this step. If you require assistance with this step; read one of the links below. This step is not unique to KISS and there are tried and tested resources for all kinds of disk layout online.</p>

<ul>
  <li><a href="https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Disks">Gentoo wiki</a></li>
  <li><a href="https://wiki.archlinux.org/index.php/Installation_guide#Partition_the_disks">Archlinux wiki</a></li>
</ul>

<h1 id="install-kiss-1">Install KISS</h1>
<p>At this stage your disks should be setup and mounted to <code class="language-plaintext highlighter-rouge">/mnt</code>.</p>

<p>Download the latest release.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>wget https://dl.getkiss.org/kiss-chroot.tar.xz

<span class="c"># recommend: verify the download.</span>
<span class="nv">$ </span>wget https://dl.getkiss.org/kiss-chroot.tar.xz.sha256
<span class="nv">$ </span><span class="nb">sha256sum </span>kiss-chroot.tar.xz | diff kiss-chroot.tar.xz.sha256 - <span class="o">&amp;&amp;</span> <span class="nb">echo </span>good

<span class="c"># recommend: verify the download's signature.</span>
<span class="nv">$ </span>wget https://dl.getkiss.org/kiss-chroot.tar.xz.asc
<span class="nv">$ </span>gpg <span class="nt">--verify</span> kiss-chroot.tar.xz.asc kiss-chroot.tar.xz
</code></pre></div></div>

<p>Download the <code class="language-plaintext highlighter-rouge">chroot</code> helper</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>wget https://dl.getkiss.org/kiss-chroot

<span class="c"># inspect the script before you execute it below</span>
<span class="nv">$ </span>vi kiss-chroot

<span class="c"># ensure the script is executable</span>
<span class="nv">$ </span><span class="nb">chmod</span> +x kiss-chroot
</code></pre></div></div>
<p>Unpack the <code class="language-plaintext highlighter-rouge">tarbal</code> (Install KISS)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># make sure disks are first mounted to /mnt</span>
<span class="nv">$ </span>mount <span class="nt">-t</span> ext4 /dev/sdaX /mnt
<span class="nv">$ </span><span class="nb">tar </span>xvf kiss-chroot.tar.xz <span class="nt">-C</span> /mnt <span class="nt">--strip-components</span> 1
</code></pre></div></div>
<p>Enter the <code class="language-plaintext highlighter-rouge">chroot</code></p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>./kiss-chroot /mnt
</code></pre></div></div>
<h1 id="enable-repository-signing">Enable repository signing</h1>
<p>This step is <strong><em>entirely optional</em></strong> and can also be done after the installation. See <a href="https://github.com/kisslinux/kiss/issues/60">#60</a> for more information.</p>

<p>Build and install gnupg1</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>kiss build gnupg1
<span class="nv">$ </span>kiss <span class="nb">install </span>gnupg1
</code></pre></div></div>
<p>Import Dylanarap’s key</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>gpg <span class="nt">--keyserver</span> keys.gnupg.net <span class="nt">--recv-key</span> 46D62DD9F1DE636E
</code></pre></div></div>
<p>Trust Dylanarap’s key</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">echo </span>trusted-key 0x46d62dd9f1de636e <span class="o">&gt;&gt;</span> /root/.gnupg/gpg.conf
</code></pre></div></div>
<p>Go to the system-wide repository</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">cd</span> /var/db/kiss/repo
</code></pre></div></div>
<p>Enable signature verification</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>git config merge.verifySignature <span class="nb">true</span>
</code></pre></div></div>
<h1 id="rebuild-kiss">Rebuild KISS</h1>
<p>This step is <strong><em>entirely optional</em></strong> and you can just use the supplied binaries from the downloaded <code class="language-plaintext highlighter-rouge">chroot</code>. This step can also be done after the installation.</p>

<p>Modify compiler options (Optional)</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">export </span><span class="nv">CHOST</span><span class="o">=</span><span class="s2">"x86_64-pc-linux-gnu"</span>
<span class="nv">$ </span><span class="nb">export </span><span class="nv">CFLAGS</span><span class="o">=</span><span class="s2">"-march=core-avx2 -mavx2 -O2 -pipe"</span>
<span class="nv">$ </span><span class="nb">export </span><span class="nv">CXXFLAGS</span><span class="o">=</span><span class="s2">"</span><span class="k">${</span><span class="nv">CFLAGS</span><span class="k">}</span><span class="s2">"</span>
<span class="nv">$ </span><span class="nb">export </span><span class="nv">MAKEFLAGS</span><span class="o">=</span><span class="s2">"-j3"</span>

<span class="c"># note: this is for ThinkPad x240</span>
</code></pre></div></div>
<p>Update all base packages to the latest version</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>kiss update
</code></pre></div></div>
<p>Start rebuilding all packages</p>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>kiss build
</code></pre></div></div>
<h1 id="build-userspace-tools">Build userspace tools</h1>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># required for mounting drives</span>
<span class="nv">$ </span>kiss build e2fsprogs eudev

<span class="c"># requires for connecting to WiFi</span>
<span class="nv">$ </span>kiss build wpa_supplicant
<span class="nv">$ </span>kiss <span class="nb">install </span>wpa_supplicant

<span class="c"># required for connecting to the internet</span>
<span class="c"># (wifi and ethernet) (dynamic ip addressing)</span>
<span class="nv">$ </span>kiss build dhcp
<span class="nv">$ </span>kiss <span class="nb">install </span>dhcpcd
</code></pre></div></div>
<h1 id="configure-and-build-the-kernel">Configure and build the kernel</h1>
<p>This step involces configuring and building your own Linux kernel. If you have not done this before, below are a few guides to get you started.</p>
<ul>
  <li><a href="https://kernelnewbies.org/KernelBuild">KernelNewbies</a></li>
  <li><a href="https://wiki.gentoo.org/wiki/Kernel/Gentoo_Kernel_Configuration_Guide">Gentoo wiki</a></li>
  <li><a href="https://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/index.html">Linuxtopia</a></li>
</ul>

<p>The Linux kernel is <strong><em>not</em></strong> managed by the package manager. The kernel is managed manually by the user.</p>

<p><strong><em>NOTE</em></strong>: KISS does not support booting using an <code class="language-plaintext highlighter-rouge">initramfs</code>. When configuring your kernel ensure that all required file-system, disk controller and USB drivers are built with [<em>] (Yes) and <strong>*not</strong></em>[m] (Module).</p>

<h1 id="download-the-kernel-sources">Download the kernel sources</h1>
<p>You can find the latest version at <a href="https://kernel.org">https://kernel.org</a></p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.3.6.tar.xz
</code></pre></div></div>
<h1 id="extract-the-kernel-sources">Extract the kernel sources</h1>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span><span class="nb">tar </span>xvf linux-5.3.6.tar.xz

<span class="c"># change directory to the kernel sources</span>
<span class="nv">$ </span><span class="nb">cd </span>linux-5.3.6
</code></pre></div></div>
<h1 id="configure-the-kernel">Configure the kernel</h1>
<p><strong><em>NOTE:</em></strong> You can determine which drivers you need to enable by Googling your hardware.
<strong><em>NOTE:</em></strong> If you require firmware blobs, the drivers you enable must be enabled as [m] (modules). You can also optionally include the firmware in the kernel itself.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># install 'linux-firmware' if you require firmware</span>
<span class="c"># blobs for your hardware</span>
<span class="nv">$ </span>kiss build linux-firmware
<span class="nv">$ </span>kiss <span class="nb">install </span>linux-firmware

<span class="c"># generate a default config with *most* drivers</span>
<span class="c"># compiled as `[*]` (not modules)</span>
<span class="nv">$ </span>make defconfig

<span class="c"># open an interactive menu to edit the generated</span>
<span class="c"># config, enabling everything extra you may need.</span>
<span class="nv">$ </span>make menuconfig

<span class="c"># store the generated config for reuse later</span>
<span class="nv">$ </span><span class="nb">cp</span> .config /path/to/somewhere
</code></pre></div></div>

<p>Here’s my kernel config that i used for <code class="language-plaintext highlighter-rouge">ThinkPad x240</code></p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Processor <span class="nb">type </span>and features  <span class="nt">---</span><span class="o">&gt;</span>
  Processor family <span class="o">(</span>Intel Core AVX2<span class="o">)</span>
  &lt;<span class="k">*</span><span class="o">&gt;</span> CPU microcode loading support
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> Intel microcode loading support
Power management and ACPI options  <span class="nt">---</span><span class="o">&gt;</span>
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> ACPI <span class="o">(</span>Advanced Configuration and Power Interface<span class="o">)</span> Support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Battery
    &lt;<span class="k">*</span><span class="o">&gt;</span> Video
  CPU Frequency scaling  <span class="nt">---</span><span class="o">&gt;</span>
    Default CPUFreq governor <span class="o">(</span>performance<span class="o">)</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> <span class="s1">'performance'</span> governor
    x86 CPU frequency scaling drivers  <span class="nt">---</span><span class="o">&gt;</span>
      <span class="o">[</span><span class="k">*</span><span class="o">]</span> Intel P state control
<span class="o">[</span><span class="k">*</span><span class="o">]</span> Networking support  <span class="nt">---</span><span class="o">&gt;</span>
  &lt;<span class="k">*</span><span class="o">&gt;</span> Bluetooth subsystem support  <span class="nt">---</span><span class="o">&gt;</span>
    Bluetooth device drivers  <span class="nt">---</span><span class="o">&gt;</span>
      &lt;<span class="k">*</span><span class="o">&gt;</span> HCI USB driver
  &lt;<span class="k">*</span><span class="o">&gt;</span> Wireless  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> cfg80211 - wireless configuration API
    &lt;<span class="k">*</span><span class="o">&gt;</span> Generic IEEE 802.11 Networking Stack <span class="o">(</span>mac80211<span class="o">)</span>
  &lt;<span class="k">*</span><span class="o">&gt;</span> RF switch subsystem support
Device Drivers  <span class="nt">---</span><span class="o">&gt;</span>
  Misc devices  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Intel Management Engine Interface
    &lt;<span class="k">*</span><span class="o">&gt;</span> ME Enabled Intel Chipsets
  SCSI device support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> SCSI disk support
    <span class="o">[</span><span class="k">*</span><span class="o">]</span> Probe all LUNs on each SCSI device
  &lt;<span class="k">*</span><span class="o">&gt;</span> Serial ATA and Parallel ATA drivers  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> AHCI SATA support
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> Network device support  <span class="nt">---</span><span class="o">&gt;</span>
    <span class="o">[</span><span class="k">*</span><span class="o">]</span> Ethernet driver support  <span class="nt">---</span><span class="o">&gt;</span>
      <span class="o">[</span><span class="k">*</span><span class="o">]</span> Intel devices
        &lt;<span class="k">*</span><span class="o">&gt;</span> Intel<span class="o">(</span>R<span class="o">)</span> PRO/1000 PCI-Express Gigabit Ethernet support
    <span class="o">[</span>M] Wireless LAN  <span class="nt">---</span><span class="o">&gt;</span>
      &lt;M&gt; Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N <span class="o">(</span>iwlwifi<span class="o">)</span>
      &lt;<span class="k">*</span><span class="o">&gt;</span> Intel Wireless WiFi MVM Firmware support
  &lt;<span class="k">*</span><span class="o">&gt;</span> I2C support  <span class="nt">---</span><span class="o">&gt;</span>
    I2C Hardware Bus support  <span class="nt">---</span><span class="o">&gt;</span>
      &lt;<span class="k">*</span><span class="o">&gt;</span> Intel 82801 <span class="o">(</span>ICH/PCH<span class="o">)</span>
  &lt;<span class="k">*</span><span class="o">&gt;</span> Hardware Monitoring support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Intel Core/Core2/Atom temperature sensor
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> Watchdog Timer Support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Intel TCO Timer/Watchdog
  Multifunction device drivers  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Intel ICH LPC
    &lt;<span class="k">*</span><span class="o">&gt;</span> Realtek PCI-E card reader
  &lt;<span class="k">*</span><span class="o">&gt;</span> Multimedia support  <span class="nt">---</span><span class="o">&gt;</span>
    <span class="o">[</span><span class="k">*</span><span class="o">]</span> Media USB Adapters  <span class="nt">---</span><span class="o">&gt;</span>
      &lt;<span class="k">*</span><span class="o">&gt;</span> USB Video Class <span class="o">(</span>UVC<span class="o">)</span>
  Graphics support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Direct Rendering Manager <span class="o">(</span>XFree86 4.1.0 and higher DRI support<span class="o">)</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Intel 8xx/9xx/G3x/G4x/HD Graphics
      <span class="o">[</span><span class="k">*</span><span class="o">]</span> Enable modesetting on intel by default
      <span class="o">[</span><span class="k">*</span><span class="o">]</span> Enable legacy fbdev support <span class="k">for </span>the modesettting intel driver
    Console display driver support  <span class="nt">---</span><span class="o">&gt;</span>
      &lt;<span class="k">*</span><span class="o">&gt;</span> Framebuffer Console support
  &lt;<span class="k">*</span><span class="o">&gt;</span> Sound card support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> Advanced Linux Sound Architecture  <span class="nt">---</span><span class="o">&gt;</span>
      <span class="o">[</span><span class="k">*</span><span class="o">]</span> PCI sound devices  <span class="nt">---</span><span class="o">&gt;</span>
        &lt;<span class="k">*</span><span class="o">&gt;</span> Intel HD Audio  <span class="nt">---</span><span class="o">&gt;</span>
          <span class="o">[</span><span class="k">*</span><span class="o">]</span> Build HDMI/DisplayPort HD-audio codec support
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> USB support  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> xHCI HCD <span class="o">(</span>USB 3.0<span class="o">)</span> support
    &lt;<span class="k">*</span><span class="o">&gt;</span> EHCI HCD <span class="o">(</span>USB 2.0<span class="o">)</span> support
  &lt;<span class="k">*</span><span class="o">&gt;</span> MMC/SD/SDIO card support
    &lt;<span class="k">*</span><span class="o">&gt;</span> Realtek PCI-E SD/MMC Card Interface Driver
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> X86 Platform Specific Device Drivers  <span class="nt">---</span><span class="o">&gt;</span>
    &lt;<span class="k">*</span><span class="o">&gt;</span> ThinkPad ACPI Laptop Extras
  <span class="o">[</span><span class="k">*</span><span class="o">]</span> IOMMU Hardware Support  <span class="nt">---</span><span class="o">&gt;</span>
    <span class="o">[</span><span class="k">*</span><span class="o">]</span> Support <span class="k">for </span>Intel IOMMU using DMA Remapping Devices
    <span class="o">[</span><span class="k">*</span><span class="o">]</span>  Enable Intel DMA Remapping Devices by default
    <span class="o">[</span><span class="k">*</span><span class="o">]</span> Support <span class="k">for </span>Interrupt Remapping
<span class="o">[</span><span class="k">*</span><span class="o">]</span> Cryptographic API  <span class="nt">---</span><span class="o">&gt;</span>
  &lt;<span class="k">*</span><span class="o">&gt;</span> AES cipher algorithms <span class="o">(</span>AES-NI<span class="o">)</span>
</code></pre></div></div>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Device Drivers -&gt;
  Character devices -&gt;
    &lt;<span class="k">*</span><span class="o">&gt;</span> TPM Hardware Support -&gt;
      &lt;<span class="k">*</span><span class="o">&gt;</span> TPM Interface Specification 1.2 Interface / TPM 2.0 FIFO Interface
</code></pre></div></div>
<h1 id="build-the-kernel">Build the kernel</h1>
<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># '-j $(nproc)' does a parallel build using all cores</span>
<span class="nv">$ </span>make <span class="nt">-j</span> <span class="s2">"</span><span class="si">$(</span><span class="nb">nproc</span><span class="si">)</span><span class="s2">"</span>
</code></pre></div></div>
<h1 id="install-the-kernel">Install the kernel</h1>
<p><strong><em>NOTE:</em></strong> Ignore the LILO error, it’s harmless.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># install the built modules</span>
<span class="c"># this installls directly to ```/lib``` (symlonk to ```/usr/lib```).</span>
<span class="nv">$ </span>make modules_install

<span class="c"># install the built kernel</span>
<span class="c"># this install directly to ```/boot```</span>
<span class="nv">$ </span>make <span class="nb">install</span>

<span class="c"># rename the kernel</span>
<span class="c">#  substitute VERSION for the kernel version you have built</span>
<span class="nv">$ </span><span class="nb">mv</span> /boot/vmlinuz /boot/vmlinuz-KERNELVERSION
<span class="nv">$ </span><span class="nb">mv</span> /boot/System.map /boot/System.map-KERNELVERSION
</code></pre></div></div>
<h1 id="install-grub">Install grub</h1>
<p>Build and install grub</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>kiss build grub
<span class="nv">$ </span>kiss <span class="nb">install </span>grub

<span class="c"># also needed for UEFI.</span>
<span class="nv">$ </span>kiss build efibootmgr
<span class="nv">$ </span>kiss <span class="nb">install </span>efibootmgr
</code></pre></div></div>
<p>Setup grub</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># BIOS</span>
<span class="nv">$ </span>gtub-install <span class="nt">--target</span><span class="o">=</span>i386-pc /dev/sdX
<span class="nv">$ </span>grub-mkconfig <span class="nt">-o</span> /boot/grub/grub.cfg

<span class="c"># UEFI</span>
<span class="c"># replace 'X' with its mount point</span>
<span class="nv">$ </span>grub-install <span class="nt">--target</span><span class="o">=</span>x86_64-efi <span class="nt">--efi-directory</span><span class="o">=</span>/path/to/mounted/efi <span class="nt">--bootloader-id</span><span class="o">=</span>GRUB
<span class="nv">$ </span>grub-mkconfig <span class="nt">-o</span> /boot/grub/grub.cfg
</code></pre></div></div>
<h1 id="install-init-scripts">Install init scripts</h1>
<p>This is the final “mandatory” step.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>kiss build baseinit
<span class="nv">$ </span>kiss <span class="nb">install </span>baseinit
</code></pre></div></div>
<h1 id="enable-the-community-repository">Enable the community repository</h1>
<p>The KISS community repository is maintained by users of the distribution and contains packages which aren’t int he main repositories. This repository is disabled by default since it’s not maintained by the KISS developers.</p>

<div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># clone the repository to a location of your choosing.</span>
<span class="nv">$ </span>git clone https://github.com/kisslinux/community.git

<span class="c"># add the repository to the system-wide 'KISS_PATH'.</span>
<span class="c"># the 'KISS_PATH' variable works exactly like 'PATH'.</span>
<span class="c"># each repository is split by ':' and is checked in</span>
<span class="c"># the order they're written.</span>
<span class="c">#</span>
<span class="c"># add the full path to the repository you cloned</span>
<span class="c"># above.</span>
<span class="c">#</span>
<span class="c"># NOTE: The subdirectory must also be added.</span>
<span class="c"># example: export KISS_PATH=/var/db/kiss/repo/core:/var/db/kiss/repo/extra:/var/db/kiss/repo/xorg:/path/to/community/community</span>
<span class="nv">$ </span>vi /etc/profile.d/kiss_path.sh

<span class="c"># spawn a new login shell to access this repository</span>
<span class="c"># immediately.</span>
<span class="nv">$ </span>sh <span class="nt">-l</span>
</code></pre></div></div>
<hr />
<p>Sreenshot</p>

<p><img src="https://camo.githubusercontent.com/7a060a9d0cea23574b166f912f8649519124c507/68747470733a2f2f692e696d6775722e636f6d2f567234656f32782e6a7067" alt="KISS OpenBox" /></p>]]></content><author><name>rndtx</name></author><summary type="html"><![CDATA[Install KISS The installation is very similiar to Gentoo’s stage 3 tarballs.]]></summary></entry></feed>