<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Linux on Fran Kuo | R&amp;D Leadership</title>
    <link>https://chenfu.ai/en/tags/linux/</link>
    <description>Recent content in Linux on Fran Kuo | R&amp;D Leadership</description>
    <generator>Hugo -- 0.157.0</generator>
    <language>en</language>
    <lastBuildDate>Mon, 04 Feb 2013 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://chenfu.ai/en/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Linux Engineering Utility Cheatsheet</title>
      <link>https://chenfu.ai/en/posts/linux-utility-quick-notes/</link>
      <pubDate>Mon, 04 Feb 2013 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/linux-utility-quick-notes/</guid>
      <description>&lt;p&gt;A quick compilation of useful commands and configurations I frequently use in my daily operations.&lt;/p&gt;
&lt;h3 id=&#34;working-with-patches&#34;&gt;Working with Patches&lt;/h3&gt;
&lt;p&gt;To generate a patch from a single file or directory:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;diff -Naur &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;from-file&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;to-file&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; &amp;gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;YourFileName.patch&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-N&lt;/code&gt;: Treat absent files as empty.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-a&lt;/code&gt;: Treat all files as text.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-u&lt;/code&gt;: Unified output format (best for readability).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-r&lt;/code&gt;: Recursive directory comparison.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;version-control-cleanup&#34;&gt;Version Control Cleanup&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Removing all &lt;code&gt;.svn&lt;/code&gt; directories recursively:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rm -rf &lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;find . -type d -name .svn&lt;span style=&#34;color:#e6db74&#34;&gt;`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Removing Git Metadata:&lt;/strong&gt;
In a Git repository, simply deleting the root &lt;code&gt;.git&lt;/code&gt; directory is usually sufficient to remove history and configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ubuntu Transition: Dash vs. Bash</title>
      <link>https://chenfu.ai/en/posts/ubuntu-dash-vs-bash/</link>
      <pubDate>Tue, 25 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/ubuntu-dash-vs-bash/</guid>
      <description>&lt;p&gt;To accelerate boot times, Ubuntu moved to using &lt;strong&gt;Dash&lt;/strong&gt; (&lt;code&gt;/bin/dash&lt;/code&gt;) as the default system shell (&lt;code&gt;/bin/sh&lt;/code&gt;), replacing the more feature-rich but slower &lt;strong&gt;Bash&lt;/strong&gt;. You can verify this linkage by checking &lt;code&gt;/bin/sh -&amp;gt; /bin/dash&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;While this is great for system performance, it can cause unexpected failures in shell scripts designed specifically with &amp;ldquo;Bashisms&amp;rdquo; (features unique to Bash). If you need to revert the default shell back to Bash for compatibility reasons, you can execute the following command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Practical Daemon Implementation in Embedded Linux</title>
      <link>https://chenfu.ai/en/posts/linux-daemon-implementation-embedded-systems/</link>
      <pubDate>Wed, 19 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/linux-daemon-implementation-embedded-systems/</guid>
      <description>&lt;p&gt;For anyone working with Linux, the concept of a &amp;ldquo;Daemon&amp;rdquo; (or service) is fundamental. Daemons are background processes that operate independently of any active user session. I recently deep-dived into this topic via Devin Watson&amp;rsquo;s &lt;em&gt;Linux Daemon Writing HOWTO&lt;/em&gt;, which provides a fantastic primer and a clear template.&lt;/p&gt;
&lt;p&gt;Building on that foundation, I refactored several processes in my current project to run as persistent background services. Below is a code snippet demonstrating the core structural requirements for a Linux daemon:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reflections on Patch Files and Embedded Systems Development</title>
      <link>https://chenfu.ai/en/posts/patch-vs-embedded-system-development/</link>
      <pubDate>Wed, 19 Sep 2007 00:00:00 +0000</pubDate>
      <guid>https://chenfu.ai/en/posts/patch-vs-embedded-system-development/</guid>
      <description>&lt;p&gt;Recently, I was assigned to work on a streaming server project. On our development platform, we utilize a combination of patch files and shell scripts to manage source code. We start with the upstream source, apply modifications via &lt;code&gt;patch&lt;/code&gt; commands, and then compile the results into the necessary shared libraries or executables. Initially, I didn&amp;rsquo;t give much thought to why we adopted this specific workflow, but lately, I&amp;rsquo;ve begun to appreciate the profound advantages of this approach.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
