QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11695|回复: 39

Magic Linux 安装程序探讨:-)

[复制链接]
发表于 2003-3-24 15:38:12 | 显示全部楼层 |阅读模式
抛砖引玉,先写一点,大家不都在说M 1.1的安装程序不好吗?
欢迎任何有能力有热情的朋友参与讨论,只能批评不能建议的朋友请另起主题:-)


欢迎任何有能力有热情的朋友加入到Magic Linux安装程序的开发中来。
 楼主| 发表于 2003-3-24 15:40:29 | 显示全部楼层

[cjacker]Magic Linux安装程序探讨1

Magic Linux安装程序探讨:

1,要图形的还是字符的?

这并不是一个很重要的问题,只要安装程序方便可用,即使是字符界面,照样能够引人入胜,
一个成功的例子就是windows nt和2k的安装。整个的安装过程和操作80%是用蓝底白字的字符界面完成,
但是没有太多反映windows安装程序难用的,关键在于简单。

2,怎么才能简单:

安装程序最简单能作到什么样子?一个极端就是完全自动,分区会按照你的硬盘比例自动完成,然后自动安装rpm包,
可能唯一需要动手的就是X的配置,需要进行一些人为的操作。
而可控又最简单的过程可以作到:
1)欢迎界面
2)分区
3)设置root密码(密码,认证方式)
4)设置网络信息(机器名,IP/netmask,gateway,DNS)
4)安装系统
5)配置X(大部分工作可以自动检测)
6)保存各种配置并重启

如果要支持多语言,可以添加键盘和安装语言,系统语言的选择。

3,目前成型的安装程序:

大家用了很多的版本,目前比较成型的有:
1),redhat的anaconda,采用python实现,字符界面用newt,图形界面用pygtk
2),mdk的gi,采用perl实现
3),sco的lizard,采用qt实现
4),其他各种版本的简单实现和基于以上几种的延伸。

4,安装程序的构成:

这里不能说的太复杂,简单一点,就是isolinux->kernerl->ramdisk->稍微完整的小系统。

isolinux负责光盘启动,引导内核,载入ramdisk,然后载入一个稍微完整的镜像系统,这个系统包含安装过程中
所使用的各种命令,如果有图形界面,还要包含X,gtk,qt等library和perl,python等。


这个小系统的制作方法非常类似与一张软盘的Linux制作。

5,中文安装环境的实现:
架构不变,采用isolinux->kernel->ramdisk->sys_image.

isolinux->kernel这两块是不需要变化的。
其中isoLinux来自syslinux:
Magic Linux CD1中isolinux目录就包含了这两部分内容。
内容如下:
boot.cat
boot.msg
isolinux.bin
isolinux.cfg
s.lss
s.png
vmlinuz

initrd

其中,s.png和s.lss是用来在光盘启动时显示第一张图片的,使用命令
pngtopnm s.png | ppmtolss16 \#000000=0 \#d0d0d0=7 \#f6f6f6=15 > s.lss
生成。
在boot.msg中定义调用。
boot.msg中还包含了启动界面的文本信息。

isolinux.cfg内容如下:

default linux

prompt 1

timeout 600

display boot.msg

F1 boot.msg

label graphics
  kernel vmlinuz
  append initrd=initrd.img lang= devfs=nomount ramdisk_size=9216
label linux
  kernel vmlinuz
  append initrd=initrd.img lang= text devfs=nomount ramdisk_size=9216
label expert
  kernel vmlinuz
  append expert initrd=initrd.img lang= devfs=nomount ramdisk_size=9216
label ks
  kernel vmlinuz
  append ks initrd=initrd.img lang= devfs=nomount ramdisk_size=9216
label nofb
  kernel vmlinuz
  append initrd=initrd.img lang= devfs=nomount nofb ramdisk_size=9216
label lowres
  kernel vmlinuz
  append initrd=initrd.img lang= lowres devfs=nomount ramdisk_size=9216


这里定义了缺省进入那一种方式:
比如:这里是Linux.缺省就按照:
label linux
  kernel vmlinuz
  append initrd=initrd.img lang= text devfs=nomount ramdisk_size=9216启动。
boot.msg也是在这里调用的,
F1 boot.msg是指按F1键可以显示boot.msg,如果你还有其他的msg文件,可以在这里定义热键。

下面的label *是定义了各种不同的安装程序启动方式:
比如linux graphics就可以启动图形界面安装等等。

注:
内核是在这里被引用的,同样,这里指定了一个镜像文件initrd.img。

(未完,待续)
回复

使用道具 举报

 楼主| 发表于 2003-3-24 16:04:14 | 显示全部楼层

[cjacker]Magic LInux安装程序探讨-2

解析initrd.img:

解析过程:
mkdir /mnt/initrd
gzip -cd initrd.img > initrd.ext2
mount -o loop -t ext2 initrd.ext2 /mnt/initrd

生成过程:
umount /mnt/initrc
gzip -c9 initrd.ext2 >initrd.img

重建过程:
dd if=/dev/zero of=/tmp/initrd bs=1k count=2000
#这里建了个2000k的,你可以自己调整.
mke2fs /tmp/initrd
#创建ext2文件系统
mount -t ext2 /tmp/initrd /mnt -o loop
mkdir /mnt/dev
mknod /mnt/dev/tty1 c 4 1
        mkdir /mnt/lib
        cp raid1.o /mnt/lib/
        mkdir /mnt/sbin
        cp /sbin/insmod /mnt/sbin/
        cp /sbin/ash /mnt/sbin/
        ... ...
umount /mnt
gzip -c9 /tmp/initrd
cp -f /tmp/initrd.gz /boot/initrd.img
rm -f /tmp/initrd.gz



这是内核载入的第一个img文件,结构如下:
/bin->/sbin
/dev
/etc
/linuxrc->/sbin/init(关键文件)
/lost+found(空)
/modules
/proc(空)
/sbin
/tmp(空)
/var/
/var/state/
/var/state/xkb->/tmp

/dev/下包含了必要的设备文件。
/modules目录包含了安装程序的内核模快
/etc包含必要的配置文件
/sbin/包含了init,loader等程序。


/linuxrc这个文件决定下一步的工作:
挂接真正的根文件系统,包括对设备类型,设备驱动程序,文件系统等信息的处理。
安装程序的发布介质(例如,CDROM,网络,磁带…)。这可以通过询问用户,自动探测,或混合的方法完成。

/linuxrc加载必须的设备驱动程序模块。

/linuxrc创建和管理根文件系统。

/linuxrc写在根文件系统和任何已经挂接的其它文件系统,设置/proc/sys/kernel/...,终止。

挂接根文件系统。

引导加载程序被读入内存。

引导加载程序配置带有模块集的初始内存镜像(/initrd能被修改,卸载)。

完成系统引导时附加的安装任务。

这里的linuxrc是指向/sbin/init的,这个程序的代码在anaconda/loader目录。

他负责打开一个fork给loader程序,真正的引导stage2

/sbin/loader负责欢迎界面的显示,你看到的第一个蓝色的屏幕就是loader生成的。
同样loader负责将安装介质确定下来,如果使用光盘,就会把光盘mount到ram中,目录为
/tmp/loopimage/,
然后loader会按照安装方式的不同,寻找可用的image。在Magic Linux中,就是stage2.img


注:这里的蓝色屏幕就是用newt画出来的。
并且还有一个很奇怪的现象,/sbin/init和loader可执行文件居然不依赖任何的library.呵呵:-)看看anaconda/loader目录的代码就会明白一点。
回复

使用道具 举报

发表于 2003-3-25 04:26:07 | 显示全部楼层
好深呢,不懂,支持。最好做个安装说明文档,这样看过文档,安装起就方便了。还有,安装单间就行。
回复

使用道具 举报

发表于 2003-3-25 08:09:32 | 显示全部楼层
安装程序最好不做自动分区,很危险的。至于界面,字符或图形无所谓,不过最好能是中文的,类似蓝点的。
回复

使用道具 举报

发表于 2003-3-25 09:25:01 | 显示全部楼层
不太懂,但是装过一些linux,就觉得suse的安装部分又漂亮又方便。已存在的分区会自动找出来和加载,新分区则可以选择自动或者手动。
回复

使用道具 举报

发表于 2003-3-25 13:33:57 | 显示全部楼层
MDK的perl安装比较好,感觉python环境有时不太稳定。
回复

使用道具 举报

发表于 2003-3-25 14:18:20 | 显示全部楼层
看看ArkLinux的安装程序,只需要4步,虽然有些傻
回复

使用道具 举报

发表于 2003-3-26 09:13:39 | 显示全部楼层
关于cjacker部长所说的,我再补充几点:

1、图形 or 字符:
我个人比较偏向于彩色中文字符窗口界面,因为这样可以使安装程序占用更少的资源,而且也可以显得很漂亮。需要着重设计的是靠颜色的搭配来营造界面舒适感。

2、简单的问题:
说简单可能不是太准确,应该说是易用性;简单不能过了头,要留下较高的可控性。
提议:
1)全部采用中文界面:包括设置操作、在线帮助、安装时每个软件包的简介。但是必须保证中文环境正确加载和稳定运行,做不到时则提供全英文的选项;
2)分区是最大的用户壁垒,需要在分区时有简明的Linux分区知识介绍,例如通过按F1调出;如果检测到有Windows分区,则将其标上C:、D:等,以免初学者因失误造成数据丢失。
3)典型配置可以在系统初次运行时靠系统配置向导程序完成,一些不提供选择安装的so之类的包可以直接打到一个包中,以便加快安装进度;

3、安装程序的开发工具:
C毕竟是系统开发的正统。最好不要用什么python、perl、qt之类的,就用C+ncurses库就足够了,执行效率更高,开发效率也不见得就比python等差多少,毕竟C和ncurses库也都比较简单。
回复

使用道具 举报

 楼主| 发表于 2003-3-26 09:45:23 | 显示全部楼层
我的建议是用newt和C,ncursores相比较而言还是太打了。
newt的体积之小已经足够进行嵌入式开发了。
整个的安装程序如果能够正确的设计和开发,应当不会大于10M,就可以得到windows安装程序的简单效果。
回复

使用道具 举报

发表于 2003-3-26 10:15:33 | 显示全部楼层
我覺得藍點2.4做的不錯,不知道有誰安裝過。挺舒服的
回复

使用道具 举报

发表于 2003-3-26 11:31:42 | 显示全部楼层
我觉的X的配置可以在第一次启动的时候配置。
root的密码也可以这样做 (不过,这样做可能又安全上的隐患)

whlvme
彩色中文字符窗口界面 的问题 在 写程序的时候太困难。
主要是怎么搭配色彩才让人觉得舒服。(这个需要专门的美术人才啊。:-) )
回复

使用道具 举报

发表于 2003-4-18 08:38:38 | 显示全部楼层
我觉得用字符安装界面就可以,
正如上面所说的Windows NT/2000大部分都是字符安装界面。
用字符界面安装省资源,可以大大加快安装速度。
对于分区嘛,还是自己分的好,自动分出的区有些时候不符合个人的喜好,Windows也是自己先分出区来再安装的呀!
回复

使用道具 举报

发表于 2003-4-18 13:11:52 | 显示全部楼层
几个建议:
1:提供几种不同的界面风格,比如类dos、类Windows以及Linux自己的。
2:提供一种“最简”安装,就是安装时用户什么都不用设置,root密码为空,默认进入图形界面,第一次登录时,启动一个简单的向导,教用户进行一些基本的操作,主要是图形界面下的操作,包括:系统设置、用户设置、玩游戏、上网看网页、聊天、办公软件等,还要带些Linux的电子书。教学做到有所为 有所不为就可以了。
3:安装程序的每一步都要有“恢复默认”这个按钮,都要有“建议”这个按钮。
4:要支持通过网络(主要是局域网)一次性进行多台电脑的安装,比如先安装好一台机器,然后用一个光盘启动其他的裸机,然后通过主机将相同配制的系统装到所有的机器上。
回复

使用道具 举报

发表于 2003-4-20 02:15:21 | 显示全部楼层
[quote:36048d337c="sjinny"]几个建议:
1:提供几种不同的界面风格,比如类dos、类Windows以及Linux自己的。
2:提供一种“最简”安装,就是安装时用户什么都不用设置,root密码为空,默认进入图形界面,第一次登录时,启动一个简单的向导,教用户进行一些基本的操作,主要是图形界面下的操作,包括:系统设置、用户设置、玩游戏、上网看网页、聊天、办公软件等,还要带些Linux的电子书。教学做到有所为 有所不为就可以了。
3:安装程序的每一步都要有“恢复默认”这个按钮,都要有“建议”这个按钮。
4:要支持通过网络(主要是局域网)一次性进行多台电脑的安装,比如先安装好一台机器,然后用一个光盘启动其他的裸机,然后通过主机将相同配制的系统装到所有的机器上。[/quote]
估计下一代的Windows可以。

个人建议:
作成RH9的字符安装界面就很好了。
是中文的,还有提示,安装过程很简便。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-5-17 09:26 , Processed in 0.067803 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表