http://my.oschina.net/taohong/blog/14530
对于 虚拟化,我们希望 共享虚拟光盘上的系统,每个虚拟机的 个性配置和数据在各自的虚拟硬盘上!这样我们只需维护 一个共享的系统和 各自的数据,这样虽然系统只读,不会感染病毒,但光盘不能更新,容易被攻击!进而我们想到用共享的只读虚拟硬盘存放系统。
而linux的系统结构要求etc、bin、sbin、lib必须在同一个分区(/),usr、var、home、boot等系统目录及自定义目录可以放在其他分区。这就要求我们必须从etc目录中分离出跟本机有关的文件或目录,或只保留能引导到挂载其他分区的一小部分,要动etc,必须精研初始化!
ubuntu的初始化一直在变,确实启动越来越快,但文档没能跟得上!辩证地看,对于字符界面的服务器来说,BSD风格的init脚本,更利于管理员跟踪!网上很多资料,太老了,基本没有参考价值!10.04的初始化用的是基于事件的upstart。
开始动手:
1、/etc复制到另一个分区/TaoHong/etc
2、精简/etc,经过两天实验,缺一个文件都启动不了,/etc只保留:
#ls -p /etc
default/ fstab group gshadow init/ mtab passwd shadow
3、修改fstab
/dev/sda1 / ext4 ro 0 1 # /根只读
/dev/sdb1 /TaoHong ext4 defaults 0 2
/TaoHong/etc /etc none bind # 增加此行,替换原/etc,相当于mount --bind /TaoHong/etc /etc
4、删除/etc/init/hostname.conf #实践证明,用下面第5步来 定义主机名
5、修改/etc/rc.local 增加一行 hostname -b -F /etc/hostname
6、把/etc/mtab变成软链接: ln -sf /proc/mounts mtab
经过以上精简,原/etc只剩下:2个目录,55个文件。
分析如下:
1、/etc/init/是 upstart的若干 作业定义文件,也就是网上说的 /etc/event.d(ubuntu10.04根本没有这个目录)。
2、当只保留fstab init/ mtab,重启后提示,缺少/etc/default/下的某个文件,添加它, /etc/default/都是默认 变量定义文件。
3、重启后提示,缺少组和用户数据库,添加group gshadow passwd shadow 。
4、这时已经用个性化的/etc,开始继续初始化,成功启动!
5、为了节省内存,可以删除原/etc/init/下的tty3--tty6,作为服务器,tty1和tty2足够了,当然tty7是自动的,你可以去看!
6、由于是事件驱动的init,/etc/init/下的若干 作业定义文件,除了mountall.conf总是第一个执行,其他执行的次序是变化的!这是我用了一天的时间,为每一个文件加了”签到“指令,实验出来的!
7、修改后,主机名是localhost,开始我分析是,upstart基于事件并发运行,mountall事件触发挂载fstab中的各个分区的动做还没有执行完, hostname.conf事件触发定义主机名 的动作并发运行,因此不能获得新/etc/hostname,于是我在/etc/init/hostname.conf文件中定义主机名之前加了延时,试验失败!好在办法总比问题多!无奈使用rc.local实现!
我把2.4内核+busybox做的防火墙,精简到软盘上,由于系统很小,文件很少,认真分析每一个文件,豁然开朗!
多编译几遍内核、busybox,LFS几遍,gentoo几遍,谁都能做发行版,再难的事成功做过一万次,对于你,还是难事吗?
分享到:
相关推荐
1. 安装过程可能需要一段时间,期间虚拟机会自动处理文件复制、配置设置和系统初始化等工作。 2. 安装完成后,虚拟机会重启,此时你可以移除ISO镜像,然后重新启动虚拟机。 #### 步骤6:完成安装并登录 1. 重启后...
安装Ubuntu 10.04 LTS完成后,接下来是一系列的初始化配置,主要包括: 1. 显示桌面图标:通过gconf-editor可以自定义桌面的图标显示,包括计算机、家庭和回收站等。 2. 更改用户权限:由于Ubuntu默认的安全性,...
10. **系统重启与完成安装**:安装完成后,系统将自动重启,此时应选择“现在重启”以完成最后的初始化过程。至此,Ubuntu 10.04 的安装宣告完成。 #### 结论: 通过上述步骤,用户能够在 VMware 7.1.4 上成功搭建...
标题中的“ubuntu10.04安装oracle10.2g”表明了本文将讨论如何在Ubuntu 10.04这个Linux发行版上安装Oracle Database 10g Release 2 (10.2g)。Ubuntu 10.04(Lucid Lynx)是一个较旧的版本,而Oracle 10g也是早期的...
3. **vmlinuz**:这是Linux内核的压缩二进制形式,是操作系统的核心,负责初始化系统并加载必要的驱动程序和服务。 4. **initrd.gz**:Initial RAM Disk,是一个临时的内存文件系统,用于在内核启动初期加载所需的...
1. 设备初始化:驱动加载时进行设备的初始化,包括硬件的配置和资源的分配。 2. 设备操作:实现设备的读写、控制等操作函数。 3. 中断处理:对于中断驱动的设备,需要编写中断服务程序,处理硬件发送的中断请求。 4....
通过以下命令安装并初始化Repo: ```bash # curl http://android.git.kernel.org/repo > /home/wenxy/bin/repo # chmod 777 /home/wenxy/bin/repo # cd /home/wenxy/src/android # repo init -u git://android.git....
在Ubuntu 10.04操作系统中,TFTP(Trivial File Transfer Protocol)服务是一种简单且无状态的文件传输协议,常用于网络设备初始化、软件更新以及远程引导等场景。以下将详细介绍如何配置TFTP服务。 首先,我们需要...
3. **双系统构建**:在全志A10平板上同时安装Ubuntu和Android系统,使用户可以在两个不同的操作系统之间切换,满足多样化的使用需求,比如进行开发工作或日常娱乐。 #### 安装Ubuntu 10.04 LTS过程详解: - **准备...
- 使用repo工具初始化仓库: ```bash mkdir ~/android-source cd ~/android-source repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.7_r1 repo sync ``` 2. **解决源码...
- 在安装过程中,系统会询问用户关于安装文件存放位置的问题,例如二进制文件、初始化目录、守护进程文件、库文件以及文档文件的存放目录。 - 根据提示输入相应的目录路径,或者直接按回车接受默认路径。如果默认...
- **TFTP与NFS的原理与应用**:深入了解TFTP与NFS的工作机制,以及它们在不同场景下的具体应用,如网络设备初始化、系统备份恢复等。 - **安全考虑**:探讨在开放网络环境中使用TFTP与NFS的安全性问题,包括数据加密...
同时,`update-initramfs`和`update-grub`命令用于更新启动引导和初始化映像。 7. **清理旧内核**:在编译完成后,旧内核可能需要被清理以释放磁盘空间,`purge-old-kernels`脚本可以帮助完成这个任务,但首先需要`...
在Ubuntu 10.04上安装和配置LDAP服务涉及多个步骤,包括安装软件、创建数据库配置文件、初始化数据库以及可能的客户端配置。正确完成这些步骤后,你就可以拥有一个功能齐全的LDAP服务器,能够为你的组织提供集中式的...
接下来,通过Repo脚本初始化Android源码仓库,使用`repo init -u git://android.git.kernel.org/platform/manifest.git`。如果要获取特定分支的代码,可以添加`-b`参数,例如`repo init -u git://android.git.kernel...
4. **初始化Android源码:** - 进入工作目录并初始化: ```bash cd mydroid repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread reposync ``` #### 二、编译工具链安装 - 安装Make:...
2. **初始化 Repo**:这一步将下载 Android 项目清单。 ```bash repo init --u git://android.git.kernel.org/platform/manifest.git ``` - 如果需要特定分支的代码,可以通过添加 `-b <branch_name>` 参数指定...
在下载源代码前,需要先初始化`repo`工具: ```sh mkdir android cd android repo init -u git://android.git.kernel.org/platform/manifest.git ``` 至此,所有的准备工作都已完成,可以开始下载Android 2.2的源...
- 初始化并同步源代码: ```bash mkdir ~/Android2.3 cd ~/Android2.3 repo init -u git://android.git.kernel.org/platform/manifest.git repo sync ``` - 由于源代码量大(约5GB),且依赖于网络速度,这...