[Tomoyo-dev 88] How to make TOMOYO Linux's Ubuntu kernel packages

Back to archive index

hito hitoh****@gmail*****
2007年 4月 10日 (火) 19:12:04 JST


Ubuntu用のTOMOYO Linuxパッケージですが、Ubuntuオリジナルの
配布物と異なり、幾つかのrestricted binary(/lib/firmware/`uname -r`)
が含まれていないようです。
# restrictedとは、「配布に制限はないが、修正が行えないもの」です。

これにより、TOMOYOカーネルを利用した際、一部の無線LAN, FC HBAなどの
ドライバが動作しなくなっています。
なお、TOMOYO Linuxとしての機能には問題はありません。

これはTOMOYOカーネルを作成する際に用いるソースの問題で、具体的には、
apt-get install linux-sourceで得られる構成物には、debian/firmware/*
と、debian/firmware/* をパッケージングするスクリプトが含まれて
いないことが原因となっています。
これらは apt-get source linux-image で得られるソースには含まれます。

# なお、以前のメールで書いていた「パッケージングの際に面倒なこと」
# は上記とはまったく関係なく、今回のケースでは問題になりえませんでした。

こうやって作ったカーネルでも多分ほとんどは問題は起きないのですが
(というか、過去に自分で作ってたカーネルパッケージもコレを踏んでいた)、
単純に置き換えて使えない、というのは敷居の点から問題になりそうです。

    *    *    *    *

でもって、これでは困るケースもありそうなので、/lib/firmware/*を
含めることができる手順を (いいかげんに) まとめました。

まだぜんぜん洗練していません。もうちょっとマシな手順があるような
気がしますが、宙づりのままなのもアレなので、投げておきます。

以下の手順は Ubuntu 7.04 Beta でのものです。

1) build用パッケージの入手
$ sudo apt-get build-dep linux-image-2.6.20
$ sudo apt-get install fakeroot libncurses5-dev

--- ここからは各ユーザの権限で行えます。 ---

2) ソースパッケージの入手
$ cd ~
$ apt-get source linux-image-debug-2.6.20-14-generic
※カレントディレクトリに linux-source-2.6.20-2.6.20/が
作成され、ソースが自動的に展開されます。

3) ソースパッケージの修正

3-0) TOMOYO Linux化します。

wget http://sourceforge.jp/tracker/download.php?group_id=1973&atid=7342&file_id=1814&aid=10246


3-1)
 Makefileに以下をパッチします。
==================================================================
--- linux-source-2.6.20-2.6.20/Makefile 2007-03-21 01:19:01.000000000 +0900
+++ linux-source-2.6.20-2.6.20ccs1.4/Makefile   2007-04-10
12:48:15.000000000 +0900
@@ -1,11 +1,12 @@
 VERSION = 2
 PATCHLEVEL = 6
 SUBLEVEL = 20
-EXTRAVERSION = .3-ubuntu1
+EXTRAVERSION = .3-ccs1.4-ubuntu1
 NAME = Homicidal Dwarf Hamster

 ifdef UBUNTUBUILD
-EXTRAVERSION =
+EXTRAVERSION =.3-ccs1.4-ubuntu1
 endif

 # *DOCUMENTATION*
==================================================================

3-2)
 debian/controlに以下をパッチします。

※要するに、デフォルトで作られるパッケージのセクションを
まるまるコピーして、今回作ろうとするパッケージの名前に
置き換えるだけー。

==================================================================
--- linux-source-2.6.20-2.6.20/debian/control   2007-04-02
02:05:19.000000000 +0900
+++ linux-source-2.6.20-2.6.20ccs1.4/debian/control     2007-04-10
12:47:40.000000000 +0900
@@ -59,7 +59,7 @@
  information about the problems, which may result by upgrading your
  kernel.

-Package: linux-headers-2.6.20-14
+Package: linux-headers-2.6.20.3-ccs1.4-ubuntu1
 Architecture: amd64 i386 powerpc sparc ia64 hppa
 Section: devel
 Priority: optional
@@ -224,6 +224,20 @@
  This is for sites that want the latest kernel headers.  Please read
  /usr/share/doc/linux-headers-2.6.20-14/debian.README.gz for details.

+Package: linux-image-debug-2.6.20.3-ccs1.4-ubuntu1
+Architecture: i386
+Section: devel
+Priority: optional
+Provides: linux-debug
+Description: Linux kernel debug image for version 2.6.20 on i386
+ This package provides a kernel debug image for version 2.6.20 on
+ i386.
+ .
+ This is for sites that wish to debug the kernel.
+ .
+ The kernel image contained in this package is NOT meant to boot from. It
+ is uncompressed, and unstripped.
+
 Package: linux-image-debug-2.6.20-14-386
 Architecture: i386
 Section: devel
@@ -654,6 +668,31 @@
  The kernel image contained in this package is NOT meant to boot from. It
  is uncompressed, and unstripped.

+Package: linux-image-2.6.20.3-ccs1.4-ubuntu1
+Architecture: i386 amd64
+Section: base
+Priority: optional
+Provides: linux-image, linux-image-2.6, fuse-module,
ndiswrapper-modules-1.9, ivtv-modules, kvm-modules-2, rhcs-modules2-1
+Depends: initramfs-tools (>= 0.36ubuntu6), coreutils | fileutils (>=
4.0), module-init-tools (>= 3.2.1-0ubuntu1)
+Conflicts: hotplug (<< 0.0.20040105-1)
+Recommends: lilo (>= 19.1) | grub
+Suggests: fdutils, linux-doc-2.6.20 | linux-source-2.6.20
+Description: Linux kernel image for version 2.6.20 on x86/x86_64
+ This package contains the Linux kernel image for version 2.6.20 on
+ x86/x86_64.
+ .
+ Also includes the corresponding System.map file, the modules built by the
+ packager, and scripts that try to ensure that the system is not left in an
+ unbootable state after an update.
+ .
+ Supports Generic processors.
+ .
+ Geared toward desktop systems.
+ .
+ You likely do not want to install this package directly. Instead, install
+ the linux-generic meta-package, which will ensure that upgrades work
+ correctly, and that supporting packages are also installed.
+
 Package: linux-image-2.6.20-14-generic
 Architecture: i386 amd64
 Section: base
==================================================================

3-3) debian/changelogに以下をパッチします。

※ 本当はもっと書かないと駄目ですが、とりあえずなので省略。
==================================================================
--- linux-source-2.6.20-2.6.20/debian/changelog 2007-04-02
02:03:31.000000000 +0900
+++ linux-source-2.6.20-2.6.20ccs1.4/debian/changelog   2007-04-10
10:14:30.000000000 +0900
@@ -1,4 +1,4 @@
-linux-source-2.6.20 (2.6.20-14.22) feisty; urgency=low
+linux-source-2.6.20 (1) feisty; urgency=low
==================================================================
4) configをコピーし、menuconfigします。
$ cp /boot/config-hogehoge .config
$ make -s menuconfig

5) 以下のコマンドでコンパイル&パッケージ作成を行います。

$ UBUNTUBUILD=1 DEBIAN_SRCTOP=~/kern/linux-source-2.6.20-2.6.20/
fakeroot make-kpkg -initrd kernel_image kernel_headers modules_image

6) しばらく待つと以下のパッケージが、~/に作成されます。

linux-image-2.6.20.3-ccs1.4-ubuntu1_1_i386.deb
linux-headers-2.6.20.3-ccs1.4-ubuntu1_1_i386.deb
linux-image-debug-2.6.20.3-ccs1.4-ubuntu1_1_i386.deb

以上。




tomoyo-dev メーリングリストの案内
Back to archive index