<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kernel | Chia-An Lee</title><link>https://calee0219.github.io/tag/kernel/</link><atom:link href="https://calee0219.github.io/tag/kernel/index.xml" rel="self" type="application/rss+xml"/><description>Kernel</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><copyright>©</copyright><lastBuildDate>Sun, 26 Jul 2020 22:44:04 +0800</lastBuildDate><image><url>https://calee0219.github.io/media/icon_hu_da05098ef60dc2e7.png</url><title>Kernel</title><link>https://calee0219.github.io/tag/kernel/</link></image><item><title>在 RPI 4 (4G) 上更新 Ubuntu 18.04 Server 的 kernel 版本</title><link>https://calee0219.github.io/blog/rpi_build_kernel/</link><pubDate>Sun, 26 Jul 2020 22:44:04 +0800</pubDate><guid>https://calee0219.github.io/blog/rpi_build_kernel/</guid><description>&lt;p&gt;軟硬體&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HW: Raspberry Pi 4 4G&lt;/li&gt;
&lt;li&gt;SD Card: SanDisk Extreme PRO 64GB&lt;/li&gt;
&lt;li&gt;OS: Ubuntu Server 18.04&lt;/li&gt;
&lt;li&gt;Default kernel: 5.3.0-1017-raspi2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="燒-os"&gt;燒 OS&lt;/h2&gt;
&lt;p&gt;先把 Ubuntu Server 18.04 燒進 SD Card，因為我們使用原生方式編譯，而不是 cross compile 後再把 image 燒進 SD Card&lt;/p&gt;
&lt;p&gt;這種好處是可以讓系統自己抓硬體參數，不過壞處可能是比你的 Server CPU 編譯速度慢很多&lt;/p&gt;
&lt;h2 id="下載-source-與安裝-build-tools"&gt;下載 Source 與安裝 build tools&lt;/h2&gt;
&lt;p&gt;因為使用 Ubuntu 18.04 是 bionic，因此需要抓 bionic 的 source&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install git libncurses-dev flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf debhelper
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone git git://kernel.ubuntu.com/ubuntu/ubuntu-bionic.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="設定編譯參數"&gt;設定編譯參數&lt;/h2&gt;
&lt;p&gt;在 editconf 實惠需要設定編譯參數，因為我們只有需要使用 arm64 (RPI 4 用 arm8 是 arm64)，因此前面的設定都可以 n 跳過，到 arm64 時再 Y 修改，當然如果你沒有東西要改也可以 n pass 掉，我自己有嘗試改過，但改完後就 check failed，所以最後選擇不改&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ubuntu-bionic
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod a+x debian/rules
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod a+x debian/scripts/*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;chmod a+x debian/scripts/misc/*
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C fakeroot debian/rules clean
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C fakeroot debian/rules editconfigs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="編譯"&gt;編譯&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C fakeroot debian/rules clean
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C fakeroot debian/rules binary-headers binary-generic binary-perarch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果你需要編除了 generic 外的 kernel，可以直接編譯全部&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;LANG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;C fakeroot debian/rules binary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;此時就會需要很編譯久，也可以考慮用比較快的 x86 CPU 做 cross compile，此種方法比較麻煩的是你需要知道每個需要的參數再喂進去，而直接在要跑的硬體上面編譯的好處就是可以讓系統自己抓參數&lt;/p&gt;</description></item></channel></rss>