initrd.gzの日本語化 ー 協力お願いします

4.X系の開発

モデレータ: 暇人, YoN, nyu

返信する
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

initrd.gzの日本語化 ー 協力お願いします

投稿記事 by nyu »

暇人さんのお蔭で日本語ターミナルが実際動くように成りました。これでinitrd.gzの
日本語化も可能になってきました。

カーネルがRAMにロードされると次はinitrd.gzがRAMにロードされます。
ターミナルに色んなメッセージが英語で出てきます。その後は色んなセットアップの
プログラムが実行されます。全部英語です。これを日本語にするにはinitrd.gzの日本語
化が必要だと思います。現在、initrd.gzがロードされて、ターミナルモードでは日本語
の表示は出来ません。

1、日本語環境ja_JP.UTF-8の環境を作る
2、フレームバッファのセットアップ
3、BTERMプログラムを実行する
4、Xウィンドがスタートする前にBTERMを中止する<----- 必要かな?

みんなでやりませんか?能力の有る方、勉強したい方、参加お願いします。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
YoN
Site Admin
記事: 1239
登録日時: 07/04/01(日) 08:00
お住まい: 信州

投稿記事 by YoN »

nyuさん

コンソールで日本語を使うスレッドで行き詰まってます。
viewtopic.php?t=431

パピーでコンソールで日本語を扱う理由は、起動、終了プロセスなどの英語のメッセージを日本語で表示できるようにしたいからです。
コンソールで日本語入力ができなくても日本語表示ができればよいと思います。
bterm以外にもjfbterm、jvim-cannaなどを見ましたがどれもパピーには合わない気がしました。(別途フォントが必要だったり。uim-fepも単体が見つからず、uim-1.5.1の中にuim-fepがあり、サイズがどんどん大きくなる)

btermで最低限の日本語が表示できればよいと思います。

(1)起動プロセスでは、キーボード、Xserverの選択、解像度の設定。
(2)初回終了プロセスでは保存メッセージ。
が日本語で表示できればいいのでは?
「Booting kernel...」などは英語のままでも構わないと思います。

初歩的な質問ですが、initrd.gz はどうやったら編集、修正できるのですか?
[Puppy4.1.2-retro-JP] EPSON Endeavor MT-3500
Celeron 533MHz 256MB
[Lupu-5.0.1 LiveCD + lang_support_ja-1.4.sfs] SOTEC Whitney System CR Board
Celeron 766MHz 512MB
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

Puppy Unleashedを解凍して、その中にpuppy-unleashed/boot/と言うディレクトリが
有ります。その中に「initrd-tree0」と言うディレクトリがinitrd.gzの親元です。
その中に必要なものを入れて、終わったら、「initrd-tree0」を「initrd-tree」に変えて
#./makeinitrdgz.shを実行すれば自動的にinitrd.gzが作れます。「initrd-tree0」の中に
何を入れるかが大事です。まぁ、日本語環境、フレームバッファ
を有効にする、BTERMを実行する、.....などですが、どうやって実行るかはまだ分かりません。
[/b]
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

セットアップとしてはパピーを質素なインストールして、GRUBを使って、新しい
initrd.gzの選択が出来るようにします。勿論initrd.gzのファイル名を其々違う名前を
使います。それで実験出来ます。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

新しいカーネルのモジュールを追加、ロードは出来てますが、日本語環境の設定と
BTERMの実行が出来ていません。そのやり方が分かりません。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

私はPuppy Unleashedを使ってinitrd.gzを生成したますが、問題ありません。質素なインストールの環境で作りました。
1、まず「puppy-unleashed-core-4.00.tar.gz」を解凍します。
2、「puppy-unleashed」と言うディレクトリが出来ます。このディレクトリに入ります。
3、「boot」と言うディレクトリが有りますので、そこに入ります。
4、その中に「initrd-tree0」と言うディレクトリが有りますので、それをそっくりそのまま「initrd-tree」と言うディレクトリにコピーします。
5、この時点では、カーネルモジュールが空なので、「/lib/modules」の中の「2.6.21.7」と言うディレクトリをそっくりそのまま「puppy-unleashed/boot/initrd-tree/lib/modules」にコピーします。
6、この時点では、「i810fb」と言うi810用のモジュールが無いので、i810のグラフィックスカードを使っている方はこのモジュールとその他のモジュールを持ってこなくては成りません。一番簡単な方法は「puppyunleashed/kernels/2.6.21.7/all-modules/lib/modules/2.6.21.7/kernel/drivers/video」と言うディレクトリをそっくりそのまま「puppy-unleashed/boot/initrd-tree/lib/modules/2.6.21.7/kernel/drivers」にコピーします。
7、ここで「puppy-unleashed/boot/initrd-tree/init」をエディタで開き、適当な所に(私の場合は:
「############LOAD MODULES TO ACCESS DRIVERS#############################」の上に
modprobe vga16fb
modprobe i810fb
を入れました。
8、「init」を保存して、「puppy-unleashed/boot」に出ます。
9、./depmodを実行する。必要性が有るかどうか分かりません。
10、./makeinitrdgz.shを実行します。
11、「initrd.gz」と言うファイルが生成されます。
12、名前を変えて、例えば:「test01initrd.gz」、現在質素なインストールに有る「initrd.gz」と同じディレクトリにコピーします。
13、GRUBの中で、「initrd.gz」か「test01initrd.gz」の選択が出来るようにします。そうすればマシンをブートする時にどちらかを選択出来ます。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

コード: 全て選択

# lsmod
Module			Size	Used by
fuse			44052	  0
unionfs		      83732	0
nls_iso8859_1	   4224	    0
nls_cp437	     5888      0
usbhid		      24928	 0
usb_storage	  83264	     0
uhci_hcd	    24076      0
usbcore		   127128      4 usbhid,usb_storage,uhci_hcd
sr_mod		    17188      0
ide_cd		      39200	 0
cdrom		     36768	2 sr_mod,ide_cd
squashfs	    46856      0
vga16fb		    11276      0                          
 i810fb		      28476	 0
agpgart		     31312	1 i810fb
vgastate	       8448	2 vga16fb,i810fb
initial-ramdiskのコンソルの表示です。フレームバッファモジュールがロードされているのが分かります。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

日本語環境の設定とBTERMの実行で困ってます

投稿記事 by nyu »

initial-ramdiskでの日本語環境の設定とbtermの実行で困ってます。スクリプトが分からないし、能力がないもんで....

まず、パピーリナックスの日本語環境とbtermをinitrdの中に入れました。元々のinitrdには/usr以降のディレクトリは有りません。それでパスを設立しました。initial-ramdiskのコンソルでexportを実行すると次の様になります。

コード: 全て選択

#export
export  HOME='/'
export  LANG='ja_JP.UTF-8'
export  LD_LIBRARY_PATH='/lib:/usr/lib:/usr/X11R7/lib'
export  OLDPWD='/'
export  PATH='/bin:/usr/bin:/sbin:/usr/share'
export  PWD='/'
export  TERM='linux'
export  pmedia='idehd'
export  psubdir='puppy400JP'
#
ls -l /usr/binでは

コード: 全て選択

-rwxr-xr-x       1  0          0       47576  Jul 29 16:07 bterm
一見大丈夫の様に見えますが、
# /usr/bin/btermを実行すると

コード: 全て選択

/bin/sh:  /usr/bin/bterm:  not found
で、実行出来ません。どんな問題かは分かりません。御指導願います。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

initrd.gzの中ではDLLは使えないんですね。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

途中報告

投稿記事 by nyu »

↑のコメントは間違えです。DDLはinitial-ramdisk内でも使えます。

現在発見したこと:

メモリマップが見られます。
#cat /proc/self/mapsを実行すると普通のパピー4.00日本語版がロードされている時、
とinitd.gzだけがRAM中にロードされた時の違いが分かります。それが原因かな?

パピー4.00日本語版がロードされている時:

コード: 全て選択

08048000-0804c000 r-xp 00000000 00:0d 181        /bin/cat
0804c000-0804d000 rwxp 00003000 00:0d 181        /bin/cat
0804d000-0806e000 rwxp 0804d000 00:00 0          [heap]
b7d28000-b7d9e000 r-xp 00000000 00:0d 617        /usr/share/locale/ja_JP.UTF-8/LC_CTYPE
b7d9e000-b7d9f000 r-xp 00000000 00:0d 616        /usr/share/locale/ja_JP.UTF-8/LC_NUMERIC
b7d9f000-b7da1000 r-xp 00000000 00:0d 615        /usr/share/locale/ja_JP.UTF-8/LC_TIME
b7da1000-b7e0d000 r-xp 00000000 00:0d 614        /usr/share/locale/ja_JP.UTF-8/LC_COLLATE
b7e0d000-b7e0e000 r-xp 00000000 00:0d 613        /usr/share/locale/ja_JP.UTF-8/LC_MONETARY
b7e0e000-b7e0f000 r-xp 00000000 00:0d 612        /usr/share/locale/ja_JP.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES
b7e0f000-b7e10000 r-xp 00000000 00:0d 610        /usr/share/locale/ja_JP.UTF-8/LC_PAPER
b7e10000-b7e11000 r-xp 00000000 00:0d 609        /usr/share/locale/ja_JP.UTF-8/LC_NAME
b7e11000-b7e12000 r-xp 00000000 00:0d 608        /usr/share/locale/ja_JP.UTF-8/LC_ADDRESS
b7e12000-b7e13000 r-xp 00000000 00:0d 607        /usr/share/locale/ja_JP.UTF-8/LC_TELEPHONE
b7e13000-b7e14000 r-xp 00000000 00:0d 606        /usr/share/locale/ja_JP.UTF-8/LC_MEASUREMENT
b7e14000-b7e15000 r-xp 00000000 00:0d 603        /usr/share/locale/ja_JP.UTF-8/LC_IDENTIFICATION
b7e15000-b7e16000 rwxp b7e15000 00:00 0 
b7e16000-b7f0b000 r-xp 00000000 00:0d 120        /lib/libc-2.6.1.so
b7f0b000-b7f0c000 r-xp 000f5000 00:0d 120        /lib/libc-2.6.1.so
b7f0c000-b7f0e000 rwxp 000f6000 00:0d 120        /lib/libc-2.6.1.so
b7f0e000-b7f12000 rwxp b7f0e000 00:00 0 
b7f12000-b7f27000 r-xp 00000000 00:0d 113        /lib/ld-2.6.1.so
b7f27000-b7f29000 rwxp 00014000 00:0d 113        /lib/ld-2.6.1.so
bfda2000-bfdb8000 rw-p bfda2000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
initrd.gzがRAMにロードされた時:

コード: 全て選択

08048000-08086000 r-xp 00000000 00:01 589        /bin/busybox
08086000-08087000 rwxp 0003d000 00:01 589        /bin/busybox
08087000-080a1000 rwxp 08087000 00:00 0          [heap]
bf841000-bf856000 rwxp bf841000 00:00 0          [stack]
ffffe000-fffff000 r-xp 00000000 00:00 0          [vdso]
btermは「/lib/libc-2.6.1.so」と「/lib/ld-2.6.1.so」が必要です。日本語環境も
initrd.gzがRAMにロードされた時点では設定されてません。これをどうやって設定
するのでしょうか?

ところで、initrd.gzの中の「/lib」に色んなライブラリファイルをコピーしたら、
initial-ramdisk内で「bterm」の実行が出来ました。エラーも出てませんが、
コンソルの画面がブルーには成りません。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
YoN
Site Admin
記事: 1239
登録日時: 07/04/01(日) 08:00
お住まい: 信州

投稿記事 by YoN »

nyuさん さんが書きました:一番簡単な方法は「puppyunleashed/kernels/2.6.21.7/all- modules/lib/modules/2.6.21.7/kernel/drivers/video」と言うディレクトリをそっくりそのまま「puppy-unleashed/boot/initrd-tree/lib/modules/2.6.21.7/kernel/drivers」にコピーします。
のようにして initrd.gzを作成しました。
1: それをGRUBの指定のディレクトリに置きました。
2: その後パピーを再起動して「プロンプトに戻り」「# bterm」をブルーバックで起動しました。
3: あらかじめ /usr/sbin/xorgwizard の「Welcome Video Wizard....」あたりを「ようこそ...」などと日本語にしておきます。
4: bterm上で「# xorgwizad」とすると、残念ながら日本語にした部分は日本語にならず文字化けでした。
5: bterm上で「# cat xorgwizard」とすると日本語部分は正しく日本語で表示されます。

どうもこのあたりがあやしいです。
xorgwizardを実行する時のコンソールのLANGが違う?
[Puppy4.1.2-retro-JP] EPSON Endeavor MT-3500
Celeron 533MHz 256MB
[Lupu-5.0.1 LiveCD + lang_support_ja-1.4.sfs] SOTEC Whitney System CR Board
Celeron 766MHz 512MB
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

そのメッセージの部分は「dialog」と言うコマンドを使っていますね。このコマンドが
使えないかも分かりません。調べる必要が有ります。代わりのコマンドが無いかな。
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

推測が正しいと思います

投稿記事 by nyu »

Debianのフロッピーインストールを起動して少し調べて見ました。

コード: 全て選択

Module                  Size  Used by
vga16fb                11148  2 
vgastate                7680  1 vga16fb
usbhid                 35552  0 
usbkbd                  6656  0 
processor              23212  0 
uhci_hcd               19980  0 
usbcore               108676  4 usbhid,usbkbd,uhci_hcd
floppy                 51748  1 
矢張りフレームバッファを予めロードしています。

それからメモリマップも調べて見ると:

コード: 全て選択

08048000-08078000 r-xp 00000000 00:0c 582        /bin/busybox
08078000-0807a000 rwxp 0002f000 00:0c 582        /bin/busybox
0807a000-080a0000 rwxp 0807a000 00:00 0          [heap]
b7eff000-b7f00000 rwxp b7eff000 00:00 0 
b7f00000-b7fa3000 r-xp 00000000 00:0c 578        /lib/libc.so.6
b7fa3000-b7fa8000 rwxp 000a2000 00:0c 578        /lib/libc.so.6
b7fa8000-b7faa000 rwxp b7fa8000 00:00 0 
b7faa000-b7fab000 r-xp b7faa000 00:00 0          [vdso]
b7fab000-b7fc0000 r-xp 00000000 00:0c 572        /lib/ld-linux.so.2
b7fc0000-b7fc2000 rwxp 00014000 00:0c 572        /lib/ld-linux.so.2
bf976000-bf98b000 rw-p bf976000 00:00 0          [stack]
「/lib/libc.so.6」to「/lib/ld-linux.so.2」が予めロードされてます。これをロード
しないと「bterm」はうまく働きません。俺にはわからん。暇人さん、お助けの
手を :P
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
nyu
Site Admin
記事: 506
登録日時: 07/01/10(水) 17:35
お住まい: 香港

投稿記事 by nyu »

initrd.gzの中身を見ると、よく「echo」と言うコマンドを使ってメッセージをコーンソルに出してます。このコーンソルでは日本語が化けます。「echo」のアウトプットを「/dev/fb0」にしても、メッセージは出ませんね。なぜでしょう?
Puppy4.1.1-JP
Celeron 400MHz 256MB 6GHD
アバター
暇人
記事: 2392
登録日時: 07/08/12(日) 23:33
お住まい: 埼玉県xx市並4
連絡する:

投稿記事 by 暇人 »

今後1ヶ月程多忙で暇人ではなくなってます。

initrdというかlinuxのブートシーケンスは未体験ゾーンです。

vineのブートでは日本語が表示されたような気がするのですが(euc.jp)
研究すると参考になるかも。
管理人見習い
NEC Express5800 S70/SR G6950 2.8GHz/1G
lenovo S10-3 AtomN450 1.66G/1G
暇人/貳馬力/2CV
返信する