axsh / iso-no-wakame

4 stars 0 forks source link

起動時のスプラッシュ画面を用意する #6

Closed habuka036 closed 9 years ago

habuka036 commented 10 years ago

優先度が低いが、CentOSの。スプラッシュスクリーンをやめてWakame-VDC的なものを用意する。(そもそも CentOS って splashutils 使ってるのかしら?)

hansode commented 10 years ago

そもそも CentOS って splashutils 使ってるのかしら?

使ってると思います。 grubインストールすると、splash.xxxが配置されてるので、恐らく。

habuka036 commented 9 years ago

CentOS が使ってるのは plymouth でした (RHEL、Fedora、Ubuntu も同じらしい)。 で、こいつのイケてないのが、起動時のプログレスバーの色がハードコーディングという罠。 以下のパッチを書いて plymouth の rpm をビルドすることで変更可能。

--- a/src/plugins/splash/text/plugin.c.orig 2010-03-22 10:25:11.000000000 +0900
+++ b/src/plugins/splash/text/plugin.c  2014-12-26 09:53:28.454037791 +0900
@@ -184,10 +184,10 @@ view_start_animation (view_t *view)
                                     0xffffff);
   ply_terminal_set_color_hex_value (terminal,
                                     PLY_TERMINAL_COLOR_BLUE,
-                                    0x0073B3);
+                                    0x00B373);
   ply_terminal_set_color_hex_value (terminal,
                                     PLY_TERMINAL_COLOR_BROWN,
-                                    0x00457E);
+                                    0x007E45);

   ply_text_display_set_background_color (view->display,
                                          PLY_TERMINAL_COLOR_BLACK);

この rpm は %packages セクションで本家の plymouth パッケージと別に指定できるか不明なため、%post --nochroot セクションに以下を追記して上書きインストールすることにした。

/usr/sbin/chroot ${INSTALL_ROOT}/ /bin/rpm -Uvh --nodeps --force /tmp/rpms/plymouth-0.8.3-27.el6.1.x86_64.rpm /tmp/rpms/plymouth-core-libs-0.8.3-27.el6.1.x86_64.rpm

しかし、plymouth のパッケージをインストールしても、既に LiveDVD の isolinux/initrdX.img は生成済みであり、CentOS 本家の plymouth による /usr/lib64/plymouth/text.so が使用されてしまっている。

で、LiveDVD の isolinux/initrdX.img は %packages セクションが終わると生成されるようなので、 %post --nochroot セクションに以下を追記して対処。

target=\`ls ${INSTALL_ROOT}/boot/|grep initramfs\`
target_count=0
for i in \$target; do
   target_version=\`echo \$i | sed -e "s|^initramfs-\\(.*\\).img$|\\1|"\`
   /usr/sbin/chroot ${INSTALL_ROOT}/ /sbin/dracut -f /boot/\$i \$target_version
   cp ${INSTALL_ROOT}/boot/\$i ${INSTALL_ROOT}/../iso-*/isolinux/initrd\${target_count}.img
   target_count=\$(( \$target_count + 1 ))
done

無理矢理感たっぷりだが、他に良い対処方法を思いついたら再考する。