Linuxコマンドのソースコードを取得する方法(Debian環境):オリジナルコマンド作成前の勉強向け

Linuxコマンドのソースコードを取得する方法(Debian環境):オリジナルコマンド作成前の勉強向け

前書き 少し古い雑誌ですが、CQ出版社のInterface誌(2016年10月号)に「レベルアップ! オリジナル・コマンドを作る」という記事がありました。しかし、この雑誌に書かれている内容は、bashに偏っており、情報が不足していると(当時)感じました。 ...

2019年6月1日 · 6 分 · nchika
環境構築:Debianソースコードパッケージをビルドする方法(debソースパッケージ構築ツールのインストール)

環境構築:Debianソースコードパッケージをビルドする方法(debソースパッケージ構築ツールのインストール)

前書き 過去の記事で、debソースパッケージの取得方法を示しました。 Linuxコマンドのソースコードを取得する方法(Debian環境):オリジナルコマンド作成前の勉強向け ソースコードを取得したら、自身で改変し、ビルドも試したくなる筈です。そのため、本記事では、debソースパッケージをビルドする方法を示します。debソースパッケージの取得に関する設定は、上記の過去記事を参照して下さい。 ...

2019年6月1日 · 4 分 · nchika
neomutt

環境構築:Terminal(CLI)向けメーラー"Neomutt"でGmailを送受信するための設定

前書き Neomuttは、Command Line Interface(CLI)で使用するメールクライアントです。mutt(1995年に登場したメーラー)をforkしたプロジェクトであり、その上位互換となっています。CLI環境でメールを読む理由は、動作が快適な事や省メモリである事が挙げられます。 ...

2019年6月1日 · 9 分 · nchika
環境構築:Redox向けcoreutils(Rust)のCode Reading準備およびReading対象コマンド一覧

環境構築:Redox向けcoreutils(Rust)のCode Reading準備およびReading対象コマンド一覧

前書き:Redox版coreutilsを読む理由 Redoxプロジェクトが開発しているcoreutilsを読む理由は、「(Rust初心者の私が)Rustを学習する」ためです。Redoxプロジェクトに関わるコードは、基本的にRustで書かれています。何故、Redox(Kernel)ではなくて、coreutilsを読むのかと言えば、 Kernelを読めるほど、私がRustに慣れていない RedoxプロジェクトのCoreutilsは小規模 CoreutilsはUnix/Linuxコマンドのため、私が機能を把握済み という理由です。 ...

2019年5月3日 · 7 分 · nchika
Linux Kernel: __initマクロ、__exitマクロの役割(メモリの有効利用)

Linux Kernel: __initマクロ、__exitマクロの役割(メモリの有効利用)

__initマクロ、__exitマクロが使われるケース 一般的に、__initマクロはKernelモジュールの初期化時、__exitマクロはKernelモジュールの終了時に付与します。以下の例では、初期化関数がdebimate_init()、終了関数がdebimate_exit()で、それぞれにマクロを付与しています。 ...

2019年4月29日 · 4 分 · nchika
【Desktop entry】Linux環境でデスクトップアイコン(ショートカット)をfreedesktop.org仕様で作成する方法

【Desktop entry】Linux環境でデスクトップアイコン(ショートカット)をfreedesktop.org仕様で作成する方法

前書き 本記事では、既存アプリや自作アプリのショートカットを作成したい場合、デスクトップアイコン(ショートカット)を用意する方法を示します。Linuxは、複数のデスクトップ環境(GNOME、MATE、KDEなど)が存在しますが、手順はX Window System環境であれば同一です。その理由は、デスクトップアイコン(ショートカット)仕様がfreedesktop.orgによって(半標準として)定められているためです。 ...

2019年3月30日 · 8 分 · nchika
UserLAnd

AndroidにLinux環境を構築する"UserLAnd"がソースリーディング環境(スマホ用)として最適

前書き AndroidにLinuxを導入する試みは、以前からありました。この試みは、AndroidのKernel部分が“Linux Kernel”(Linuxと共通)ですから、自然な発想と考えられます。過去の例で言えば、「Ubuntu(Debian)をAndroid端末に導入」したケースがあります。しかし、これまでのAndroidのLinux化は、煩雑な手順が必要、かつ失敗した場合に端末が文鎮化してしまうリスクがありました。 ...

2019年3月16日 · 6 分 · nchika
mmdebstrapによるarmhf向けrootfsの作成方法(公式最小サイズ27MB)

mmdebstrapによるarmhf向けrootfsの作成方法(公式最小サイズ27MB)

mmdebstrapとは mmdebstrapとは、最小構成rootfsを作成するためのdebootstrapを代替するコマンドです。debootstrapと同様に、Debianサポートアーキテクチャ向けのrootfsを作成できます。mm(Multi-Mirror)が意味するように、複数のミラーサーバを使用する事により、debootstrapより3〜6倍ほど高速に動作します。 2019年3月現在(Debian9, stretch環境)では、mmdebstrapはtesting/unstableに存在します。stableに存在しないmmdebstrapを知ったキッカケは、debian-embeddedのメーリスです。128MB以下のrootfsを作成する方法がメーリス内で質問され、mmdebstrapの開発者(Johannes Schauer)がその方法の一つとして紹介していました。質問自体は、最終的にmmdebstrapが作成するrootfsのサイズがネックになり、他の方法(Yocto)が採用されていました。 ...

2019年3月10日 · 12 分 · nchika
Debian: 任意のtesting/unstableパッケージのみをinstallする方法(システム全体はstableを維持)

Debian: 任意のtesting/unstableパッケージのみをinstallする方法(システム全体はstableを維持)

前書き Debianパッケージは、基本的な使い方をしていれば、安定版(stable)がシステムにinstallされます。しかし、「使用したいパッケージがstableにない場合」や「より新しいパッケージを使いたい場合」、システムにtesting/unstableパッケージを導入する必要性がでてきます。 ...

2019年3月9日 · 8 分 · nchika
Bash(Shell Script)内メッセージの国際化方法

Bash(Shell Script)内メッセージの国際化方法

前書き BashによるShell Scriptを国際化(メッセージ翻訳)する方法は、C言語/Python/Rubyなどと同様です。つまり、gettextライブラリを使用し、翻訳対象メッセージの対訳を保存したカタログファイル(.moバイナリ、言語毎に必要)を用意する方法です。本記事では、その使い方を説明します。 ...

2019年2月3日 · 9 分 · nchika
環境構築: Linux Kernelモジュールの作成準備

環境構築: Linux Kernelモジュールの作成準備

前書き 本記事は、「Linux Kernel Device Driverの雛形作成」や「Linux Kernel内APIを試すためのモジュール作成」を目的として、最低限必要な環境構築手順を記載しています。 ...

2019年1月27日 · 10 分 · nchika
ccache(compiler cache)によるビルド高速化

ccache(compiler cache)によるビルド高速化

前書き 大規模なプログラムをビルドする場合、数十分〜数時間かかる事があります。ビルド時間が長いと、それだけ開発者の待ち時間が増えるわけですから、短いに越したことはありません。そんなビルド時間を短縮するツールとして、ccacheがあります。 ...

2019年1月26日 · 4 分 · nchika
fetcher

コードリーディング(Bash):システム情報表示ツール"neofetch"

前書き 本記事は、システム情報表示ツール"neofetch“のコードリーディング結果を記載しています。 リーディング動機は、**「neofetchは、システム情報をどこから集めているか」**が気になったからです。neofetchは約2600Step程度の小規模なBash scriptであるため、関数レベルで解説します。 ...

2019年1月22日 · 15 分 · nchika
コードリーディング(C言語):chroot / ischroot

コードリーディング(C言語):chroot / ischroot

前書き 本記事は、以下のコマンドのコードリーディング結果を記載しています。 プロセスおよび子プロセスの(見かけ上の)ルートディレクトリを変更するchroot プロセスがchroot環境(jail環境)で動作しているかを検出するischroot ...

2019年1月20日 · 22 分 · nchika