操作系统作业(一)----安装crux3.0

我们操作系统的作业是使用crux,修改里面的内核代码,以达到隐藏进程的作用。代码部分不算复杂(可能是网上有类似的代码吧^_^),装系统,配环境倒是要花很多时间。下面主要也是讲讲如何安装crux。

  1. 新建虚拟机,虚拟机的光驱装载crux安装映像文件

      在VMware中,新建虚拟机有典型和自定义两种,其实哪种都没所谓,我选择自定义,因为可以看到更多的细节。要注意的地方有:

    1. 在安装程序光盘映像文件中,选择crux的iso安装文件。
    2. 客户操作系统选linux,版本为“其他Linux 3.x 内核64位” 注:如果提示电脑不支持64位虚拟化,可以去bois下开启相应的选项(太老的机子可能改不了,但大多数都是支持64位的),如果没提示则忽略。
    3. 内存,我选择了512M,其实官方手册有说,至少需要192M,所以我给了很充足的了。
    4. 网络连接那里,可以选择“桥接”或“仅主机模式”。个人建议,如果你处于局域网内,使用路由的话,用桥接比较方便。如果直接使用ADSL之类的,主机模式会比较好。“NAT”理论上更佳,可是我用的时候,出现了回环,ping的时候,对于一次icmp,会有多次返回,也没配置成功,也懒得找原因了。我选择了桥接,因为我电脑就直接连着路由,网段是192.168.1.0。于是我给虚拟机分配IP地址为192.168.1.33,网关就是路由地址192.168.1.1。子网掩码是255.255.255.0。
    5. SCSI控制器,保留默认吧。可以看到它默认是LSI Logic。虚拟磁盘类型为SCSI。(记住这个是因为后面编译内核的时候有需要)
    6. 磁盘大小,我分配了6G。编译kgdb和安装之后,主分区的已用空间会有四点多G的容量。所以6G磁盘,我的分配是768M给swap分区。剩下的空间挂载到根目录上。 弄好之后,开启虚拟机,它会自动从光盘启动,可以看到最后一行是一个 “boot:”,按一个回车之后,就可以进入正式的安装。
  2. 对磁盘进行分区

      前面按回车之后,就进入crux的安装环境(其实就是一个微型的crux,以root用户默认登录)。

    1. 输入命令

      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命令了。

    2. 输入以下命令,只需要输入//前面的字母即可,//之后是注释,不要输,以后不再说明。

      
      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。
      
  3. 将分区格式化为相应的文件系统,之后进行挂载

    输入以下命令:

    mkfs.ext4 /dev/sda2 //把第二个分区格式化为ext4格式
    mkswap /dev/sda1 //把第一个分区格式化为swap格式mount /dev/sda2 /mnt //把第二个分区挂载到/mnt下面
    swapon /dev/sda1 //激活swap分区
    
  4. 开始安装crux

    输入命令

    setup
    选择yes继续
    选择1 Install CRUX 3.0
    回车 //叫你输入crux的主分区,我们之前已经挂载到了/mnt下了,所以回车,默认的就好。
    把opt、xorg也选上 //按空格可以选择,前面变为*号就代表选上了。其实我们可以不用到opt和xorg里面的东西,至多我们会用到opt里面的grub2这个包。不过我贪图方便,把它全选了。如果一开始不选也可以,之后可以挂载光盘文件,通过pkgadd命令来添加这些包。常见crux安装手册。
    接下来,按照默认的就好。一直到Install completed successfully。按回车就可以了。
    
  5. 进入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
    
  6. 修改root的密码

    输入命令

    passwd
    

    进行修改root的密码,这个密码以后登陆要用到

  7. 修改/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将该文件保存

    修改结果如下图:

  8. 修改/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的第九页来配置一下。

  9. 修改/etc/resolv.conf

      输入命令:

    vim /etc/resolv.conf
    

      我的dns为222.201.130.30和222.201.130.33,所以改成如下

  10. 编译内核

      输入以下命令

    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就可以了。

  11. 配置lilo

      输入命令:

    vim /etc/lilo.conf
    

      修改lilo.conf文件。把#DEVICE#改成sda,把#ROOT_DEVICE#改成sda2。在里面你可以看到,image是指向我们改成编译内核后复制过来的vmlinuz。   输入命令:

    lilo
    
  12. 重启并测试

    输入命令: reboot

    等待片刻,它将自动重启,之后输入用户名,密码之后就可以进入系统了。
    进入新系统,测试一下网络, 输入命令:ping www.baidu.com

    如果通了,则大功告成,不行,ping 一下网关,通了,那说明网关可达,ping不通百度是dns没设置对。   

    如果提示unreachable之类的,输入命令: ifconfig ,看看是不是有eth0,如果仅仅有lo,很可能是你网卡驱动没装好或网络配置错误。

Mikzone