2009年06月23日 Unable to handle kernel paging request at virtual address ... etc
_ Unable to handle kernel paging request at virtual address ... etc
lib100サーバにまたヤバゲなメッセージが残されている。
Jun 22 17:16:59 lib100 kernel: Unable to handle kernel paging request at virtual address 655f22b7 Jun 22 17:16:59 lib100 kernel: printing eip: Jun 22 17:16:59 lib100 kernel: c0142200 Jun 22 17:16:59 lib100 kernel: *pde = 00000000 Jun 22 17:16:59 lib100 kernel: Oops: 0000 Jun 22 17:16:59 lib100 kernel: CPU: 0 Jun 22 17:16:59 lib100 kernel: EIP: 0010:[<c0142200>] Not tainted Jun 22 17:16:59 lib100 kernel: EFLAGS: 00210246 Jun 22 17:16:59 lib100 kernel: eax: 655f228b ebx: c3ffec20 ecx: 00008000 edx: 00000000 Jun 22 17:16:59 lib100 kernel: esi: ffffffe2 edi: 00008001 ebp: c158df84 esp: c158df50 Jun 22 17:16:59 lib100 kernel: ds: 0018 es: 0018 ss: 0018 Jun 22 17:16:59 lib100 kernel: Process ruby (pid: 21691, stackpage=c158d000) Jun 22 17:16:59 lib100 kernel: Stack: 00000000 00000000 00000004 c04e3ca0 00008000 c198e000 400d23e0 bffee0ac Jun 22 17:16:59 lib100 kernel: c0136ebe c198e000 00008001 000001b6 c158df84 c04e3ca0 c10c52e0 400d23e0 Jun 22 17:16:59 lib100 kernel: c0140b0a 00000006 00000001 00000001 00000006 00000006 c013725b c198e000 Jun 22 17:16:59 lib100 kernel: Call Trace: [<c0136ebe>] [<c0140b0a>] [<c013725b>] [<c0108963>] Jun 22 17:16:59 lib100 kernel: Jun 22 17:16:59 lib100 kernel: Code: f6 40 2c 01 0f 84 ec fc ff ff f7 c7 02 00 00 00 0f 84 e0 fc
メモリーの障害か、swapエリアのI/O error辺りか...と思い、予備のメモリと交換して、mkswap -c /dev/hda?でもするかと考えてた矢先に、このtDiaryが...
Plugin Error Errors in plugins? Retry to Update or Configure. TDiary::PluginError Plugin error in '50sp.rb'. Plugin error in 'misc/plugin/amazon.rb'. Input/output error - /usr/lib/ruby/1.8/rexml/xpath_parser.rb (plugin/50sp.rb):129:in `load_plugin'
みたいなエラーを表示して動かなくなっていた。 /usr/lib/ruby/1.8/rexml/xpath_parser.rb を cat で表示させると
cat: /usr/lib/ruby/1.8/rexml/xpath_parser.rb: Input/output error
確かにI/O error状態で、さらに
# ls -al /usr/lib/ruby/1.8/rexml/xpath_parser.rb -rw-r--r-- 1 root root 3364114146225291585 1993-12-03 08:59 /usr/lib/ruby/1.8/rexml/xpath_parser.rb
と、脅威のファイルサイズを表示してくれた。ファイルの中身を確認すると、末尾に延々と NULL がくっついている感じ。
mv xpath_parser.rb xpath_parser.rb.ORG cat xpath_parser.rb.ORG >xpath_parser.rb
catではきっちり32KByte読み出したところで I/O Error発生。
vi xpath_parser.rb
にて xpath_parser.rb のおケツにくっついた NULL を削除したら tDiary は復活した。後は、 fsck をかけて、超巨大な xpath_parser.rb.ORG がどうなるかだな。
それと、気になるのは
Unable to handle kernel paging request at virtual address
と
-rw-r--r-- 1 root root 3364114146225291585 1993-12-03 08:59 /usr/lib/ruby/1.8/rexml/xpath_parser.rb
の関係。鶏が先か、卵が先なのか...。
_ Unable to handle kernel paging request at virtual address ... etc(2)
fsckをかけてみると、やはりボコボコと修復されていった。そして、超巨大ファイルもグッとシュリンクされていた。少しは末尾に NULL が残っていたが。
不安は山盛りだがとりあえずこの状態で様子を見てみる。
2013年06月23日 Linux(ghostscript, ps2pdf)で、Eudc.TTE(外字 PUA)を使ったPDFを作成する方法
_ Eudc.TTEをMS-WindowsからLinuxに持って来る
Slackware-14.0で色々試してみた。
# cp /mnt/MS-Windows/WINDOWS/Fonts/Eudc.TTE /usr/share/fonts/TTF/eudc.ttf
Linux側での拡張子は.ttfにしておくこと。
xlib経由でのアクセスのための設定を行う。
# cd /usr/share/fonts/TTF/ # mkfontscale -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large # mkfontdir -e /usr/X11R6/lib/X11/fonts/encodings -e /usr/X11R6/lib/X11/fonts/encodings/large
mkfontscaleで/usr/share/fonts/TTF/fonts.scaleが生成される。mkfontdirで/usr/share/fonts/TTF/fonts.dirが生成される。fonts.scaleやfonts.dirを手で編集している場合は、編集内容がスッ飛ぶので注意すること。
fontconfig経由でのアクセスのための設定を行う。
# fc-cache -f -v
ここまでの設定で、
$ xfd -fn "-misc-eudc.ttf-medium-r-normal--0-0-0-0-p-0-iso10646-1"
で、外字フォントを画面で確認出来たり、OpenOffice|LibreOffice上で、[挿入(I)], [記号と特殊文字(P)], [フォント(F)]からEUDCを選択して外字フォントを利用できる状態になっている。
_ CMapファイルの作成
さて、ここからが肝心のghostscript対応となる。
Eudc.TTEのコード範囲(Unicodeでの、U+E000からU+F8FFまで)のUTF-8とCIDとの対応テーブル(CMap)を作成するのだが、/usr/share/ghostscript/9.05/Resource/CMap/Identity-UTF16-HというCMapファイル(こちらはUTF-16とCIDの対応テーブル。たぶん1対1の対応なのだが...)があるので、これを雛型にする。
begincidrangeの内容を手書きするのは大変なので、プログラムで生成する。UTF-8 - ウィキペディア - Wikipediaを参考。
#include <stdio.h> main() { unsigned int i, start, base1, base2, base3, byte1, byte2, byte3; base1 = 0xe0; base2 = 0x80; base3 = 0x80; for (i = 0xe000; i <= 0xf8ff; i++){ byte1 = ((i >> 12) & 0xf) | base1; byte2 = ((i >> 6) & 0x3f) | base2; byte3 = (i & 0x3f) | base3; if (byte3 == 0x80){ printf("<%02x%02x%02x> ", byte1, byte2, byte3); start = i; }else if (byte3 == 0xbf){ printf("<%02x%02x%02x> %d\n", byte1, byte2, byte3, start); } } }
上記のプログラムの出力を雛型に組み込んで、多少ごにょごにょして以下のCMapをでっちあげた。
/usr/share/ghostscript/9.05/Resource/CMap/PUA-UTF8-H
% Copyright (C) 2003 Artifex Software. All rights reserved. % % This software is provided AS-IS with no warranty, either express or % implied. % % This software is distributed under license and may not be copied, % modified or distributed except as expressly authorized under the terms % of the license contained in the file LICENSE in this distribution. % % For more information about licensing, please refer to % http://www.ghostscript.com/licensing/. For information on % commercial licensing, go to http://www.artifex.com/licensing/ or % contact Artifex Software, Inc., 101 Lucas Valley Road #110, % San Rafael, CA 94903, U.S.A., +1(415)492-9861. % % $Id$ % PUA-UTF8-H CMap % An identity mapping of UTF8 codes to CIDs. % % ---------------------------------------------------------------------- % This is created on Slackware-14.0 by Masahiko Ito. % This is based on Identity-UTF16-H. % % This is cmap file for Eudc.TTE created in MS-Windows. % I assume Eudc.TTE has font images for PUA(Private User Area : 6400 chars). % Unicode U+E000 - U+F8FF % UTF-8 0xee8080 - 0xefa3bf % CID 57344(0xe000) - 63743(0xf8ff) % % "Masahiko Ito"<m-ito@myh.no-ip.org> % ---------------------------------------------------------------------- % /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Artifex) def /Ordering (Unicode) def /Supplement 0 def end def /CMapName /PUA-UTF8-H def /CMapVersion 1.000 def /CMapType 1 def /UIDOffset 0 def % No XUID yet obtained. /WMode 0 def 1 begincodespacerange <EE8080> <EFA3BF> endcodespacerange 100 begincidrange <ee8080> <ee80bf> 57344 <ee8180> <ee81bf> 57408 <ee8280> <ee82bf> 57472 <ee8380> <ee83bf> 57536 <ee8480> <ee84bf> 57600 <ee8580> <ee85bf> 57664 <ee8680> <ee86bf> 57728 <ee8780> <ee87bf> 57792 <ee8880> <ee88bf> 57856 <ee8980> <ee89bf> 57920 <ee8a80> <ee8abf> 57984 <ee8b80> <ee8bbf> 58048 <ee8c80> <ee8cbf> 58112 <ee8d80> <ee8dbf> 58176 <ee8e80> <ee8ebf> 58240 <ee8f80> <ee8fbf> 58304 <ee9080> <ee90bf> 58368 <ee9180> <ee91bf> 58432 <ee9280> <ee92bf> 58496 <ee9380> <ee93bf> 58560 <ee9480> <ee94bf> 58624 <ee9580> <ee95bf> 58688 <ee9680> <ee96bf> 58752 <ee9780> <ee97bf> 58816 <ee9880> <ee98bf> 58880 <ee9980> <ee99bf> 58944 <ee9a80> <ee9abf> 59008 <ee9b80> <ee9bbf> 59072 <ee9c80> <ee9cbf> 59136 <ee9d80> <ee9dbf> 59200 <ee9e80> <ee9ebf> 59264 <ee9f80> <ee9fbf> 59328 <eea080> <eea0bf> 59392 <eea180> <eea1bf> 59456 <eea280> <eea2bf> 59520 <eea380> <eea3bf> 59584 <eea480> <eea4bf> 59648 <eea580> <eea5bf> 59712 <eea680> <eea6bf> 59776 <eea780> <eea7bf> 59840 <eea880> <eea8bf> 59904 <eea980> <eea9bf> 59968 <eeaa80> <eeaabf> 60032 <eeab80> <eeabbf> 60096 <eeac80> <eeacbf> 60160 <eead80> <eeadbf> 60224 <eeae80> <eeaebf> 60288 <eeaf80> <eeafbf> 60352 <eeb080> <eeb0bf> 60416 <eeb180> <eeb1bf> 60480 <eeb280> <eeb2bf> 60544 <eeb380> <eeb3bf> 60608 <eeb480> <eeb4bf> 60672 <eeb580> <eeb5bf> 60736 <eeb680> <eeb6bf> 60800 <eeb780> <eeb7bf> 60864 <eeb880> <eeb8bf> 60928 <eeb980> <eeb9bf> 60992 <eeba80> <eebabf> 61056 <eebb80> <eebbbf> 61120 <eebc80> <eebcbf> 61184 <eebd80> <eebdbf> 61248 <eebe80> <eebebf> 61312 <eebf80> <eebfbf> 61376 <ef8080> <ef80bf> 61440 <ef8180> <ef81bf> 61504 <ef8280> <ef82bf> 61568 <ef8380> <ef83bf> 61632 <ef8480> <ef84bf> 61696 <ef8580> <ef85bf> 61760 <ef8680> <ef86bf> 61824 <ef8780> <ef87bf> 61888 <ef8880> <ef88bf> 61952 <ef8980> <ef89bf> 62016 <ef8a80> <ef8abf> 62080 <ef8b80> <ef8bbf> 62144 <ef8c80> <ef8cbf> 62208 <ef8d80> <ef8dbf> 62272 <ef8e80> <ef8ebf> 62336 <ef8f80> <ef8fbf> 62400 <ef9080> <ef90bf> 62464 <ef9180> <ef91bf> 62528 <ef9280> <ef92bf> 62592 <ef9380> <ef93bf> 62656 <ef9480> <ef94bf> 62720 <ef9580> <ef95bf> 62784 <ef9680> <ef96bf> 62848 <ef9780> <ef97bf> 62912 <ef9880> <ef98bf> 62976 <ef9980> <ef99bf> 63040 <ef9a80> <ef9abf> 63104 <ef9b80> <ef9bbf> 63168 <ef9c80> <ef9cbf> 63232 <ef9d80> <ef9dbf> 63296 <ef9e80> <ef9ebf> 63360 <ef9f80> <ef9fbf> 63424 <efa080> <efa0bf> 63488 <efa180> <efa1bf> 63552 <efa280> <efa2bf> 63616 <efa380> <efa3bf> 63680 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end %%EndResource %%EOF
_ cidfmapへの追加
/usr/share/ghostscript/9.05/Resource/Init/cidfmapへ以下の行を追加する。
/Eudc << /FileType /TrueType /Path (eudc.ttf) /CSI [(Artifex) (Unicode) 0] >> ;
これで、環境周りの設定は完了!
_ postscriptの記述方法
超テキトウなpsファイルの例。もちろんエンコーディングはUTF-8で。
上記の環境設定で、外字フォントとして、/Eudc-PUA-UTF8-Hが指定できるようになっている。
%!PS-Adobe-3.0 % 描画開始位置への移動 100 100 moveto % 一般的なフォントの指定 /Ryumin-Light-UniJIS-UTF8-H findfont 20 scalefont setfont % 文字列の描画 (外字を含まない文字列) show % 外字フォント(Eudc.TTF)の指定 /Eudc-PUA-UTF8-H findfont 20 scalefont setfont % 外字で出来た文字列の描画 (外字のみの文字列) show showpage
このpsファイルをgsコマンドで表示すれば、外字も含めて正常に表示できるし、もちろん、ps2pdfで作成したPDFファイルも正常に表示される。