QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4407|回复: 4

有关内核翻译的文档:如何建立自己的livecd内核

[复制链接]
发表于 2006-11-6 18:07:19 | 显示全部楼层 |阅读模式
下面是我从slax论坛找的文档。翻译不很好。


这不是一个盲目地逐步跟随的操作程序。
这个建立一个live-cd可用内核的过程并不是随便就能搞定的。必须明白所做的事情是非常危险的,所以你必须有所防范这个可启动的内核在某些情况下可能出错。
第一步,安装内核源码。假定内核源码安装在/usr/src/linux-2.6.16。
第二步,打squashfs的补丁,解压squashfs包到一个空文件夹,让我们称之为$SQUASHFS_DIR
然后开始为内核打squashfs的补丁
                                命令:
# cd /usr/src/linux-2.6.16
# patch -p1 < /$SQUASHFS_DIR/linux-2.6.16/squashfs3.0-patch
可选的:你可以使用当前的内核配置作为基础。如果你的内核已经支持/proc/config.gz然后只需做:
                                命令:
                                                # zcat /proc/config.gz > .config
如果没有, 可能的情况是你有一个config-2.6.16文件在/boot目录下。然后只需通过下面命令将这个文件复制到内核源码文件夹中:
                                命令:
                                                # cp /boot/config-2.6.16 .config
现在,可以用如下命令配置内核了:
                                命令:
                                                # make menuconfig
确定能够支持squashfs 文件系统
<<< Kernel configuration >>>
Filesytems --> Miscellaneous Filesystems --> SquashFS 3.0 (M)
第三步,编译和安装内核
                                命令:
# make
# make modules_install
# cp arch/i386/boot/bzImage /boot/vmlinuz
# cp .config /boot/config-2.6.16
# cp System.map /boot/System.map
一个更好的办法是首先建立一个内核包并且用它安装。但是这个与你使用的linux版本分格有关。
第四步,用新内核启动
首先必须配置引导程序使之用新内核启动。作为预防你应该有另一个可以启动的内核以防在某些情况出错。
第五步,编译unionfs作为外部模块
首先解压unionfs包,根据unionfs的文档只需用命令make和为当前的内核与utilities编译一个模块 ,但是我做了一点小改变用来减小内核模块的大小。
命令:
# tar xvzf unionfs-1.2.tar.gz
cd unionfs-1.2.tar.gz
# sed -i 's/UNIONFS_DEBUG_CFLAG[[:blank:]]*-g/UNIONFS_DEBUG_CFLAG=/'
# echo "EXTRACFLAG=-DSUPPORT_BROKEN_LOSETUP=1" > fistdev.mk
# echo "EXTRACFLAG+=-DUNIONFS_DEBUG" >> fistdev.mk
现在,通过如下接下来建立一个模块:
命令:
# make
如果一切顺利,你就会得到一个unionfsunionfs-utils模块
安装unionfs模块用下面的命令
命令:
# mkdir -p /lib/modules/2.6.16/kernel/fs/unionfs
# cp unionfs.ko /lib/modules/2.6.16/kernel/fs/unionfs
# depmod
第六步,建立初始化的ramdisk:
你可以使用linux-live的initrd_create脚本为你的内核建立一个初始化ramdisk。
首先你需要为你的内核复制squashfs和unionfs模块到内核模块文件夹中,进入linux-live的initrd目录下,然后只需执行initrd_create脚本。
命令:
# cd linux-live-5.x.x/initrd
# cp /lib/modules/2.6.16/kernel/fs/squashfs/squashfs.ko kernel-modules/2.6.16/
# cp /lib/modules/2.6.16/kernel/fs/unionfs/unionfs.ko kernel-modules/2.6.16/
# ./initrd_create
现在你就有了liveCD启动的内核和ramdisk,剩下的是建立linux 系统了。
发表于 2006-11-6 21:19:21 | 显示全部楼层
支持
回复

使用道具 举报

发表于 2006-11-7 13:09:52 | 显示全部楼层
还是 用unionfs 模块好解决虚拟写问题 呵呵。。

单独用squashfs  需要麻烦一步
回复

使用道具 举报

 楼主| 发表于 2006-11-8 17:27:52 | 显示全部楼层
squashfs是用来压缩解压的,与写与不写关系不大吧
回复

使用道具 举报

发表于 2006-11-8 18:05:54 | 显示全部楼层
[quote:56bdbc24db="wjping119"]squashfs是用来压缩解压的,与写与不写关系不大吧[/quote]
是阿 所以要是不用unionfs模块的话  在启动脚本中要处理好 可写的部分 :D

像  fedora 等 不用unionfs模块处理livecd的都是要这样一个步骤的

毕竟unionfs是2004才写出来的,所以 以前的livecd(不知道有没有 嘻嘻) 都得这么处理一下 :D
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-4-25 22:53 , Processed in 0.088877 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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