我们操作系统的作业是使用crux,修改里面的内核代码,以达到隐藏进程的作用。代码部分不算复杂(可能是网上有类似的代码吧^_^),装系统,配环境倒是要花很多时间。下面主要也是讲讲如何安装crux。
-
新建虚拟机,虚拟机的光驱装载crux安装映像文件
在VMware中,新建虚拟机有典型和自定义两种,其实哪种都没所谓,我选择自定义,因为可以看到更多的细节。要注意的地方有:
- 在安装程序光盘映像文件中,选择crux的iso安装文件。
- 客户操作系统选linux,版本为“其他Linux 3.x 内核64位” 注:如果提示电脑不支持64位虚拟化,可以去bois下开启相应的选项(太老的机子可能改不了,但大多数都是支持64位的),如果没提示则忽略。
- 内存,我选择了512M,其实官方手册有说,至少需要192M,所以我给了很充足的了。
- 网络连接那里,可以选择“桥接”或“仅主机模式”。个人建议,如果你处于局域网内,使用路由的话,用桥接比较方便。如果直接使用ADSL之类的,主机模式会比较好。“NAT”理论上更佳,可是我用的时候,出现了回环,ping的时候,对于一次icmp,会有多次返回,也没配置成功,也懒得找原因了。我选择了桥接,因为我电脑就直接连着路由,网段是192.168.1.0。于是我给虚拟机分配IP地址为192.168.1.33,网关就是路由地址192.168.1.1。子网掩码是255.255.255.0。
- SCSI控制器,保留默认吧。可以看到它默认是LSI Logic。虚拟磁盘类型为SCSI。(记住这个是因为后面编译内核的时候有需要)
- 磁盘大小,我分配了6G。编译kgdb和安装之后,主分区的已用空间会有四点多G的容量。所以6G磁盘,我的分配是768M给swap分区。剩下的空间挂载到根目录上。 弄好之后,开启虚拟机,它会自动从光盘启动,可以看到最后一行是一个 “boot:”,按一个回车之后,就可以进入正式的安装。
-
对磁盘进行分区
前面按回车之后,就进入crux的安装环境(其实就是一个微型的crux,以root用户默认登录)。
-
输入命令
fdisk /dev/sda
这句话的意思是,对sda这个磁盘进行分区。(linux把所有的设备都挂载到了/dev目录(device的意思)下。linux定义了sata或scsi模式的硬盘为sd_,IDE模式为hd_,*是abcd等小写字母,sda是指第一块sata或scsi模式的硬盘,其它类比)。如果你不确定,你可以输入fdisk -l,通过这个命令你可以查看所有的磁盘及其分区情况。
在fdisk /dev/sda之后,可以看到 “Command (m for help):”,在这里你就可以输入相应的fdisk命令了。 -
输入以下命令,只需要输入//前面的字母即可,//之后是注释,不要输,以后不再说明。
n //n代表新建分区,这里新建一个swap分区 p //p是选择主分区,注意整个磁盘的主分区不能操作4个,具体查一下mbr的相关之类即可 (按回车键) //分区序号,保留默认就好。默认为1,那么以后 /dev/sda1 就代指 这个分区 (按回车键) //磁盘开始簇,保留默认即可 +768M //输入分区大小,我选了768M,留给swap用 n //新建第二个分区,主分区,也就是挂载到'/'里。 p //p是选择主分区 (按回车键) (按回车键) (按回车键) //这样就默认把剩下的所有空间都分为一个区 t //t是更改分区的system type,这里要把第一个分区改为swap类型 1 //选择第一个分区 82 //82是swap类型的Hex Code a //a是激活某个分区为可引导的,主要的引导文件就存在于该分区。一个硬盘只能有一个分区是active的。ps:如果你通过diskgenius把你的电脑的非系统盘设为active的话,那你的电脑就开不了机了^_^ 2 //将第二个分区设为active。因为/boot就挂载到个分区上,如果你将/boot单独划一个分区的话,那你应该要把/boot这个分区设为active。
-
-
将分区格式化为相应的文件系统,之后进行挂载
输入以下命令:
mkfs.ext4 /dev/sda2 //把第二个分区格式化为ext4格式 mkswap /dev/sda1 //把第一个分区格式化为swap格式mount /dev/sda2 /mnt //把第二个分区挂载到/mnt下面 swapon /dev/sda1 //激活swap分区
-
开始安装crux
输入命令
setup 选择yes继续 选择1 Install CRUX 3.0 回车 //叫你输入crux的主分区,我们之前已经挂载到了/mnt下了,所以回车,默认的就好。 把opt、xorg也选上 //按空格可以选择,前面变为*号就代表选上了。其实我们可以不用到opt和xorg里面的东西,至多我们会用到opt里面的grub2这个包。不过我贪图方便,把它全选了。如果一开始不选也可以,之后可以挂载光盘文件,通过pkgadd命令来添加这些包。常见crux安装手册。 接下来,按照默认的就好。一直到Install completed successfully。按回车就可以了。
-
进入chroot环境
输入命令
setup-chroot
之后就进入了chroot环境
setup-chroot这句命令包含了很多的命令,包括以下(下面这5行代码就不用输入了) $ mount --bind /dev /mnt/dev $ mount --bind /tmp /mnt/tmp $ mount -t proc proc /mnt/proc $ mount -t sysfs none /mnt/sys $ chroot /mnt /bin/bash
-
修改root的密码
输入命令
passwd
进行修改root的密码,这个密码以后登陆要用到
-
修改/etc/fstab文件
输入命令:
vim /etc/fstab
1.输入命令之后会进入vim编辑器,可以编辑文本文件。fstab文件里要设置好你的文件系统。我这里有两个分区,一个是ext4分区,挂载到/下,另一个是swap分区。
2.点击i,进入insert模式(如果不会用,找一下vim教程),这个时候才可以输入东西。
3.找到#EXT4FS_ROOT#,将其改为sda2,因为我这是第2个分区为主分区。并把该行前面的#去掉。
4.找到#SWAP#,将其改为sda1,并把该行前面的#去掉。
5.改好之后,按esc退出insert模式
6.输入:wq将该文件保存
-
修改/etc/rc.d/net,配置网络
输入命令:
vim /etc/rc.d/net
前面说过我给虚拟机分配IP地址为192.168.1.33,网关就是路由地址为192.168.1.1。子网掩码是255.255.255.0。
那么我的修改如下图所示。
如果你是用的是仅主机模式,那你可以参考http://wenku.baidu.com/link?url=i2ZXVrsCqcxGw-3TMryamZQCMd9KSOoqUAwmhIzAIn1bSCzy2jDI1ScFHsutuHhsQricWRI2sVW2rzNJHcffLE2ruNAc9eh23MfxER-pBtq的第九页来配置一下。
-
修改/etc/resolv.conf
输入命令:
vim /etc/resolv.conf
-
编译内核
输入以下命令
cd /usr/src/linux-3.6.11 make menuconfig //注意:这一步之后,要选择编译的模块。有一些选项要选,具体看后面的make menuconfig注意事项。 make all make modules_install cp arch/x86/boot/bzImage /boot/vmlinuz cp System.map /boot
make menuconfig的注意事项:
这一步是对内核进行配置,简单来说就是指定内核是否加载相应的选项。其中前面的*号是代表以built-in的方式加载,M是以模块的形式加载,空就是不加载到内核。按照如下的选项来勾选,错开表示目录层级的关系。下面的这些都是加入了对SCSI的支持,否则的话,开机会提示VFS错误。其中,BusLogic SCSI support是对buslogic方式的SCSI控制器提供支持。Fusion MPT那个则是提供给LSI Logic方式的,前面我们新建虚拟机的时候,已经知道了我们用的是后者。但遇到有个人,不选buslogic那个仍是VFS错误。所以为了保险,2者都勾上吧。
Device Drivers ---> SCSI device support ---> [*]SCSI low-level drivers --> [*]BusLogic SCSI support [*]Fusion MPT device support ---> [*]Fusion MPT ScsiHost drivers for SPI
配置完之后,一直按esc,到最后,它会提示你是否保存新配置,选择yes就可以了。
-
配置lilo
输入命令:
vim /etc/lilo.conf
修改lilo.conf文件。把#DEVICE#改成sda,把#ROOT_DEVICE#改成sda2。在里面你可以看到,image是指向我们改成编译内核后复制过来的vmlinuz。 输入命令:
lilo
-
重启并测试
输入命令:
reboot
等待片刻,它将自动重启,之后输入用户名,密码之后就可以进入系统了。
进入新系统,测试一下网络, 输入命令:ping www.baidu.com
如果通了,则大功告成,不行,ping 一下网关,通了,那说明网关可达,ping不通百度是dns没设置对。
如果提示unreachable之类的,输入命令:
ifconfig
,看看是不是有eth0,如果仅仅有lo,很可能是你网卡驱动没装好或网络配置错误。