haulm 发表于 2011-5-1 08:26:09

不知道为何 Live 无法进入系统

RT

haulm 发表于 2011-5-1 08:29:10

是否有更好的 Livecd 制做脚本呢。
其中 udev 运行失败,无法建立 queue 文件,udevadmin error send message : connection refused
/dev/tty0 不存在。。。找不到光驱,cups 服务失败,init 失败。。。卡在那了。

我只是把之前 lzma 压缩改成 xz 压缩,文件包 *.lzm 没有变动过,内核压缩支持也从 lzma 改成 xz
可我发现好多服务运行失败,比如 cups 服务怎么也没运行起来

# grep -r "comp xz" ./
./tools/liblinuxlive:   mksquashfs "$1" "$2" -b 256K $3 $4 $5 $6 $7 $8 $9 -comp xz
./initrd/initrd_create:mksquashfs $INITRD_TREE/usr $INITRD_TREE/usr.lzm -comp xz>/dev/null 2>&1
./initrd/initrd_create:mksquashfs $INITRD_TREE/$LMK/kernel/drivers $INITRD_TREE/drivers.lzm -comp xz>/dev/null 2>&1
./initrd/liblinuxlive:   mksquashfs "$1" "$2" -b 256K $3 $4 $5 $6 $7 $8 $9 -comp xz

很可能是 udev 版本导致的差别使用 Live 制做失败,如果用 2.5.7 制做 Live 那么xorg 只能保持旧版本。

[ 本帖最后由 haulm 于 2011-5-1 08:47 编辑 ]

haulm 发表于 2011-5-1 09:11:24

内核加上如下配置编译中,暂时还不知道能否解决该问题。
Device Drivers --->
Generic Driver Options --->
[*] Create a kernel maintained /dev tmpfs (EXPERIMENTAL)
[*] Automount devtmpfs at /dev

zy_sunshine 发表于 2011-5-1 09:13:08

你不去自己找问题,还在找一些傻瓜方法,永远也不可能解决问题。

haulm 发表于 2011-5-1 11:19:06

原帖由 zy_sunshine 于 2011-5-1 09:13 发表 http://www.linuxfans.org/bbs/images/common/back.gif
你不去自己找问题,还在找一些傻瓜方法,永远也不可能解决问题。
请问路在何方?
原来不涉及一些底层的东西,还好搞,升级 xorg 和 内核后发觉自己有点跟着失常了。。。

zy_sunshine 发表于 2011-5-1 12:07:58

回复 5# haulm 的帖子

如果要做LiveCD,不需要将启动脚本重写,但是也要仔细调节。
制作LiveCD的脚本也就是辅助制作一些文件系统,设置启动参数的,所以这些脚本也是需要自己研究的,不能直接拿来用的。

haulm 发表于 2011-5-1 13:39:00

原帖由 zy_sunshine 于 2011-5-1 12:07 发表 http://www.linuxfans.org/bbs/images/common/back.gif
如果要做LiveCD,不需要将启动脚本重写,但是也要仔细调节。
制作LiveCD的脚本也就是辅助制作一些文件系统,设置启动参数的,所以这些脚本也是需要自己研究的,不能直接拿来用的。 ...
问题是几个月前我早就已经用它做了一个正常启动并应用的Livcd,我没拿出来是因为我认为它不成熟。
和这个脚本没有关系,而是系统底层变动了,特别是kernel udev hal xorg-server initscripts xorg-drv 它们之间的特殊关系,搞得我都有点抓狂了。
以前的内核,/etc/fstab 是可以删除的,现在的内核如果你删了这个文件,会导致一大堆的只读问题,你就得使用加载其它 linux 进行修复了(连 mount 到目录和建立目录都不被允许),现在的这个脚本我发现是不带 fstab 这个文件,在压缩文件时自动剔除了这个文件,但现在内核如果没发现这个文件,很多服务就无法运行(很多服务喜欢删除或添加文件,这些在新内核中如果缺失了 /etc/fstab 的情况下操作不被允许)。
udev 158 在 2.6.36.4 下可以编译,到了 2.6.38.4 下面就要打补丁,所以实践起来看似很简单的东西有时非常费力气。
还有一大堆不同的机器下不能安装或不能运行某些程序的我实在是很惊讶,有时都要怀疑 115 的ISO是不是正确的,但正确的 sha1 md5 值又说明了什么?
奇怪的 mxd2 拨号无效问题,只因为 udev 版本升级成 167 版本,mxd2 的确通过 dbus 执行了 pppoe-start,但是它不会成功拨号,我打开虚拟终端发现指令执行 pppoe-start 是可以拨号的,而 dbus 调用的 pppoe-start 只执行了脚本,却不会成功拨号。
所以归结成一点:底层的变动是成套的,动一处则触全身,apt 源里根本就不应该放置那些底层更换的包。
所以我就不能理解那些只喜欢源里升级的朋友,他们对 linux 本身的应用是否存在问题。

[ 本帖最后由 haulm 于 2011-5-1 14:05 编辑 ]

zy_sunshine 发表于 2011-5-1 14:33:42

回复 7# haulm 的帖子

不要说这个没关系,那个没关系,任何地方都有可能,除非你看到他的源码并测试过没有错误。

从来都是在测试上做分析怎么能看到问题的根本?ppoe-start 起码用strace去看到底是哪里不一致。

编程不是写文章,意思通就可以正常运行。

lanzinc 发表于 2011-5-3 12:39:48

我也想知道Linux怎么调试和排错比较好,
经常一出问题,如果程序提示不是太到位,问题排查起来就很麻烦,很多时候只能定位到哪几个包相关东西有问题,只能是重装那几个包,然后重新配置。
往往问题解决了,却没把问题原因真正找出来。
而且我还只是用户层面的。
haulm则是系统构建者层面的,要考虑的更多。

谁讲讲Linux下的系统调试和排错的东东,这东西还真不好google,
google到的都是针对具体问题的解决经验

haulm 发表于 2011-5-3 13:04:37

原帖由 lanzinc 于 2011-5-3 12:39 发表 http://www.linuxfans.org/bbs/images/common/back.gif
我也想知道Linux怎么调试和排错比较好,
经常一出问题,如果程序提示不是太到位,问题排查起来就很麻烦,很多时候只能定位到哪几个包相关东西有问题,只能是重装那几个包,然后重新配置。
往往问题解决了,却没把问题原因真正找出 ...
grep find | cat 等等是很好的工具。
所以说,真正熟掌握应用 Linux 的朋友是不会选择大面积的更新,因为出现问题后很难定位,只能重装系统。
sunshine 要求我要从开发角度去解决问题,而不是目前写个把GUI程序、打包升级、降级、版本选择、google 搜索这种方式来排查和构建系统。但我不得不说的是我目前还不具备有底层开发的能力,所以我能做的只能是唯持现状。
大多数Bug出现时,系统都多多少少给出一些提示,或者可以看到哪个组件运行失败了,但也有很没谱的段错误,无从入手,我排错完全根据几年来累积的经验,说不出具体的方法。很多东西只有你自己去编译升级后才会懂得唯护。比如 udev版本更换,那么 xorg-x11-drv- xx 很可能不工作了,所以这个组件一升级,很可能你进入 X 时的鼠标、键盘不工作了,udev 版本还有匹配的问题,说真的,对于 udev 的问题还真不可能和 sunshine 说的用 strace 跟踪,因为 udev 不同版本一直在变化,目前 MGC 2.5.8 对高于 160 版本的 udev 不适用,配置要修改,现在用的 Live 脚本不能工作于高于 149 版本的 udev,从配置文件到打包内容都有很大差别,适用的启动脚本都有变化。
有时候问题解决了,并不见得非要找到原因,没有办法,你的脑子也记不住吧,找到重点就行了。10G 多的源码里面有多少东西你能搞明白?比如 udev 在新的内核 2.6.38 里不能编译,而补丁就是跳过内核已不支持的部份,删掉那部份编译,至于什么原因什么原理,真的没法懂。

[ 本帖最后由 haulm 于 2011-5-3 13:25 编辑 ]
页: [1]
查看完整版本: 不知道为何 Live 无法进入系统