Linux

【Linux】The Linux Kernel Archive(本家)のトップページにあるHTTP、GIT、RSYNCの飛び先調査

【※ 当記事は2020年7月2日時点の情報です】

ペイヴメント(@pavement1234)です

エンジニア
エンジニア

The Linux Kernel Archive(本家)のトップページにあるHTTP、GIT、RSYNCの飛び先を調べたい

こんな悩みを解決します

バージョン情報

Linux Kernel 3.14

The Linux Kernel Archive(本家)のトップページにあるHTTP、GIT、RSYNCの飛び先がどうなってるか?

【Linux】カーネルソースコードのダウンロードで訪れたThe Linux Kernel Archive(本家)のトップページを色々調べてみました

HTTPを調べる

まずはHTTP。開くとこんな感じです

../(1つ上のディレクトリ)を開くとMIRRORS.kernel.orgってのが出てきます。なんか有用な感じのサイトが盛りだくさん。今度掘ってみます

さて、pubの階層には7つのディレクトリがあります。linuxが一番深く、softwareが次に深いです。以前すべてのディレクトリを掘ってみたのですがファイルが古かったです Gitに移行していてHTTPはサポートされていない様子

①planb、puperrescure

まずはdist 懐かしのknoppix(CD/DVD起動のLinux すごい前に流行った気がする)は知ってましたがplanbsuperrescureが分かりません。まずdistはディストリビューションと推察されます

Plan-Bを発見 RedHat系のLinux Knoppixと同様にデータレスキュー用途のようですね しかし状態:休止したとありメンテされてない感じ

ところで今回見つけたDistro Watch.com、各種ディストリビューションが網羅されてて、すごいデータベースです

続いてsuperrescue Distro Watch.comで調べてみるとSuperRescue CDを発見。カンタンにヒットしました。こいつもRedHat系、かつ、データレスキュー用途、かつ、休止した。Plan Bと同じ運命を辿ったみたいですね

②開発ツールたちの最新版を入手する方法を知りたい

今回はlinux/devel

binutilsとはGNUのバイナリユーティリティです。GNU Binutilsに詳しく書いてありますが、ar(アーカイバ)、as(アセンブラ)、ld(リンカ)、objdump(オブジェクトのダンプ情報表示)、readelf(ELFファイルの内容を表示)などが含まれます。gccはコンパイラ。gdbはデバッガ。なんかどれもバージョンが古そうな感じ

開発ツールたちの最新版を入手するにはどうすれば良いか。まずはGNU Binutils

最新版は2.32。2019年2月2日更新。http://ftp.gnu.org/gnu/binutils/(Index of /gnu/binutils)にUPされてます

ソースコードはGITにUPされてて、git clone git://sourceware.org/git/binutils-gdb.gitで落とせますし、the gitweb interfaceを開くとWEBでサマリーが見れます

次にGCC, the GNU Compiler Collection

最新版はv9.1。2019年5月3日更新。ソースはSVN管理されていてGCC: Anonymous read-only SVN accessにある通り、svn checkout svn://gcc.gnu.org/svn/gcc/trunk SomeLocalDirでチェックアウトできます

またGCC GIT mirrorにミラーサイトが構築されてます。gcc.gnu.org/gitを開くとWEBでサマリーも見れます

最後にGDB: The GNU Project Debugger

最新版はv8.3。2019年5月11日更新。Download GDBを開くとダウンロード先のHTTP、FTPアドレスが書いてあります

http://ftp.gnu.org/gnu/gdb/(Index of /gnu/gdb)を開くとUPされてます

これでbinutils、gcc、gdbの最新版入手方法がわかりました。ちなみに組込用途で使われるクロスコンパイラはLinaroが有名。PC Linuxの開発環境に関する調査が落ち着いたら組込Linuxに調査移行するので、そのときに調べます

③crypto、backport、rt、usb、perf

linux/kernel

ここにカーネルソースたちが入ってます カーネルソース以外で目についたのはcrypto(暗号化)、backport(アプリの後方互換性を担保するために新しい機能を古いカーネルに移植し続けてるヤツ)、rt(リアルタイム)、usb(詳細は見てませんがUSBの何か)、perf(性能測定ツール)など それぞれ調べてみます

まずcrypto Linux Kernel Crypto APIを見るとLinux標準のCrypto(暗号)APIがあるみたいです。Crypto API (Linux)を見るとユーザスペースとのインタフェースとしてAF_ALG(netlink)cryptodev(dev/crypto)が記載されてました。AF_ALGはLinuxカーネル2.6.38からマージされていて、OpenSSLもサポートされてます。cryptodevはOpenBSD系みたいですがLinuxカーネルにはマージされなかったみたいです。Cryptodev-linux moduleに情報が載ってますが深みにハマりそうなのでここまでにしました

参考にしたThe Linux Kernel documentationはなんかすごく良いのでまた使うことにします

次にbackport

Linux backportを見るとこんなことが書いてあります。要は古いカーネルで最新のドライバを動作させることを可能にするってことみたいです。またbackportプロジェクトは2007年にワイヤレス互換性ドライバ(compat-wireless)のために始まったらしいです backportについては興味アリなのでまた調べてみようと思います

Main Page
The Backports Project enables old kernels to run the latest drivers.
“Backporting” is the process of making new software run on something old. A version of something new that’s been modified to run on something old is called a “backport”.
The Backports Project develops tools to automate the backporting process for Linux drivers. These tools form the backports suite.

History
The Backports Project started in 2007 as compat-wireless. It was renamed to compat-drivers as the project’s scope broadened beyond just wireless network drivers. Nowadays, the project is known simply as backports.
As of the 3.10-based release, over 830 device drivers had been backported.
Recent versions of backports support mainline kernels back to version 3.0. The older backports-3.14 supports all kernel versions back to version 2.6.26.

次はrt

関連情報としてまずRaspberry Pi 3 (Raspbian Jessie)にRT Preemptカーネルを導入を読みました。このrtはRT preemptパッチを指すらしいです。更にubuntuにrt-preemptカーネルを導入するを読むと、本気でリアルタイム性を高めるならRTAIRT-Linuxというのもあるが導入が難しいとのこと。さらにlow-latencyカーネルというものもありますが精度はそれほど高くない様子。RT preemptはその中間つまり精度の高い順に書くと

RTAI/RT-Linux > RT preempt > low-latencyカーネル

となります。リアルタイム性を高める改良に興味があるので、そのうち調べてみます。

次はusb

USB Host Stack Debuggingを見ると、初期にLinusが書いたUSBホストスタックのことを示すことがわかりました。コンパクトなので理解がしやすく、USBデバッグに役立つみたいです。いつか調べてみようかな

次はperf

Linux 性能解析ツールperfを使ってみたを調べてみました。概要を以下に示しますがperfはボリューム大なので、今回はここまで

perf(Performance analysis tools for Linux)とはLinuxカーネル2.6.31以降で使用可能なLinuxの性能解析ツールです

1.実行されるプログラムと OS とのイベントを見れる

2.OS とハードウェアのイベントを見れる

3.カーネルのカウンタで計測されるイベントだったりプロセッサで計測されるイベントが知れる

L1のヒット状況、TLBの様子、CPUサイクル数、分岐の数、分岐予測ミス数、キャッシュ参照数、キャッシュミス数などを観察できます

linux/kernel/firmwareって何だろうと思い追加で調べてみました。

Linux Firmware APIを読むと、request_firmwareでファームの呼び出しを行ったりする標準APIのことみたいです。φ(.. )メモシテオコウ Linux:firmwareの読み込み処理めもを見ると詳しく書いてあります

④comma、nfc、ofono、wireless

linux/network

connman(コマンドベースのネットワークマネージャ)、nfc
(近距離無線)、ofono(オープンソースの携帯電話)、wireless(無線)、と気になるキーワード4連発

まずはcomman

ConnManを読むと有線と無線のネットワークを制御するコマンドのようです

使用方法

ConnMan には標準のコマンドラインクライアント connmanctl が付属しています

connmanctl は2つのモードで動作します:

コマンドモードでは、connmanctl に引数を付けてコマンドを実行します。systemctl と似ています
インタラクティブモードでは、connmanctl に何も引数を付けずに起動します。プロンプトが connmanctl> に変化し、ユーザーがコマンドを入力するのを待機します。python のインタラクティブモードに似ています。インタラクティブモードではタブ補完を使うことができ、簡単に接続できます

有線
ConnMan は自動的に有線接続を管理します

Wi-Fi
Wi-Fi の有効化と無効化を行います。Wi-Fi が有効になっているかどうか確認するには connmanctl technologies を実行して Powered: True/False と表示された行をチェックしてください

Wi-Fi を有効にするには connmanctl enable wifi を実行し、無効にする場合は connmanctl disable wifi を実行します

ノートパソコンの場合 Fn キーを使って Wi-Fi の電源を入れてください。もしくは ip link set <interface> up を実行してみてください

次にnfc

NFCをリード・ライトするためにRaspbianをビルドするを読みました。更にLinux NFC Subsystemというものがあるそうだを読み、Linux NFC Subsystem(PDF)にたどり着きました

2011年段階ではNXP等のベンダ依存がありPOSIX仕様から逸脱してましたが、netlinkとかソケットなどを使い標準化を進めたいという意向があったみたいです

現状どうなっているかはこの資料から読み取れませんでしたが、いつか調べてみたいです

次にofono

oFonoを読みました

要は携帯電話(GSM/UMTS)アプリ用のフリーソフトで、D-BusのAPIを使用し、GPLv2である、ということが読み取れました。Universal Mobile Telecommunications Systemあたりを読むと3G回線の細かい話が書いてます。興味はあるものの今回はここまで

(原文)
oFono is a free software project for mobile telephony (GSM/UMTS) applications. It is built on 3GPP standards and uses a high-level D-Bus API for use by telephony applications. oFono is free software released under the terms of the GNU General Public License v2.[ 4 ]

(和訳)
oFonoは、携帯電話(GSM / UMTS)アプリケーション用のフリーソフトウェアプロジェクトです。 これは3GPP規格に基づいて構築されており、テレフォニーアプリケーションで使用するための高レベルのDバスAPIを使用しています。 oFonoは、GNU一般公衆利用許諾契約書v2の条項に基づいてリリースされたフリーソフトウェアです[ 4 ]。

次にwireless

Linux Wirelessを読みました。mac80211、cfg80211、nl80211と呼ばれる無線LANサブシステムを中心とした解説です。本記事の最後にLinux Wirelessがまた出てきますので、一旦終了

⑤abi-tools、dracut、efilinux、syslinux、crusoe、mce、dtc、fs、kbd、cpufreq、hotplug、ipvsadm、kexec、ksymoops、module-init-tools、modutils、bridge-utils、nfs-utils、mdadm、rt-tests

linux/utils

abi-toolsはアプリケーションバイナリインタフェースのことですかね。今回はスルーします。dracutDracutの歩き方を見るとわかりますがinitrdをカスタマイズするツールみたいです。efilinuxはUEFIブートローダ UbuntuとUEFIセキュアブートに関連情報が載ってます。syslinuxは軽量なブートローダ SYSLINUXでマルチブート【基本編】をいつか読んでみます。crusoeはx86互換プロセッサ。Crusoeに概要が書いてます

mceはマシンチェック例外、dtcはデバイスツリーコンパイラ、fsはファイルシステム、kbdはキーボード、cpufreqは周波数スケーリング、hotplugはプラグandプレイ、ipvsadmはロードバランサ、kexecはカーネル上でカーネルを起動させるやつ、ksymoopsはカーネルパニック時のoopsメッセージを少しわかりやすく表示するもの、module-init-toolsmodutilsは古いローダブルモジュール管理ツール、bridge-utilsはブリッジ構成ツール(複数のネットワークインターフェースをまとめてブリッジ化するやつ)、nfs-utilsはNFS管理ツール、mdadmはソフトウェアRAID、rt-testsはリアルタイムカーネルのテスト

とりあえず上のコメントで概要の説明ができてる項目は割愛し、イマイチ理解できてないヤツだけを少し補足することにします(量が多いので)

まずcpufreq。CPU 周波数スケーリングを読みました

CPU 周波数スケーリングを使うことで電力を節約するためにオペレーティングシステムが CPU の周波数を調整することが出来るようになります。CPU の周波数はユーザースペースのプログラムを使って手動で変更したり、システムの負担や、ACPI イベントにあわせて自動的に調整することが可能です。

CPU 周波数スケーリングは Linux カーネル内に実装されており、そのインフラストラクチャは cpufreq と呼ばれています。カーネル 3.4 から必要なモジュールが自動でロードされるようになり推奨の ondemand governor がデフォルトで有効になっています。しかしながら、cpupower, acpid, Laptop Mode Tools などのユーザースペースツールや、デスクトップ環境から提供されている GUI ツールを使って高度な設定をすることも可能です。

次にhotplug 9.11. ホットプラグ機能、hotplugを読みました。udevの仕組みを使って/dev/xxxにデバイスを登録する仕組みと理解しました

9.11.1. 前書き
hotplug カーネルサブシステムはデバイスの追加と削除を、udevd の助けを借りて適切なドライバを読み込んだり関連するデバイスファイルを作成することで、動的に取り扱います。現代的なハードウェアと仮想化を使えば、ほとんどすべてのデバイスはホットプラグ対応と言ってよいでしょう。具体的に言えば、USB/PCMCIA/IEEE 1394 周辺機器から SATA ハードドライブ、さらには CPU やメモリにいたるまでのほとんどすべてがホットプラグに対応しています。 カーネルは必要なドライバとデバイス ID を関連付けるデータベースを持っています。このデータベースは起動中にさまざまなバスで検出された周辺機器用のすべてのドライバを読み込んだりする際、追加的なホットプラグデバイスが接続された際に使われます。デバイスの使用準備が整ったら、メッセージが udevd に送信され、udevd は対応するエントリを /dev/ 内に作成します。

次にipvsadm

今回これが全然理解できませんでしたが、ipvsadm(8) 日本語訳LinuxでL4のロードバランサを簡単に作る手順を読み、少しだけ理解できたかもしれません。要はTCP、UDP(レイヤ4)の負荷を、パケット転送方式、ロードバランスアルゴの調整で実現するサーバ管理ツールと理解

Ipvsadm(8)はLinuxカーネル内の仮想サーバテーブルを設定、保守、調査をするために使われます。Linux Virtual Server (LVS) は2台以上のノードからな るク ラスタに基づいたスケーラブルなネットワークサービスを構築するために用いることができます。クラスタのアクティブノードはサービスのリクエスト を、 実際にサービスを実行するサーバホストの集まりに送信します。サポートされている機能として二つのプロトコル(TCPとUDP),3つのパケッ ト 転 送 方 式(NAT, トンネリング、ダイレクトルーティング), そして8つのロードバランスアルゴリズム(ラウンドロビン、重み付きラウンドロビン、最小接続、重み付き最 小接続、所在ベース最小接続、レプリケーションつきの所在ベース最小接続、宛先ハッシュ、送信元ハッシュ)があります。

次にkexec kexecを読みました 実行中のカーネルの上で新たにカーネルをブートさせるってことですね

kexecは現在起動中のカーネル上で新しいカーネルのライブブートを可能にする、Linuxカーネルのメカニズムである。”kexec” という名前はkernel executionの略称と、UNIX/Linuxカーネル呼び出しのexecに由来する。kexecは実質的に、システムファームウェア(BIOSやUEFI)が実行するブートローダのステップとハードウェアの初期化フェイズをスキップし、メインメモリに直接新しいカーネルをロードしてすぐにその実行を開始する。これにより完全なブートと関連する長時間処理を避けられるためダウンタイム(英語版)を最小化することができ、システムの高可用性を満たせるようになる[ 1 ][ 2 ][ 3 ]。

次にksymoops。oopsメッセージの解析方法を読みました。カーネルパニックが発生したときに試してみます

準備するファイルは、
・panic時に出力されるOopsメッセージ
・KernelをBuild時に生成されるSystem.map
使用方法は、 # ksymoops ?m [System.map] [oops_message]

次にmodule-init-toolsとmodutils。modutils パッケージは kernel 2.6 では不要 (2006/04/07)を読みました

modutils パッケージは kernel 2.4 以前のもので kernel 2.6 では,module-init-tools パッケージになります

だそうです。更にmodule-init-toolsを読み、insmodとかmodprobeたちのことを示すことがわかりました

depmod – 存在しているモジュール内に含まれるシンボル名に基づいて、モジュールの依存関係を記述したファイル (dependency file) を生成します。 これは modprobe が、必要なモジュールを自動的にロードするために利用します。
insmod – 稼動中のカーネルに対してロード可能なモジュールをインストールします。
insmod.static – スタティックライブラリによってコンパイルされた insmod コマンド。
lsmod – その時点でロードされているモジュールを一覧表示します。
modinfo – カーネルモジュールに関連付いたオブジェクトファイルを調べて、出来る限りの情報を表示します。
modprobe – depmod によってモジュールの依存関係を記述したファイル (dependency file) が生成されます。 これを使って関連するモジュールを自動的にロードします。
rmmod – 稼動中のカーネルからモジュールをアンロードします。

次にbridge-utils。ネットワークブリッジを読みました。要はbrctlのことですね

ブリッジは複数のネットワークセグメントをまとめるのに使われる一種のソフトウェアです。ブリッジは仮想ネットワークスイッチのように動作し、透過的に働きます (他のマシンはブリッジの存在を知る必要がありません)。

次にnfs-utils。5分で終わらせるNFSファイル共有を読みました。サーバとクライアント間で超簡単にディレクトリ共有できる感じ。今度実験してみます

次にmdadm。ソフトウェアRAID の初期設定と運用 – mdadmを読みました。ソフトウェアでRAIDを構築できるんですね。今度実験してみよう

最後にrt-tests。rtカーネルのリアルタイム性能テスト(cyclictest)を読みました。要するにcyclictestが含まれているみたい

⑤crda、iw、rfkill、wireless-regdb、i2c-tools、tuna

次にsoftware。ボリューム大きいので、だいぶ消化不良を起こしそうです。networkcrdaiwrfkillwireless-regdbあたりは無線LAN通信に深くかかわるモジュール i2c-toolsはI2Cデバイスを扱うために重要。tunaはチューニング関連

crdaiwrfkillwireless-regdbは所謂Linux Wireless一派でありLinux WirelessのDocumentationに詳しく書いてあります

crda 下に出てくるwireless-regdbを呼び出すエージェントです。nl80211を前提として動作するみたいです

(原文)
Central Regulatory Domain Agent
CRDA acts as the udev helper for communication between the kernel and userspace for regulatory compliance. It relies on nl80211 for communication. CRDA is intended to be run only through udev communication from the kernel. The user should never have to run it manually except if debugging udev issues.

(和訳)
中央規制ドメインエージェント
CRDAは、規制順守のためにカーネルとユーザースペースの間の通信のためのudevヘルパーとして機能します。それはコミュニケーションのためにnl80211に頼ります。 CRDAはカーネルからのudev通信を通してのみ実行されることを意図しています。 udevの問題をデバッグする場合を除いて、ユーザーは手動で実行する必要はありません。

iw。無線制御コマンド。Wireless Extensionという古い規格に準拠するiwconfig系は推奨されておらず、nl80211系のiwが推奨されてます

(原文)
iw is a new nl80211 based CLI configuration utility for wireless devices. It supports all new drivers that have been added to the kernel recently. The old tool iwconfig, which uses Wireless Extensions interface, is deprecated and it’s strongly recommended to switch to iw and nl80211.
Like the rest of the Linux kernel, iw is still under development. Features are added ‘as we go’. The only documentation for iw is this page and output from ‘iw help’. Please help expand this page.
There is a page listing use cases with iwconfig and iw: replacing iwconfig.

(和訳)
iwは、ワイヤレスデバイス用の新しいnl80211ベースのCLI設定ユーティリティです。 最近カーネルに追加されたすべての新しいドライバをサポートします。 Wireless Extensionsインタフェースを使用する古いツールiwconfigは推奨されていません。iwとnl80211に切り替えることを強くお勧めします。
Linuxカーネルの他の部分と同様に、iwはまだ開発中です。 機能は「進むにつれて」追加されます。 iwの唯一のドキュメントはこのページと ‘iw help’からの出力です。 このページを広げるのを手伝ってください。
iwconfigとiwのユースケースをリストしたページがあります。iwconfigを置き換えるものです。

rfkill。要は無線をOFFにするスイッチです

(原文)
rfkill is a small userspace tool to query the state of the rfkill switches, buttons and subsystem interfaces. Some devices come with a hard switch that lets you kill different types of RF radios: 802.11 / Bluetooth / NFC / UWB / WAN / WIMAX / FM. Some times these buttons may kill more than one RF type. The Linux kernel rfkill subsystem exposes these hardware buttons and lets userspace query its status and set its status through a /dev/rfkill. Given that at times some RF devices do not have hardware rfkill buttons rfkill the Linux kernel also exposes software rfkill capabilities that allows userspace to mimic a hardware rfkill event and turn on or off RF.

(和訳)
rfkillは、rfkillのスイッチ、ボタン、およびサブシステムインタフェースの状態を問い合わせるための小さなユーザースペースツールです。 802.11 / Bluetooth / NFC / UWB / WAN / WIMAX / FMなど、一部のデバイスには、さまざまな種類のRF無線を停止できるハードスイッチが付属しています。 時々これらのボタンは複数のRFタイプを殺すかもしれません。 Linuxカーネルのrfkillサブシステムは、これらのハードウェアボタンを公開し、ユーザースペースにそのステータスの照会と/ dev / rfkillによるステータスの設定を許可します。 時にはいくつかのRFデバイスがハードウェアrfkillボタンrfkillを持っていないことを考えると、Linuxカーネルはユーザースペースがハードウェアrfkillイベントを模倣しRFをオンまたはオフにすることを可能にするソフトウェアrfkill機能も公開します。

wireless-regdb。各国の無線法要求に従い利用可能な周波数などを定義したデータベースです。CRDAから呼ばれます

次にi2c-tools。I2C Toolsを読みました。更にPackage i2c-toolsを読むとこんなコマンドがサポートされていることがわかります

次にtuna Red Hat Enterprise MRG 1.3 Tuna User Guideをざっと読みました。システムをレビューし、CPU、IRQ、Taskなどをチューニングできたり、Cyclic Testというのを実行してオシロスコープ状に性能表示できるみたいです

理解が浅い項目を残しておくとまた分からなくなるので、調べておいてよかったです

GITを調べる

HTTP、GIT、RSYNCと書いてあるリンクのうち、GITを調べてみます。/pub/scm/xxxという感じにカテゴライズされてます。scmとはソフトウェア構成管理(software configuration management)の略ですね。前回調べたHTTPは数年前から更新が止まっており、GITがソフトウェア管理のリポジトリになってるみたいです

①全体像

HTTPには存在しないvirt(仮想化)とpublic-inbox(メーリングリスト)が気になりました

pub/scm/bluetooth
pub/scm/boot
pub/scm/devel
pub/scm/docs
pub/scm/editors
pub/scm/fs
pub/scm/git
pub/scm/java
pub/scm/libs
pub/scm/linux
pub/scm/network
pub/scm/public-inbox
pub/scm/utils
pub/scm/virt

ちなみにpublic-inboxとはメールをGIT管理するソフトウェアみたいです

https://public-inbox.org/
メーリングリスト管理ソフトウェア
ウェブページ、Atomフィード、NNTPで読むことができる
Git、Unicorn、kgioなんかのメーリングリストで使われている
メールをGit管理している
OSS
AGPL

②コンポーネント毎の詳細

まず、/pub/scm/bluetoothにあるbluez.gitを見てみました。about, summary, refs, log, tree, commit, diff, stats, homepageのタブに分かれてます。最初に表示されるのはsummaryタブ

about

概要が書かれたタブ。ライセンサー、コンパイル&インストール方法、コンフィグ&オプションなどが書かれてます

summary

branch, tag, age, cloneの4パートに分かれています。branchはgitのブランチ。bluezはブランチが1つですが複数あるものも多いです。詳しくは3.1 Git のブランチ機能 – ブランチとはなどを参照。tagはgitのtag。目印みたいなものです。詳しくはgit tagの使い方まとめなどを参照

ageはどのぐらい前にコミットされたのかの情報

cloneのアドレスを指定してgit cloneします

refsはbranchとtagの詳細です

logはageの詳細です

treeはコンポーネントのディレクトリ・ファイル構成です。ls -lみたいな感じ

ファイル毎のlogstatを見れます。plainを押すと行番号などの装飾がないプレーンテキストが見れます

commitはコミットのログとdiffの内容が見れます

diffはDiffstatとdiff詳細が見れます

commitタブdiffタブの画面右端にあるdiff optioncontextを増やしていくと、diff行の前後の行数を指定できます。例えば3を指定するとトータル7行(前3+diff行+後3)の表示になります。spaceは空白を含む(include)、含まない(ignore)を指定できるようですが、イマイチ効果が分かりませんでした。modeをunifiedにするとunfied形式でdiffが見れます。ssdiffにするとWinMergeみたいに左右のペインでコード比較できます stat onlyはstatの情報のみ表示

statsは週毎にどのautherが何回コミットしたのかのサマリーが見れます。競争心の強い人はこの数字を見て燃えてくるかもしれません

homepageはコンポーネントのホームページがあれば表示されるみたいです。例えばBluetoothのbluezはこんな感じ

他のコンポーネントも似たようなものなので、詳細は割愛します。virtとpublic-inboxはHTTPに無かったのでいつか調べたいと思いますが

RSYNCを調べる

①そもそもrsyncって何だ?

まずThe Linux Kernel ArchiveのTOPページのRSYNCにはrsync://rsync.kernel.org/pub/というアドレスが書いてあります。rsyncはプロトコルだと思うので【 rsync 】コマンド(その1)――ファイルやディレクトリを同期するを読んでみました

「rsync」は、リモート環境とファイルやディレクトリを「同期(sync)する」というコマンドです。ローカル環境のみでも使用できます。「変更があった分だけ更新する」という機能があるので、ディレクトリ単位のバックアップで特に便利に使えます

なるほど。差分バックアップのやつですね

更にrsyncのサンプル例集を調べてみました。スラッシュのあるなしで同期対象が変わるらしいです。WindowsのバックアップツールFastCopy ver 3.82はrsync的な動作をしてますね

FastCopy ver 3.82

主要機能
Windows系最速(?) のファイルコピー&バックアップ&削除ツールです。UNICODE でしか表現できないファイル名やMAX_PATH(260文字) を越えたファイルもコピー(&削除)できます。Read/Write/ベリファイ別スレッド動作&非同期I/O&ダイレクトI/Oにより、デバイスの限界に近いパフォーマンスを出します。Include/Exclude フィルタ(UNIXワイルドカード形式)が指定可能です。MFC 等のフレームワークを使わず、Win32API だけで作っていますので、軽量&コンパクト&軽快に動作します

rsyncを使いこなすと色々便利そうですね。そのうち調べてみようと思います

まとめ

The Linux Kernel Archive(本家)のトップページにあるHTTP、GIT、RSYNCの飛び先について調査しましたが、なかなかマニアックでした

ABOUT ME
ペイヴメント
ペイヴメントのエンジニア塾(当ブログ)では20年以上の経験から得られたプログラミング系ノウハウについてベテランにも満足して頂けるような内容の濃いコンテンツを初心者にも分かりやすい形で日々発信しています。【経歴】ベンチャーのソフトハウスで4年勤務後、精密機器メーカーのソフト開発部門に勤務し今に至ります。
error: Content is protected !!