[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 19:13 / Filesize : 191 KB / Number-of Response : 637
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

なにはともあれSLAX



1 名前:よーだ [2006/08/25(金) 08:34:04 ID:hyAu/OJ9]
ディストリの壁をこえて SLAX を語ろう。


111 名前:login:Penguin mailto:sage [2006/10/02(月) 08:59:45 ID:+nsWYShe]
>>110
よく見たらisoイメージの./tools以下にmksquashfsとunsquashfsがありました。
*2moのコマンド群は、おなじ./tools以下にあるliblinuxliveという、関数登録用のスクリプトを起動したのち、その中の

create_module()
{
mksquashfs "$1" "$2" $3 >/dev/null
if [ $? -ne 0 ]; then return 1; fi
chmod oga-x "$2" # remove execute attrib
}

を使っていました。つまり間接的にmksquashfsを使っていることになります。いわばwrapperですね。


112 名前:login:Penguin mailto:sage [2006/10/02(月) 09:00:36 ID:+nsWYShe]
>>110つづき
またmo2dirでは同じliblinuxliveの中の

mount_module()
{
mount -t squashfs -o loop,ro "$1" "$2"
err=$?
if [ $err -eq 0 ]; then
echo "$1 $2" >>/tmp/_mounts
fi
return $err
}

を使用していました。
unsquashfsというコマンドを使うのではなく、kernelにsquashfsパッチを当てているようです。
エラーを返すというのはこのmountの動作に関してでしょう。

unsquashfsで一部の*.moを解凍しようとすると次のようなエラーが出ます。これも類似の現象だと思います。

Major/Minor mismatch, filesystem on Avidemux_2_0_40.mo is (2:1)
I only support Squashfs 3.0 filesystems! Later releases will support older Squashfs filesystems

つまり、もう少ししたら3.0以前のsquashfsにも対応するから待っててね、ということのようです。


113 名前:login:Penguin mailto:sage [2006/10/02(月) 09:09:01 ID:+nsWYShe]
>>108
The glibc-profile package includes the GNU libc libraries and support for profiling using the gprof program.
Profiling is analyzing a program's functions to see how much CPU time they use and determining which functions are calling other functions during execution.
To use gprof to profile a program, your program needs to use the GNU libc libraries included in glibc-profile (instead of the standard GNU libc libraries included in the glibc package).

If you are going to use the gprof program to profile a program, you'll need to install the glibc-profile program.

以上、赤帽のサイトから。これ見るかぎりglibcのプロファイリング用のライブラリ群のようですな。あまり必要ではなさそうなのですが、どうしてuimの動作と関連するのでしょう..

114 名前:login:Penguin mailto:sage [2006/10/02(月) 12:34:19 ID:+nsWYShe]
ためしに/modules以下のglibc-profile-2.3.6-i486-3.moを消して起動してみました。
(USBだとこういうのが簡単 ^^;)
今のところuim1.2.0も問題なく動いています(Konsole/KDEでも、jfbtermのuim-fepも)。
しばらくこのprofileモジュール外して使ってみます。もし不具合でたら報告します。

115 名前:login:Penguin mailto:sage [2006/10/02(月) 13:51:08 ID:+nsWYShe]
fd使いのために。
.fd2rc で次のような関連付けをしてみると*moファイルの扱いがなじんできます。

arch ".mo" "mksquashfs %TA %C &>/dev/null" "unsquashfs %C"


116 名前:login:Penguin mailto:sage [2006/10/02(月) 14:40:46 ID:+nsWYShe]
追加

launch ".mo" "unsquashfs -l %C|$PAGER"

117 名前:login:Penguin [2006/10/02(月) 21:52:12 ID:DY7TgomC]
>>116
エラー表示も重要
launch ".mo" "unsquashfs -l %C 2>&1 |$PAGER"

118 名前:login:Penguin mailto:sage [2006/10/02(月) 23:13:43 ID:D3+ZApa1]
>>113
すいません、言葉が足りませんでした。
uimをmakeするときに、i18nとprofileを一緒に入れて動いたのが確認できたので、
それをそのまま使っています。glibc関連のライブラリは、その他のモジュールで
使う場合があるので、そのままにしておこうという感じです。

119 名前:login:Penguin mailto:sage [2006/10/04(水) 11:55:28 ID:JbpUhSjT]
>>112
unsquashfsでエラーが出るということはSLAXがブートするときにも読めてないということだろうか?
とくにエラー表示ないけどなあ。
SLAXのkernelはsquash 2.x と 3.xの両方が読めてるってことか。
すくなくとも本家のlibdvdcss_1_2_8_2.mo, alien_8_56.mo, XChat_2_6_1.mo, Syslinux_2_13.moはunsquashfs3.1では読めなかったぞ。(本家のモジュールには2.xと3.xのsquashfsが混在しているが、これでいいのか)




120 名前:login:Penguin mailto:sage [2006/10/04(水) 16:39:57 ID:JbpUhSjT]
squashfs2.xとか3.xとかいうことより、
Ftp://ftp.slax.org/SLAX-6.x/testing/technology-preview/READMEによると
using LZMA compression for squashfs. This is not backwards compatible with old Slax modules, but it's better so Slax will switch to it.
ということなので、いずれ全てのモジュールは新しくならざるをえない。これってsquashfsが3.2ないし4.0になるってことか?

121 名前:login:Penguin mailto:sage [2006/10/05(木) 02:45:49 ID:vKxreEEd]
>>119
ブートするときに読めてないということではないみたいです。
単にmo2dirで展開するときに、失敗するみたいですね。
それを作ったときのsquashfsのバージョンで展開しなくちゃいけないんだけど、
どのバージョンなのか分からないまま、try & errorは避けたいです。

122 名前:login:Penguin mailto:sage [2006/10/05(木) 02:59:09 ID:vKxreEEd]
>>120
確かに圧縮形式が変わればモジュールのコンパチビィリティが失われるので、
これまでのモジュールは使えなくなりますね。そこのところを確かめようと、
squashfsのウェブページを見たのですが、それらしいのを見つけられませんでした。
根拠が薄いのですが、次期slaxからunionfsをaufsに変更するように、squashfsも
another squashfsにするような気がします。

squashfsの作者がLZMAは好ましく思っていないというTomasのコメントがあるから
そうかも。それよりスピードが遅いというスレッドも本家でたっているので、ひょっと
したら見送られる可能性もあります。

123 名前:login:Penguin mailto:sage [2006/10/05(木) 09:15:43 ID:JRU68BeF]
>>122
ftp://ftp.slax.org/SLAX-6.x/testing/technology-preview/devel/lzma-for-squashfs.tar.gz
これ、LZMAパッチの当たったsquashfsのソースだろうか。
展開コマンドunsquashfs.cについてはそのまんまのようだけど、同じunsquashfsで通用するってことかな。
いずれにしてもunsquashfsがもちっとかしこくなって、
モジュールの圧縮形式[version]まで自動検出できるようになってほしい。
それと旧バージョンの圧縮モジュールを別のバージョンの圧縮モジュールに変換するようなコマンドも。

124 名前:login:Penguin [2006/10/05(木) 12:37:13 ID:JRU68BeF]
バイナリダンプしてみると、squashfs3.xで圧縮したものは0x6fから8バイトにわたってナゾの0xffが続いている。これはunsquashfs3.1がきちんと読める。
unsquashfsがエラーを返す*.moファイルはみな、0x6fから0xffが続かないものばかりだ。まあこんなreverseするより、mksquashfsのソース読むのが正道なんだろけど。

125 名前:login:Penguin mailto:sage [2006/10/05(木) 13:39:22 ID:JRU68BeF]
ソース読みマスタ。squashfs_fs.hの中のstruct squashfs_super_block。
0xc-0xd(第29-30バイト)がmajor version, 0xe-0xf(第31-32バイト)がminor versionのようだ。0xffが続くとかどうとかはあまりspecificではなかった。撤回。

126 名前:login:Penguin mailto:sage [2006/10/05(木) 15:32:09 ID:JRU68BeF]
ということでどのバージョンのsquashfsで圧縮されているかのチェックはbashなら

function checksqver { dd if=$1 bs=2 count=2 skip=14 2>/dev/null|ruby -ne 'p $_.unpack("M")'; }

という感じになるかな。出力はきれいじゃないが、まあとりあえずの情報だけは得られる。テキトーにいぢってくれ。
usage: checksqver <filename>

127 名前:login:Penguin mailto:sage [2006/10/05(木) 15:53:57 ID:JRU68BeF]
123-126まで却下。unsquashfsがきちんと処理していた。やれやれ。

128 名前:login:Penguin [2006/10/05(木) 19:57:19 ID:PONBBqlJ]
>>127
いやいや、どこにバージョン情報があるかよくわかりました。

129 名前:login:Penguin [2006/10/06(金) 10:23:10 ID:+QMgQO8T]
linux自体昨日初めて聞いて触ったんだけど、これでFAX送ろうと思ったけど送れないよ。
どうやったらいいのかな。



130 名前:login:Penguin mailto:sage [2006/10/06(金) 11:54:13 ID:bFSkCVhU]
たとえばwindow managerがKDEならば「KDE fax 送信」でググられてはいかがかと。


131 名前:login:Penguin mailto:sage [2006/10/06(金) 17:56:10 ID:bFSkCVhU]
>>126
function checksqver{ test -f $1 && ruby -e "ARGF.seek(28); p ARGF.read(4).unpack('M')" $1; }

132 名前:login:Penguin mailto:sage [2006/10/06(金) 18:00:34 ID:bFSkCVhU]
function checksqver { test -f $1 && ruby -e "ARGF.seek(28); p ARGF.read(4).unpack('M')" $1; }
^
空白!!

133 名前:login:Penguin [2006/10/07(土) 13:23:32 ID:7RjSdMdC]
>>132
function checksqver { test -f $1 && ruby -e "p IO.read(ARGV.shift,4,28).unpack('M')" $1; }

134 名前:login:Penguin [2006/10/09(月) 13:22:39 ID:7wkUnpBE]
Slax_Module_Inspector_060611.mo を使えば3.xも2.xも処理できます。


135 名前:login:Penguin [2006/10/09(月) 13:37:42 ID:7wkUnpBE]
つーか、これブート時に展開したときのログみたいなもんを利用するモジュールかも。

136 名前:login:Penguin [2006/10/09(月) 17:35:50 ID:7wkUnpBE]
お。本家で5.1.8が出ましたね。

137 名前:login:Penguin mailto:sage [2006/10/09(月) 23:52:37 ID:sK79ZViL]
これってデフォルトのWMはKDEだけ?

138 名前:login:Penguin mailto:sage [2006/10/10(火) 13:32:04 ID:WbtrmFIN]
>>137
標準ではKDEとfluxboxだけだと思うけど、www.slax.orgにgnome, fvwm, xfceなどのモジュールがあるのでgetして /modules以下に置けば使用できると思います。
ttp://www.slax.org/modules.php?category=system

139 名前:login:Penguin mailto:sage [2006/10/10(火) 13:52:40 ID:hIAZPxPA]
LiveCDの部屋に5.1.8がupされとるで



140 名前:login:Penguin mailto:sage [2006/10/10(火) 21:42:12 ID:nFDn8HEs]
●517jpにだけあるモジュール
ochusha-0.5.8.2-3.i386.mo
openprinting_mona-jp-0.1.3-0.i586.mo

●518jpにだけあるモジュール
jd-1.7.0-060927.mo
openprinting_M+mona-jp-0.1.3-0.i586.mo
slax_5.1.8.mo

■この/modules/slax_5.1.8.moというモジュールは517jpでは/rootcopy以下におかれていたファイルをモジュール化したもののようだ。
これら設定ファイルのうち517jpにだけあって518jpには含まれないものは
/root/.fonts.conf

また、設定ファイルのうち518jpであらたに追加されたものは
/etc/fonts/local.conf
/etc/rc.d/rc.local
/usr/bin/startfluxbox

141 名前:137 mailto:sage [2006/10/10(火) 23:27:52 ID:AFHQnwVm]
>>138
thx!

142 名前:login:Penguin mailto:sage [2006/10/11(水) 09:12:54 ID:l7bVgBMg]
はじめて使ったがjdもなかなかいいな。開発が続いている点でイチオシか。

143 名前:login:Penguin mailto:sage [2006/10/11(水) 16:57:15 ID:l7bVgBMg]
>>140
517jpと518jpの/modules以下の*.moは、名前の同じものは日付がちがっても全く同じバイナリやね。
まんま動くということのようです。

144 名前:login:Penguin mailto:sage [2006/10/12(木) 11:11:49 ID:Koz2C7Fz]
本家slax518とslax518jpの相違点の詳細(その1)

▼相異点1
バイナリー・ファイルtmp/518/boot/initrd.gzとtmp/518jp/boot/initrd.gzは違います
--> initrd.gzに含まれるliblinuxliveスクリプトのutf8対応の部分のみの変更 => 以下の「相異点3」参照

バイナリー・ファイルtmp/518/boot/isolinux.binとtmp/518jp/boot/isolinux.binは違います
バイナリー・ファイルtmp/518/boot/isolinux.bootとtmp/518jp/boot/isolinux.bootは違います
--> isoイメージを作成するときに生成されるファイルだからか..

▼相異点2
518jpでは/modules以下に追加モジュールが置かれている。<= まあ当然

(つづく)

145 名前:login:Penguin mailto:sage [2006/10/12(木) 11:13:10 ID:Koz2C7Fz]
本家slax518とslax518jpの相違点の詳細(その2)

▼相異点3
diff -r tmp/518/tools/liblinuxlive tmp/518jp/tools/liblinuxlive
456c456,461
< if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
---
> # if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
> if [ "$IOCHARSET" != "" ]; then
> OPT="$OPT,nls=$IOCHARSET"
> else
> OPT="$OPT,nls=utf8"
> fi
460c465,472
< if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
---
> # if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
> if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
> OPT=",iocharset=$IOCHARSET"
> else
> if [ "$FS" = "vfat" ]; then
> OPT=",iocharset=utf8,codepage=932"
> fi
> fi

●結論:本家slax518とslax518jpの相違は、追加モジュールの他にはliblinuxliveスクリプトの一部(上記)変更のみである。


146 名前:login:Penguin mailto:sage [2006/10/12(木) 15:08:36 ID:s42DJ75o]
>>145
調査乙
fstabを作成するときなど、パーティションがvfat,ntfsのときにオプションに
{iocharset|nls}=utf8, codepage=932
を付けるための修正だね。


147 名前:login:Penguin mailto:sage [2006/10/12(木) 15:54:54 ID:Koz2C7Fz]
>>146
なるほど。
これって台湾や中国、韓国でもそれぞれ同様の変更が必要となりそうですね。
case of $LANG ; esac とか使って汎用スクリプトってかけないかな>Tomas

148 名前:login:Penguin mailto:sage [2006/10/12(木) 16:06:17 ID:Koz2C7Fz]
case $LANG in
ja_JP* ) codepage=932 ;;
ko_KR* ) codepage=949 ;;
zh_CN* ) codepage=936 ;;
zh_TW* ) codepage=950 ;;
esac


149 名前:login:Penguin mailto:sage [2006/10/12(木) 16:42:25 ID:s42DJ75o]
そんじゃこうなおせばいい?

if [ "$FS" = "vfat" ]; then
OPT=",iocharset=utf8,codepage=932"
fi



if [ "$FS" = "vfat" ]; then
case $LANG in
ja_JP* ) $CODEPAGE="codepage=932" ;;
ko_KR* ) $CODEPAGE="codepage=949" ;;
zh_CN* ) $CODEPAGE="codepage=936" ;;
zh_TW* ) $CODEPAGE="codepage950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi




150 名前:login:Penguin mailto:sage [2006/10/12(木) 16:58:28 ID:Koz2C7Fz]
codepageが必要なのはこの4つだけですよね。
多バイト文化圏って、もっとたくさんありそうにも思うけど(タイとか、中東とかはどうなんだろう?)、とりあえずCJK対応ってことで。いいと思います。

151 名前:login:Penguin mailto:sage [2006/10/12(木) 18:38:28 ID:2Z6vbIEE]
>>150
たくさんのロケールを処理するなら本体にcase文を入れることが冗長になる。
メンテするごとにinitrdを作り直したりする必要ができてたいへんでもある。
ロケールを食わしたらコードページを返すような関数を書いて/usr/local/sbinあたりに置くのはどうか。
関数名をかりに 'langcp' とすると `langcp ja_JP.UTF-8` が 932 になるような関数。
その上で この OPT=",iocharset=utf8,codepage=932" の行を OPT=",iocharset=utf8,codepage=$(langcp $LANG)" とするのが簡潔かも知れない。

152 名前:login:Penguin mailto:sage [2006/10/12(木) 20:36:21 ID:2Z6vbIEE]
考えたら/usr/local/sbinに置いたとしても、その関数を更新すればinitrdを作りなおさなければならないという点では同じことかな。
liblinuxliveの中に
langcp () {
local codepage
case $LANG in
ja_JP* ) codepage=932 ;;
ko_KR* ) codepage=949 ;;
zh_CN* ) codepage=936 ;;
zh_TW* ) codepage=950 ;;
* ) return 1 ;;
esac
echo $codepage;return 0
}
なんていう関数を書く方がふつうの感覚かも知れない。そのうえで
OPT=",iocharset=utf8,codepage=$(langcp $LANG)"

153 名前:login:Penguin mailto:sage [2006/10/14(土) 10:07:53 ID:CkRKZPul]
とりあえず slax-ja-5.1.8-1.iso をアップしてみました。
お試しいただけると幸いです。

hatochan.dyndns.org/slax-ja/index.php?slax-ja%2Fdownload

154 名前:login:Penguin mailto:sage [2006/10/15(日) 00:42:33 ID:E9l4MAs7]
jpの修正版が上がっている。
Fluxboxで日本語がまともに使えるようになった。
スゲー殺風景なデスクトップだが軽いのが取り柄。
poorなマシンにお薦め。
ログイン後、"flux"で起動する。

155 名前:login:Penguin mailto:sage [2006/10/15(日) 14:18:53 ID:9sgz+4C+]
liblinuxliveでtypo発見>はとちゃん

--- liblinuxlive.518ja 2006-10-13 14:16:33.000000000 +0900
+++ liblinuxlive 2006-10-15 14:14:39.000000000 +0900
@@ -471,7 +471,7 @@
ja_JP* ) $CODEPAGE="codepage=932" ;;
ko_KR* ) $CODEPAGE="codepage=949" ;;
zh_CN* ) $CODEPAGE="codepage=936" ;;
- zh_TW* ) $CODEPAGE="codepage950" ;;
+ zh_TW* ) $CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi


156 名前:login:Penguin mailto:sage [2006/10/15(日) 16:04:50 ID:E9l4MAs7]
>>155
"$CODEPAGE=932"の"$"は要らない。
→"CODEPAGE=932"

実行時にエラーになる。

それに
liblinuxliveはinitrd.gzの中と、toolsの下と、/usr/libの下の3カ所にあるが、
元々内容がそれぞれ微妙に違うよ。
OPTIONを設定しているところの記述は同じみたい。
修正するなら3つのファイルをなおした方がいいんじゃない?

157 名前:login:Penguin mailto:sage [2006/10/15(日) 17:50:20 ID:9sgz+4C+]
やっぱり152みたいな関数が便利かも。関数名はほかのsubfunctionの命名規則(みたいなものがあれば)にあわせて。で、本家にもってく。


158 名前:login:Penguin mailto:sage [2006/10/15(日) 21:14:16 ID:9sgz+4C+]
152のreturn文は、とりあえずいらないと思う。

159 名前:login:Penguin mailto:sage [2006/10/16(月) 09:05:57 ID:wzNUPK1o]
>>150
* SBCS (Single Byte Character Set) Codepages
1250 (Central Europe)
1251 (Cyrillic)
1252 (Latin I)
1253 (Greek)
1254 (Turkish)
1255 (Hebrew)
1256 (Arabic)
1257 (Baltic)
1258 (Vietnam)
874 (Thai)

* DBCS (Double Byte Character Set) Codepages
932 (Japanese Shift-JIS)
936 (Simplified Chinese GBK)
949 (Korean)
950 (Traditional Chinese Big5)

cf) www.microsoft.com/globaldev/reference/WinCP.asp



160 名前:login:Penguin mailto:sage [2006/10/16(月) 09:32:08 ID:wzNUPK1o]
>>157
grep "^.*()" liblinuxlive |sort
でみるかぎりcreate_block_devices()なんていう命名が多いみたいだしlocale_codepage() ぐらいでいいんじゃないか、
意味まで含めればconvert_locale_codepage(), lookup_locale_codepage()だけど長すぎるかも。スクリプトはこんなもんでいいよ。return文は使う予定がないのなら省く。

161 名前:login:Penguin mailto:sage [2006/10/16(月) 19:25:59 ID:MqOhQHUe]
関数にしなくても(しない方が)いいんじゃないの。もともと149の部分は関数の中にあるわけだし、それに159にあるのが全部ならこの4つのDBCSに対応すればいいだけだから。

162 名前:login:Penguin mailto:sage [2006/10/16(月) 19:29:12 ID:MqOhQHUe]
それよかSLAX1.5.8のfluxboxは日本語対応だね。uim-ximもちゃんと動く。もしかして究極のlight weight GUI

163 名前:login:Penguin mailto:sage [2006/10/16(月) 22:11:48 ID:vXniJ0jg]
デラックス版出たでよ。
スゲー600MBを超えてる!
何が入ってるんだろ?


164 名前:login:Penguin [2006/10/17(火) 07:35:04 ID:B4EJO3Zv]
>>155

ご指摘ありがとうございます。
initrdと02_core.moの/usr/lib配下にあるliblinuxliveの修正に手間取りましたが、
なんとか動くものができました。
ちょうど本家でも、smb-kioslaveの不具合があったので、それも修正したものを
アップしましたので、ご利用ください。

hatochan.dyndns.org/slax-ja/index.php?slax-ja%2Fdownload

165 名前:login:Penguin mailto:sage [2006/10/17(火) 22:44:41 ID:V8nE5sp5]
SLAX起動中にUSBメモリーを差すと自動認識して、ダイアログが出る。
ここではマウントしないでキャンセルしておく。
すると、/etc/fstabにマウントエントリーが動的に作成されている。
オプションにiocharset=utf8,codepage=932が書き込まれいれば、liblinuxliveのの修正が効いた証拠。
/mnt/sda1_removableとかいうマウントポイントも出来ている。
mount /mnt/sda1_removableとしてマウントすれば、USBの日本語ファイル・ディレクトリ名が表示される。
JP版で表示されることを確認した。

166 名前:login:Penguin mailto:sage [2006/10/18(水) 12:34:03 ID:8uK+bnRC]
>>164
jaではうまく反映していないみたい。
echo "fs:$FS iocharset:$IOCHARSET lang:$LANG" > /root/liblinuxlive.log
こんな感じでsnapshotしてみたらどうかな。たぶんLANGがCになっているような気がする。
それと、ここのif文もっとシンプルになるよ。
if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
case $LANG in
ja_JP* ) CODEPAGE="codepage=932" ;;
ko_KR* ) CODEPAGE="codepage=949" ;;
zh_CN* ) CODEPAGE="codepage=936" ;;
zh_TW* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
fi
でもLANGで判断するのがダメなら、jpみたいにキメうちで932にしなきゃ。
cjk汎用版は無理なのかなー。

167 名前:login:Penguin [2006/10/18(水) 12:50:40 ID:TWBXSwRL]
>>166

検証しました。だめでした<確認してからアップしろよ自分!
というわけで簡単なスクリプトで確認した結果、これでいいかな。

誤) OPT=",iocharset=utf8,$CODEPAGE"
正) OPT=",iocharset=utf8,"$CODEPAGE

168 名前:login:Penguin mailto:sage [2006/10/18(水) 12:58:36 ID:8uK+bnRC]
>>167
いや、たぶんCODEPAGE自体が空白になってるんじゃないかと..
LANGがja_JP*に設定される前に実行されるんじゃないですかこのスクリプト

169 名前:login:Penguin [2006/10/18(水) 13:06:36 ID:TWBXSwRL]
>>168

jaでは、iocharset=utf8,の後が空白なので、LANGは大丈夫だと思われます。
まずは試してみます。



170 名前:165 mailto:sage [2006/10/18(水) 13:18:51 ID:CabG0mom]
SLAX稼働中にUSBを差し込んだとき、fstabにマウントエントリーの追加は、
/usr/lib/liblinuxlveを使っているから、うまくいかないときはこれをなおして
何度もデバッグできる。
いちいちisoを作り直す必要はない。

171 名前:login:Penguin mailto:sage [2006/10/18(水) 13:22:44 ID:CabG0mom]
>>168
どうもそれっぽいね。

>>169
空白って$LANGが設定されてないんでしょ?

172 名前:login:Penguin mailto:sage [2006/10/18(水) 13:38:46 ID:8uK+bnRC]
>>171
デフォルトではLANG=Cだったかな。
ほんと、どっかで言語(国)の情報を反映できないかな。
このままではSLAXはi18nできないことになる。

173 名前:login:Penguin mailto:sage [2006/10/18(水) 17:01:18 ID:8uK+bnRC]
カーネルオプションで変数が渡せればcase文で処理できるのにな。
boot: slax なんたらかんたら lang=ja
なんていうかんじで。

174 名前:login:Penguin mailto:sage [2006/10/18(水) 19:53:04 ID:HDTuRQEZ]
ほかのディストロはどうやってるの?

175 名前:login:Penguin mailto:sage [2006/10/18(水) 20:01:13 ID:HDTuRQEZ]
あそうか1CD-Linuxか。i18nするならやっぱりカーネルオプションしかないかなあ。
knoppixは各国語版でCD/DVD焼いてますね。


176 名前:login:Penguin mailto:sage [2006/10/18(水) 20:04:39 ID:tgdaR4C7]
/proc/cmdlineから取れば良いんじゃね?

177 名前:login:Penguin [2006/10/19(木) 01:07:36 ID:MSXraNH4]
>>176

liblinuxliveには、cmdline_parameter()とcmdline_value()が用意されていますので、
こちらを利用して、起動時のパラメータにlang=jaを指定して振りわければできると
思います。こんな感じでしょうか。

#if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then OPT=",iocharset=$IOCHARSET"; fi
if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
if [ "$FS" = "vfat" ]; then
CMDLINEVALUE=`cmdline_value lang`
if [ "$CMDLINEVALUE" != "" ]; then
case $CMDLINEVALUE in
ja* ) CODEPAGE="codepage=932" ;;
ko* ) CODEPAGE="codepage=949" ;;
cn* ) CODEPAGE="codepage=936" ;;
tw* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
else
OPT=",iocharset=utf8"
fi
fi
fi


178 名前:login:Penguin mailto:sage [2006/10/19(木) 01:24:31 ID:K4H0Yqvl]
>>177
いいんじゃない。
cmdline_valueという関数は定義されてるんですね。

179 名前:login:Penguin [2006/10/19(木) 02:43:39 ID:yAGz+9wf]
>>178

はい、liblinuxlive内にありました。

CMDLINEVALUE=`cmdline_value lang`
if [ "$CMDLINEVALUE" != "" ]; then

↑これを1行でまとめられるような気がするんですが、どうするか分かりません。



180 名前:login:Penguin [2006/10/19(木) 02:47:04 ID:yAGz+9wf]
jpでは、jfbtermとuim-fepで起動時からコンソールで日本語入力を可能にしている
らしいのですが。slax-jaで起動時に autoexec=jfbterm;uim-fep とやっても、うまく
いきません。

jpでは、どのようにこれを実現しているのでしょうか。

181 名前:login:Penguin mailto:sage [2006/10/19(木) 02:51:15 ID:K4H0Yqvl]
>>180
jfbtermの中でuim-fepを実行する。
autoexec=jfbterm -e uim-fep



182 名前:login:Penguin mailto:sage [2006/10/19(木) 02:54:05 ID:K4H0Yqvl]
>>179
こんな感じ?

if [ "$(`cmdline_value lang`)" != "" ]; then

183 名前:login:Penguin [2006/10/19(木) 03:31:58 ID:yAGz+9wf]
>>181
やってみました。
autoexec=jfbterm -e uim-fep だと -e uim-fepがjfbtermのパラメータだと認識されませんでした。
というわけで、以下のような簡単なスクリプトを作りました。

#!/bin/sh
jfbterm -e uim-fep

でも、プロンプトがbash-3.0となって、uim-fepは日本語オンになりませんでした。
もうちょっとぽいんですが…。

184 名前:login:Penguin [2006/10/19(木) 03:33:29 ID:yAGz+9wf]
>>182
なるほど。
これだと後ろのcase文はどのようにすればいいでしょうか。

185 名前:login:Penguin mailto:sage [2006/10/19(木) 04:01:14 ID:K4H0Yqvl]
>>183
それuim-fepの起動失敗してるんじゃない?
スクリプトの実行属性が付いている?

>>184
一緒。



#もう寝る。

186 名前:login:Penguin mailto:sage [2006/10/19(木) 04:55:59 ID:diLupZWd]
>>184
元のままでいいんじゃね?

187 名前:login:Penguin mailto:sage [2006/10/19(木) 06:55:25 ID:K4H0Yqvl]
liblinuxliveの中で$LANGをトレースしてみたらやはり設定されてなかった。
そこで、ブートオプションでlang=ja_jp.UTF-8などとしてして、それを
/proc/cmdlineからとってくる方法もありますが、もうひとつ、別な方法として、
実はLANGの指定は/etc/profile.d/lang.shで、
export LANG=ja_JP.UTF-8
などと設定されている。これから取ってくるものを考えてみた。
LANGの値を次のように設定する。
LANG=`grep -e ^export /etc/profile.d/lang.sh|grep LANG=|cut -f 2 -d " "|cut -f 2 -d =`

この行をliblinuxliveに次のように挿入する。
if [ "$FS" = "vfat" -a "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
if [ "$FS" = "vfat" ]; then
LANG=`grep -e ^export /etc/profile.d/lang.sh|grep LANG=|cut -f 2 -d " "|cut -f 2 -d =`
case $LANG in
ja_JP* ) CODEPAGE="codepage=932" ;;
ko_KR* ) CODEPAGE="codepage=949" ;;
zh_CN* ) CODEPAGE="codepage=936" ;;
zh_TW* ) CODEPAGE="codepage=950" ;;
esac
OPT=",iocharset=utf8,$CODEPAGE"
fi
fi

はとちゃん版slaxで/usr/lib/liblinuxliveを修正して動作することを確認しました。

188 名前:login:Penguin mailto:sage [2006/10/19(木) 07:04:46 ID:K4H0Yqvl]
なお、fstabのオプションの生成は/usr/lib/liblinuxliveだけが関係してくるようであり、
/usr/lib/liblinuxliveを修正するだけでOKとなった。
initrd.gzの中とtoolsの下のliblinuxliveはどこで使われるのか不明。
ま、一応修正しといた方がいいと思うけど。


189 名前:login:Penguin mailto:sage [2006/10/19(木) 08:54:38 ID:NByMOkR/]
>>182
> if [ "$(`cmdline_value lang`)" != "" ]; then
こんなときはよく
if [ x$(cmdline_value lang) != x ]; then
なんてします。 ""がxの1文字で済むので両辺で2文字倹約ですう。
xのかわりに_を使うときもあります。



190 名前:login:Penguin mailto:sage [2006/10/19(木) 09:08:20 ID:NByMOkR/]
>>187
/etc/profile.d/lang.shはslax-ja-$(ver)-$(rev).moの中にありますね。これも良策ですが、カーネルオプションで明示的にlang=jaとやるほうが今後sysconfigのメニューで多国語選択可能になった場合、管理しやすいように思います。

191 名前:login:Penguin mailto:sage [2006/10/19(木) 09:16:01 ID:NByMOkR/]
sysconfigじゃなくてsyslinux.cfgまたはisolinux.cfgでした。

192 名前:login:Penguin mailto:sage [2006/10/19(木) 11:03:20 ID:NByMOkR/]
166-191をまとめると

if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
case $(cmdline_value lang) in
"" ) OPT=",iocharset=utf8" ;;
ja* ) OPT=",iocharset=utf8,codepage=932" ;;
ko* ) OPT=",iocharset=utf8,codepage=949" ;;
cn* ) OPT=",iocharset=utf8,codepage=936" ;;
tw* ) OPT=",iocharset=utf8,codepage=950" ;;
esac
fi
fi

こんなかんじになるけど、これでいいのかな。iocharsetがutf8でなくてもcodepageは言語に従って指定した方がいいんじゃないかな。

193 名前:login:Penguin mailto:sage [2006/10/19(木) 11:04:42 ID:NByMOkR/]
(つづき)
ということは、
if [ "$FS" = "vfat" ]; then
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
OPT=",iocharset=utf8"
fi
case $(cmdline_value lang) in
ja* ) OPT="${OPT},codepage=932" ;;
ko* ) OPT="${OPT},codepage=949" ;;
cn* ) OPT="${OPT},codepage=936" ;;
tw* ) OPT="${OPT},codepage=950" ;;
esac
fi
これでどうだろう。

194 名前:login:Penguin mailto:sage [2006/10/19(木) 11:08:13 ID:NByMOkR/]
(つづきのつづき)
if [ "$IOCHARSET" != "" ]; then
OPT=",iocharset=$IOCHARSET"
else
OPT=",iocharset=utf8"
fi
は1行で
OPT=",iocharset=${IOCHARSET:-utf8}"
って書くこともできます(bash>2.x)。

195 名前:login:Penguin mailto:sage [2006/10/19(木) 11:30:14 ID:NByMOkR/]
ということで決定版です。全部で9行

if [ "$FS" = "vfat" ]; then
OPT=",iocharset=${IOCHARSET:-utf8}"
case $(cmdline_value lang) in
ja* ) OPT="${OPT},codepage=932" ;;
ko* ) OPT="${OPT},codepage=949" ;;
cn* ) OPT="${OPT},codepage=936" ;;
tw* ) OPT="${OPT},codepage=950" ;;
esac
fi


196 名前:login:Penguin mailto:sage [2006/10/19(木) 11:44:22 ID:K4H0Yqvl]
いい!
そんじゃ、関数化するとこんなもん?

get_codepage() {
case $(`cmdline_value lang`) in
ja* ) codepage=932" ;;
ko* ) codepage=949" ;;
cn* ) codepage=936" ;;
tw* ) codepage=950" ;;
esac
echo $codepage
}

[ "$FS" = "vfat" ] && OPT=",iocharset=${IOCHARSET:-utf8},codepage=`get_codepage`"

197 名前:login:Penguin mailto:sage [2006/10/19(木) 12:55:04 ID:NByMOkR/]
>>196
あ、でもlangが指定されなかった場合、つまり$(cmdline_value lang)が空だった場合、OPT=",iocharset=${IOCHARSET:-utf8}" のままでとどめたい。でないと
OPT=",iocharset=utf8,codepage=" なんてことになってマウントエラーにならないかな。
それと$(~...~)のバッククオートは不要だと思う。$()が``と同じはたらきをするから。
あえて関数にするなら

get_codepage() {
case $(cmdline_value lang) in
ja* ) echo ",codepage=932" ;;
ko* ) echo ",codepage=949" ;;
cn* ) echo ",codepage=936" ;;
tw* ) echo ",codepage=950" ;;
esac
}

[ "$FS" = "vfat" ] && OPT=",iocharset=${IOCHARSET:-utf8}$(get_codepage 2> /dev/null)"

かな、私のクセでは最後の文を test _$FS = _vfat && .. なんて書きたい所だけど、これは他の部分の文体に合わせたほうがいい。

198 名前:login:Penguin mailto:sage [2006/10/19(木) 13:03:34 ID:NByMOkR/]
>>197
どうでもいいことかも知れないが、この関数の内容からすれば get_codepageではなくて show_codepageだな。

199 名前:login:Penguin mailto:sage [2006/10/19(木) 13:28:47 ID:K4H0Yqvl]
>>197
good!



200 名前:login:Penguin mailto:sage [2006/10/19(木) 14:29:30 ID:NByMOkR/]
ついでにslax-ja-5.1.8-2.isoでは /tools/liblinuxliveでは

# add special options for NTFS
if [ "$FS" = "ntfs" ]; then
OPT=",ro"
#if [ "$IOCHARSET" != "" ]; then OPT="$OPT,nls=$IOCHARSET"; fi
if [ "$IOCHARSET" != "" ]; then
OPT="$OPT,nls=$IOCHARSET"
else
OPT="$OPT;nls=utf8"
fi
fi

になっていますが、同様に書き換えると
[ "$FS" = "ntfs" ] && OPT=",ro,nls=${IOCHARSET:-utf8}"
ということでここも8行分が1行で済みますね。

201 名前:login:Penguin mailto:sage [2006/10/19(木) 14:41:32 ID:NByMOkR/]
(slax-ja-5.1.8-2.iso)/tools/liblinuxliveの453-488行をいっそのこと

case $FS in
'' ) ;; # skip when $FS is null
ntfs ) OPT=",ro,nls=${IOCHARSET:-utf8}" ;;
vfat ) OPT=",iocharset=${IOCHARSET:-utf8}$(get_codepage 2> /dev/null)" ;;
swap ) fstab_update_line $FSTAB~ $DEVICE swap swap defaults ;;
* ) fstab_update_line $FSTAB~ $DEVICE $MOUNTDIR $FS auto,users,suid,dev,exec$OPT;
mkdir -p "$1/$MOUNTDIR" ;;
esac

とすれば35行分が8行で済みます。
これでいいのかどうかはわかりませんが、コード上は等価変換だと思います。

202 名前:login:Penguin mailto:sage [2006/10/19(木) 14:45:48 ID:NByMOkR/]
あ、skip する '') はシングルクオートが二つです。ここは "")でもいいです。
それと8行とは言っても、get_codepage関数(または show_codepage関数)が必要だから全部で16行ですね。

203 名前:login:Penguin mailto:sage [2006/10/19(木) 15:00:13 ID:K4H0Yqvl]
shellスクリプトのお勉強スレになってしまった。w

204 名前:login:Penguin mailto:sage [2006/10/19(木) 15:08:32 ID:K4H0Yqvl]
>>201
とてもいいんじゃないでしょうか?
case文でわかりやすいです。

${IOCHARSET:-utf8}
この書き方がミソ。
知らなかった。

これで決定版でいいですよ。

205 名前:login:Penguin mailto:sage [2006/10/19(木) 15:19:32 ID:NByMOkR/]
>>201
すみません。あせってまちがえました。正しい流れはこうです。

case $FS in
'' ) ;; # skip when $FS is null
swap ) fstab_update_line $FSTAB~ $DEVICE swap swap defaults ;;
* ) case $FS in
ntfs ) OPT=",ro,nls=${IOCHARSET:-utf8}" ;;
vfat ) OPT=",iocharset=${IOCHARSET:-utf8}$(get_codepage 2> /dev/null)" ;;
esac
fstab_update_line $FSTAB~ $DEVICE $MOUNTDIR $FS auto,users,suid,dev,exec$OPT;
mkdir -p "$1/$MOUNTDIR" ;;
esac



206 名前:login:Penguin mailto:sage [2006/10/19(木) 19:47:22 ID:CLkhC8Af]
>>197
show_codepage() {
local p
case $(cmdline_value lang) in
ja ) p=932 ;;
ko ) p=949 ;;
cn ) p=936 ;;
tw ) p=950 ;;
esac
echo ",codepage=$p"
}
この方が冗長性は低いと思います。
あと、159の

* SBCS (Single Byte Character Set) Codepages
1250 (Central Europe)
1251 (Cyrillic)
1252 (Latin I)
1253 (Greek)
1254 (Turkish)
1255 (Hebrew)
1256 (Arabic)
1257 (Baltic)
1258 (Vietnam)
874 (Thai)

は対応しなくてもいいのでしょうか。


207 名前:login:Penguin mailto:sage [2006/10/19(木) 19:50:52 ID:CLkhC8Af]
>>206
show_codepage() {
local p
case $(cmdline_value lang) in
ja ) p=932 ;;
ko ) p=949 ;;
cn ) p=936 ;;
tw ) p=950 ;;
esac
[ _$p = _ ] || echo ",codepage=$p"
}
とすべきかな。

208 名前:login:Penguin mailto:sage [2006/10/19(木) 22:08:40 ID:cuhZOjcl]
ぜんぜん「なにはともあれ・・・」じゃないじゃん。

209 名前:login:Penguin mailto:sage [2006/10/20(金) 07:34:37 ID:eKwRcOLE]
とりあえず、slax-ja-5.1.8-3.iso をリリースしました。
いろいろとご協力いただきまして、ありがとうございます。
いまのところ、lang=jaについては、ちょっと非効率ですが(個人的に)視認性のよい形のものを採用しました。
jfbtermについては、コンソール上で jfbterm -q -e uim-fep とするように記述しました。

hatochan.dyndns.org/slax-ja/index.php?slax-ja%2Fdownload



210 名前:login:Penguin mailto:sage [2006/10/20(金) 08:51:24 ID:6EsGZw5M]
なには‐ともあれ【何はともあれ】
ほかのことはどうあろうとも。ともかくも。「―無事でよかった」

広辞苑第五版

211 名前:login:Penguin mailto:sage [2006/10/20(金) 14:19:11 ID:6EsGZw5M]
本当にごくろうさまでした>はとちゃん
typoじゃないかなと思うんだけど、fixは次の機会でいいから。いちおう報告。

--- liblinuxlive.org 2006-10-19 17:23:07.000000000 +0900
+++ liblinuxlive 2006-10-20 14:15:20.000000000 +0900
@@ -457,7 +457,7 @@
if [ "$IOCHARSET" != "" ]; then
OPT="$OPT,nls=$IOCHARSET"
else
- OPT="$OPT;nls=utf8"
+ OPT="$OPT,nls=utf8"
fi
fi






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<191KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef