まず 640x480、14色 というファイルを用意する。
imagemagickを使って14色のxpmを作成する
convert -colors 14 geso.png geso.xpm
/* XPM */ static char *hoge[] = { /* columns rows colors chars-per-pixel */ "640 480 14 1", " c #3A0636CC71ED", ". c #444439FB727B", "X c #48A9436B790B", "o c #5C5862EF94F4", "O c #971A6E938D26", "+ c #686F8431B993",
48bitカラーになってしまっているっぽい。
これをそのまま使うとGRUB画面上で色化けの可能性がビッグ大。
(手で編集すればいける)
24bitカラーで出力する方法はよくわからなかったので、netpbmを使う。
netpbmを使って14色のxpmを作成する
pngtopnm geso.png | ppmquant 14 | ppmtoxpm > geso.xpm
ちゃんと14色になっているかどうか確認する
/* XPM */ static char *noname[] = { /* width height ncolors chars_per_pixel */ "640 480 14 1", /* colors */ " c #F8EFDC", ". c #4A477D", "X c #8FB2E1", "o c #97A9CE", "O c #FEFEFE", "+ c #6388BE",
24bitカラーになってる。これなら多分大丈夫。
一旦256色まで減色してから上記処理をおこなうと良いらしい。
(http://street-green.seesaa.net/article/41975250.html)
IrfanViewでxpmファイル表示
プラグインをインストールするとよい
http://www.irfanview.net/