全部博文(29)
分类: LINUX
2011-11-30 14:31:10
基于ubuntu发行版的安装界面的深度定制过程
先阅读官方帮助文档详细介绍ubuntu社区如果定制ubuntu发行版的具体步骤。最好是按照步骤执行一遍,否则会停留在表面问题。
漫长的阅读….
1. 版本选择ubuntu10.04-desktop-livecd,之所以选择一个已有的发行版,而不是按照官方文档做?因为你按照官方的去做,做完以后和ubuntu发行版内容完全一样,而且安装过程很繁琐。这样只要对现有的发行版进行增删修改软件包即可。
2. 需要修改发行版的目录结构casper、isolinux、.dist、md5sum.txt这些文件控制ubuntu的安装行为和用户使用时的具体行为。
阅读Linux for computer forensic investigators: problems of booting trusted
现在交代一下livecd安装的流程
Isolinux目录下的isolinux.bin读取该目录下的配置文件,加载vmlinuz内核挂载initrd.lz为根文件系统,运行ubiquity开始安装步骤1,2,3…最后复制squashfs文件系统到硬盘。复制完成后重启机器。
.dist目录定制细节
最重要的是info文件。包含了操作系统发行版的名字。
Isolinux目录的定制细节,打开该目录,一目了然,很多文件简单替换即可
默认语言的修改touch lang && echo zh_CN > lang
默认语言列表的修改文件language
背景图片直接替换
Gfxboot.cfg文件的修改
修改Hidden-timeout=0否则不会有选择的界面,直接进行livecd的安装
Foreground是选择的字体的高亮颜色
Background是字体颜色
Screen-color是当前选择行的背景颜色
Casper目录定制细节,该目录工作量最大
有两部分要定制initrd.lz和squashfs文件系统的定制
Initrd的定制 mv initrd.lz initrd.lzma并且解压(针对ubuntu系统/boot/ramdisk重命名为.gz的文件)
完成后initrd是cpio的格式文件再 cpio –id < ./initrd
这里要基于livecd安装过程的背景图片,具体livecd和内核引导技术google
Ubuntu10.04开关机动画技术plymouth(/lib/plymouth/theme),修改ubuntu-logo下的所有图片文件,顺便也了解default.Plymouth配置,theme目录下的ubuntu-logo也要修改。Ubuntu的开关机动画背景是纯颜色,修改文件ubuntu-logo下的ubuntu-logo.script,176行,这是要用你想要的背景颜色的RGB的值,把RGB的值除255,替换原有的值即可。或者new一个主题目录,但是需要些改主题的脚本。用户开关机时的动画在squashfs里修改,方法一样。
/etc/casper.conf修改user hostname….
最后find . | cpio -o -H newc > ../initrd.img 在压缩重命名完成initrd.lz的制作。
Squashfs的制作官方有详细的说明
安装界面的滚动信息是ubiquity控制目录在/etc/ubiquity****/
Uname –a 输出的系统信息修改 /etc/issue***
用户主题修改/etc/themes
背景图片修改/usr/share/background
面板定制gconftool来定制面板信息
附件脚本
1.制作iso镜像
#!/bin/bash
if [ -z $1 ]; then
echo "usage: ./$0 ./yourfoldername"
exit
fi
echo
echo "you just exec command: $0 $1!"
echo
echo "updating md5sum.text, waiting..."
(cd $1 && find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt)
echo "done!"
cd $1
pwd
mkisofs -input-charset iso8859-1 -r -V Liduli -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../"livecd$2".iso .
cd ..
2.制作initrd.lz
#!/bin/bash
if [ -z $1 ]; then
echo "usage: ./$0 ./yourfoldername"
exit
fi
echo
echo "you just exec command: $0 $1!"
echo
rm initrd.*
cd $1
find . | cpio -o -H newc > ../initrd.img
cd ..
lzma -7 initrd.img
mv initrd.img.lzma initrd.lz
clear
echo
echo "initrd.lz finish!!"
echo