VMWare+MagicLinux编译2.6.9成功

       不知道怎么搞的, 以前在Redhat下从来没有成功过, 都是在一切顺利的情况下完成,但是一重启就不能启动。这次在MagicLinux下很很顺利,一次成功。其中根据pppoe-server的需要对内核做了些更改。

     主要步骤:
    make oldconfig         #这一步我不知道有没有必要
   make menuconfig 

  #然后是把旧的.config load进来,再到Networking Options中把ppp的大部份改成内核,当然,对我来说最重要的是pppoe-server,顺便把802.1Q协议也编进内核了,再把device --> char device中把HDLC改为内核模式(UNIX98_PTY在这里默认就是内核模式的)---之前我想不通为什么要这样做,后来查看了rp-pppoe3.6,发现pppoe.c里面有这么一段:

#ifdef HAVE_N_HDLC
 if (conn.synchronous) {
     if (ioctl(0, TIOCSETD, &disc) < 0) {
  printErr("Unable to set line discipline to N_HDLC.  Make sure your kernel supports the N_HDLC line discipline, or do not use the SYNCHRONOUS option.  Quitting.");
  exit(EXIT_FAILURE);
     } else {
  syslog(LOG_INFO,
         "Changed pty line discipline to N_HDLC for synchronous mode");
     }
     /* There is a bug in Linux's select which returns a descriptor
      * as readable if N_HDLC line discipline is on, even if
      * it isn't really readable.  This return happens only when
      * select() times out.  To avoid blocking forever in read(),
      * make descriptor 0 non-blocking */
     flags = fcntl(0, F_GETFL);
     if (flags < 0) fatalSys("fcntl(F_GETFL)");
     if (fcntl(0, F_SETFL, (long) flags | O_NONBLOCK) < 0) {
  fatalSys("fcntl(F_SETFL)");
     }
 }
#endif


下面再来
make
make install
重启后,菜单里就多了个2.6.9的选项,进去就可以了。但是,按照这样的步骤在RAS4下就是失败,郁闷!
(如果还要安装新模块的话,应该要
     #make module (编译选择的模块)
  #make module-install (将编译后的模块转移到系统标准位置)
)

下面是做pppoe-server时的记录:

rpm -qa | grep "ppp"
把原有的ppp和rp-pppoe包卸载掉 rpm  -e pppxxxxxxx,(为了保险,我同时还再次搜索了下pppoe-server,发现还有的话就杀无赦!)
把下载回来的pppd2.4.4和rp-pppoe3.6放在同一目录下,解压。
进入pppd.2.4.4的目录
./configure
make
make install
chmod u+s /usr/local/sbin/pppd
进入rp-pppoe目录
./configure --prefix=/usr/local --enable-plugin=../../ppp-2.4.4
make
make install
然后把生成的plugins放到/etc/ppp/plugins下
cp /usr/local/lib/pppd/2.4.4/* /etc/ppp/plugins/
修改pppoe-server-options,大致上为
auth
require-chap                           #如果把这句注释掉,那么就任何用户和密码都可以登陆
default-mru
default-asyncmap
lcp-echo-interval 60
lcp-echo-failure 5
ms-dns 192.168.0.2
ms-dns 61.132.90.92
noipdefault
noipx
nodefaultroute
noproxyarp
noktune
10.0.0.1:10.0.0.200
netmask 255.255.255.255
logfile /var/log/pppoe-server.log

我的options是这样的
lock
crtscts
nobsdcomp
nodeflate
nopcomp


如果没有chap-secrets的话,cp pap-secrets chap-secrets,同时确保pap-secrets中没有其它数据
chap-secrets内容如下:
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test  *   1234  *
这时运行
pppoe-server -k -I eth0 -L 192.168.1.123 -R 10.0.0.1 -N 128
就可以了。

为了证实是在内核模式下运行的pppoe-server,我修改了pppoe-server.c代码,增加了一点显示
#ifdef HAVE_LINUX_KERNEL_PPPOE
    printf("Run in LINUX_KERNEL_PPPOE MODE/n");
    case 'k':
        UseLinuxKernelModePPPoE = 1;
        printf("Thie UseLinuxKernelModePPPoE value is:%d/n",UseLinuxKernelModePPPoE);
        break;
#endif
(重新编译rp-pppoe)
这样,如果是成功把pppoe编译进内核了,那么运行pppoe-serverr时,会显示
Run in LINUX_KERNEL_PPPOE MODE
Thie UseLinuxKernelModePPPoE value is 1
我这里的确是显示了(不过想不通我的代码只让它显示一次,但是它却显示了两次),说明内核编译的确是成功了。

附带网上找到的一点小资料,以便日后编译SCSI硬盘的时候可能用得上
1、在升级内核前,你需要知道自己机器上的硬件来安装合适的模块。查看硬件的命令有:
         lspci 列出所有的 pci 设备。
       dmesg 也能给出很多有用的信息。

2、其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。
  配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make menuconfig后离开时选择保存。
  
  这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。
  还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。
  
  sh-2.05a# /sbin/lspci
  00:00.0 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
  00:00.1 Host bridge: ServerWorks CNB20LE Host Bridge (rev 05)
  00:02.0 PCI bridge: Intel Corp. 80960RP [i960 RP Microprocessor/Bridge] (rev 01)
  00:02.1 I2O: Intel Corp. 80960RP [i960RP Microprocessor] (rev 01)
  00:04.0 Ethernet controller: 3Com Corporation 3c985 1000BaseSX (SX/TX) (rev 01)
  00:08.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03)
  00:0e.0 VGA compatible controller: ATI Technologies Inc 3D Rage IIC (rev 7a)
  00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 4f)
  00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller
  02:04.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 05)
  02:05.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 05)
  03:02.0 PCI bridge: Intel Corp. 80960RM [i960RM Bridge] (rev 01)
  03:08.0 Ethernet controller: Intel Corp. 82557/8/9 [Ethernet Pro 100] (rev 08)
  
  你只要把你pci上的东西全部选择对了。 剩下就用默认的就可以了


 

    ps:下午要张贴文章的时候发现CSDNBlog又不能用了,faint,似乎不是第一次,经常有这样的事。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值