红联Linux门户
Linux帮助

SPARC中安装Linux系统

发布时间:2006-02-03 10:04:53来源:红联作者:天使
部门机器升级,淘汰下来一批比较古老的机器,其中有一些ultra系列的sparc机型,64M内存,2.1G硬盘, solaris 9已经表示不支持64m内存了,装solaris 8 又实在懒得一一去打patch,何况,那么小的硬盘,装完了solaris 8,已经没有空间可做服务了,solaris 当工作站使用起来不如linux方便。当初使用gentoo的时候,曾经看过它有支持相当多的版本,比如alpha,x86(这个最常用了), amd64,sparc。。。恩,sparc,就是它了。

  访问gentoo官方主页,http://www.gentoo.org。最新的2005.0版本正好刚刚释放出来,看来,这次不光是测试sparc下装linux,而且也是测试gentoo新版本的好机会呢。在站点上查阅了一下,官方列出的最低要求:

Sparc 系统 (等一下给出)
CPU 只支持 sparc64 CPU
内存 64 MB
磁盘 1.5 GB (不含交换分区)
交换分区 至少 256 MB

  (注意:以上的交换分区大小,事实上可以缩减成128M,由于担心硬盘不够,我在安装的时候尝试性地只使用了128m交换分区,最后证实是可以胜利安装完成的。)

  那么,gentoo支持的sparc系统到底包含sun的哪些系列呢??

  o UltraSPARC Sbus based workstations: Ultra1, Ultra2, Ultra1 Creator, Ultra2 Creator
  o UltraSPARC Sbus based servers: Netra i, Enterprise 1, 2, 150
  o UltraSPARC Sbus based large servers: Enterprise 3000, 3500, 4000, 4500, 5000, 6000, 6500, 10000
  o UltraSPARC PCI based board computers: SPARCengine CP1400(1,3), CP1500(1)
  o UltraSPARC PCI based workstations: Ultra30, UltraAXe, UltraAXi, UltraAXmp, Ultra5, Ultra10, Ultra60, Ultra80, SunBlade 100, SunBlade 1000
  o UltraSPARC PCI based servers: Netra X1(2), Netra T series(3), Fire V100, Fire V120, Enterprise 250, 450

  查看上表,我们的Ultra1正好还名列其中。。。那好,就让大家跟随天缘一起进入gentoo的sparc之旅吧。

  首先是下载2005.0的gentoo光盘,去http://www.gentoo.org/main/en/mirrors.xml 看看,恩,n多的站点。就近找找吧。根据我的测试,在http://mirror.gentoo.gr.jp/ 的下载速度较为理想。

  Gentoo的启动光盘分为2种,一种是只有50m左右的mini盘,只起光盘启动和基本工具的作用;另外一种称为universal,自带了stage1,stage3这些程序包。在普通情形下,如果网络环境较好,那么可以选择下mini盘,然后以依赖网络下载即时编译的方式榨取最高的性能,但是这里是给老机器作新嫁妆,因此就用universal光盘好了。

  在http: //mirror.gentoo.gr.jp/releases/sparc/2005.0/sparc64/installcd/install-sparc64-universal-2005.0.iso 这里,下载了光盘镜象,接着用 http://mirror.gentoo.gr.jp/releases/sparc/2005.0/sparc64/installcd/install-sparc64-universal-2005.0.iso.md5 提供的md5码进行光盘校验,看看是不是下载得正确,之后就可以进行刻盘了。在进行md5校验的时候,在linux等操作系统下可以用md5sum命令,而在win下可以使用winmd5等工具。在天缘第一次下载的时候,是用ie直接下载,结果出现了校验码不吻合的情形,后来用下载工具进行下载才正常,请各位留意,否则用有错误的盘进行后续操作会相当困绕的。

  恩,光盘刻录好后,就可以丢到光驱里了。 重新启动ultra 1 ,狂按stop+A 键,直到出现ok提示符号后,输入

  boot cdrom

  之后出现一个boot提示符号

  // Welcome to Gentoo SPARC Linux //
  //     Version 2005.0     //
  boot:

  在此直接回车,会给一个提示,告诉让输入gentoo-2.4启动,或者gentoo-2.4-smp 以支持多cpu,对于ultra1 这样的老机器,直接输入gentoo-2.4,然后回车吧。

  接下来屏幕一黑,左上方出现一个抱着太阳的小企鹅,开始了启动工作。

  恩。。。等待,等待,大约过了30秒,启动完成,停留在livecd linux#的提示符号处,至此,光盘启动完成,我们可以开始安装工作了。

  对unix类操作系统而言,没有网络等于是半个残废,我们还是先把网络配置起来吧。

  首先,看看机器上的网卡认出否?

  #ifconfig -a
  eth0   Link encap:Ethernet HWaddr 08:00:20:82:C4:DF 
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:4278 errors:0 dropped:0 overruns:0 frame:0
     TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:260108 (254.0 Kb) TX bytes:10758 (10.5 Kb)
     Interrupt:64

eth1   Link encap:Ethernet HWaddr 08:00:20:82:C4:DF 
     BROADCAST MULTICAST MTU:1500 Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
     Interrupt:224

lo    Link encap:Local Loopback 
     inet addr:127.0.0.1 Mask:255.0.0.0
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

  恩,看来真挺顺利的,ultra1上带的2块网卡都已经认出了,那么,接下来配置网卡吧。

  在官方的说明上,建议使用netsetup eth0 这样的形式来配置,但天缘在实做的时候,进入选“有线网卡”,“无线网卡”那里,随便选哪一个,之后点ok,都是直接退出?!不管了,还是手工设置吧。

  恩,首先是设置网卡的ip地址,使用ifconfig命令

  ifconfig eth0 broadcast <广播地址> netmask <掩码地址> up

  注意,这里的广播地址是根据掩码地址来算的,用sun的一般都是比较专业的网管了,这些小问题就不用再提了。另外最后的up一定记得加,否则网卡是不处于活跃状态的。

  之后可以ping同段的机器看看,是否已经能够ping得通了??

  恩,现在解决出口的问题,也就是加上一条默认的出口路由,或者说网关

  route add default gw <网关的ip>

  现在,如果您在外网有服务器或者workstation,那么可以尝试着ping看看,或者用links2 来访问看看,如果正常,那么接下来就是加上dns服务器的地址了。

  nano -w /etc/resolv.conf
  之后按照
  nameserver 的格式来添加dns解析地址,比如

  nameserver 202.98.96.68

  nano 是gentoo安装过程中默认使用的编辑工具,很简单好用,和dos下的edit相当类似,关于保存和退出看下面的提示即可,当然,您也可以使用vi (但等一下后面的设置中,由于是chroot到新系统,会默认只有nano编辑器,而且由于我们硬盘相当小,所以尽量选择少安装软件,因此熟悉使用 nano吧)

  好了,之后按 ctrl+x,会提示是否要保存,按y,回车保存成功。现在可以尝试着用links2 命令来访问看看域名解析情形了。

  如果上述配置中出现问题,可以随时使用ifconfig 和route命令来检查设置。

  到此,网络配置完成。如果你跟我一样觉得机房太冷,想在温暖的办公室里边喝茶边安装,那么就把ssh服务启动吧:
  #/etc/init.d/sshd start
  好了,走出冷冷的机房,回到办公室里,边喝茶边进行下面的安装吧。

  Ssh上我们的ultra1,然后继续安装

  现在,开始进行分区,使用fdisk命令
  fdisk /dev/sda

  因为ultra1使用的是scsi硬盘,又挂在第一位置,因此设备编号是sda

  先规划一下分区方案:
  按照官方的说法,

  /分区放最开始,小于2g,/usr 至少2g,/var至少1g,还不算swap和其他所用的,我们可怜的2.1g硬盘看来是不够用了,因为此机器不用来做什么关键服务,只是废物利用,天缘尝试着进行了一种比较简单的分区方式。
  /boot  50M (在做完后,我df看分区的时候,发现此分区只使用了9%,因此即使保留一个backup,也只需要大约20~30M就足够了,各位在实做的时候,此分区30M左右就可以了)
  交换分区 128M
  /    其他所有空间

  注意:对服务器而言,这样的分区方式严格说来是相当不可取的,在硬盘空间足够的情形下,请尽量为记录log,存放数据,存放临时文件的挂载点单独划分区域,这里的做法是因为硬盘太小的权益之计,各位朋友在利用此文安装规划工作用服务器的时候,如果硬盘空间允许,请一定不要按照此划分方式进行。

  接下来,进入交互界面,可以先查看分区
  p
  会列出原来的分区,由于原来装的是solaris 8 ,分区自然是sun格式的,
  接着,用
  d命令,将原来的分区全部删除吧
  输入d,会提示(1-8)
  按照刚才p显示的编号,进行删除

  当所有分区都删除完了后,再次使用p命令,确认已经删除完毕

  接着使用s命令

  出来如下提示:

  Drive type
  ?  auto configure
  0  custom (with hardware detected defaults)
  a  Quantum ProDrive 80S
  b  Quantum ProDrive 105S
  c  CDC Wren IV 94171-344
  d  IBM DPES-31080
  e  IBM DORS-32160
  f  IBM DNES-318350
  g  SEAGATE ST34371
  h  SUN0104
  i  SUN0207
  j  SUN0327
  k  SUN0340
  l  SUN0424
  m  SUN0535
  n  SUN0669
  o  SUN1.0G
  p  SUN1.05
  q  SUN1.3G
  r  SUN2.1G
  s  IOMEGA Jaz

  接着下面提示
  Select type (? for auto, 0 for custom):
  在这里,选择?或者r都可以,不用象官方说明上一样用0自己设置(因为等一下我们会删除掉分区来手工分的)

  恩,之后系统会自动分配完成,然后p看一下,生成了3个分区
  接着,用d命令,将第1,2个分区删除掉,只保留第3个分区(必须保留哦)
  Command (m for help): d
  Partition number (1-3): 1

  Command (m for help): d
  Partition number (1-3): 2

  请用p查看,确认有且只有下面一行:
  /dev/sda3       0   2733  2077080  5 Whole disk

  好了,现在开始真正地划分我们所要的空间,首先是/boot分区
  使用n命令

  Command (m for help): n
  Partition number (1-8): 1
  First cylinder (0-8635): (直接回车)
  Last cylinder or +size or +sizeM or +sizeK (0-8635, default 8635): +50M

  注意,如上面提示的,这里其实用+30M就可以了

  接下来是swap交换分区

  Command (m for help): n
  Partition number (1-8): 2
  First cylinder (64-8635): (输入64)
  Last cylinder or +size or +sizeM or +sizeK (0-8635, default 8635): +128M

  接着用t命令来修改此分区为swap格式

  Command (m for help): t
  Partition number (1-8): 2 (这里我们是要把第2个分区设置为swap,所以是2)
  Hex code (type L to list codes): L (查看一下相应分区的代码)

   0 Empty      4 SunOS usr    7 SunOS var    83 Linux native  
   1 Boot      5 Whole disk    8 SunOS home   8e Linux LVM   
   2 SunOS root   6 SunOS stand   82 Linux swap   fd Linux raid auto
   3 SunOS swap  
  Hex code (type L to list codes): 82 (按照上面的提示,82表示linux的swap分区,所以输入82)
  Changed system type of partition 2 to 82 (Linux swap)

  最后,划分最大的/分区

  Command (m for help): n
  Partition number (1-8): 4
  First cylinder (228-2733): 228
  Last cylinder or +size or +sizeM or +sizeK (228-2733, default 2733): (直接回车)
  Using default value 2733

  到此,划分完毕,用p命令看看
  Command (m for help): p

  Disk /dev/sda (Sun disk label): 19 heads, 80 sectors, 2733 cylinders
  Units = cylinders of 1520 * 512 bytes

  Device Flag  Start    End  Blocks  Id System
  /dev/sda1       0    64   48640  83 Linux native
  /dev/sda2 u     64    228  124640  82 Linux swap
  /dev/sda3       0   2733  2077080  5 Whole disk
  /dev/sda4      228   2733  1903800  83 Linux native

  以上的操作,都没有真正写入到分区表里,所以可以随意操作,用m命令可以查看帮助,即使错得一塌糊涂了,也可以直接用q命令在不保存的情形下退出。直到您规划满意了,可以使用w命令写入分区表,至此,分区完成。

  接下来,是格式化分区

  mke2fs /dev/sda1 //将第一分区(boot分区)格式化为ext2格式,这也是linux默认的格式
  mke2fs -j /dev/sda4 //将第四分区(root分区)格式化为ext3格式,记住,由于sparc的特殊性,我们的sda3是whole disk,因此不要习惯性地想着只有3个分区,因此把sda3给格式化掉了。

  创建交换分区

  mkswap /dev/sda2

  现在就可以把交换分区挂上使用了

  swapon /dev/sda2

  烦琐的设置基本完成了,接下来请打起精神来,迎接正式开始安装工作

  首先是mount上我们新系统中的/分区和/boot分区

  mount -t ext3 /dev/sda4 /mnt/gentoo

  在它上面创建一个boot目录,以方便挂上第一分区(/boot分区)

  mkdir /mnt/gentoo/boot

  接着把新系统的boot分区挂上

  mount /dev/sda1 /mnt/gentoo

  挂上后,就开始安装stage包了

  从2005.0版本的gentoo开始,stage包从原来的3种减为了2种,只有stage1和stage3了,关于2者的区别, stage1是一个最小化工具包,安装它后,可以最大程度上的自定义系统设置,而且在编译的时候可以最大程度地针对自己的机器进行优化,缺点则是耗时相当漫长,一般大致需要1周左右的时间才能设置妥当,而stage3则是预先编译好了一些软件包可供使用,当然为了通用性,在编译参数等方面就相对比较保守,优化程度不够。在此,我选择的是stage3,因为硬盘实在太小,而且没必要在ultra1这样的老机器上折腾太多。值得一提的是,在安装前,记得使用 date命令校准时间。

  cd /mnt/gentoo #记得这个目录么?就是未来新系统的根目录
  tar -vxjpf /mnt/cdrom/stages/stage3-sparc64-2005.0.tar.bz2
  这里会把相当多的程序/设置文件cp到相应位置,时间会消耗地比较久,因此远程安装的你可以找点事情先忙乎着。

  恩,copy完了stage3的内容后,接着就是要cp portage包了,portage是gentoo的程序包管理机制,类似redhat的rpm,freebsd的ports方式,它的便利,等一下您就能体会到了。
  tar -vxjf /mnt/cdrom/snapshots/portage-20050303.tar.bz2 -C /mnt/gentoo/usr

  这里也挺久的,所以前面推荐各位远程安装,就可以找点事来先忙着,在完成此步骤后,天缘用df命令查看了一下,/mnt/gentoo空间用去 49%

  然后是把源文件全部cp过去,因为gentoo的即时编译机制,所以在编译其他软件软件包的时候,可能会用到这些代码的

  mkdir /mnt/gentoo/usr/portage/distfiles
  cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/

  这一步也相当漫长的,当完成时,df的结果是/mnt/gentoo用去了65%

  上面的几步是不是让您快睡着了? Ok,久违的动手时间到了

  现在先把新系统中/etc/make.conf的参数改了,简单来说,这个文件设置了gcc编译的时候的参数,以及选用网络安装的时候使用的sync地址和软件包下载地址。

  nano -w /mnt/gentoo/etc/make.conf

  在最后添加以下几行

  MAKEOPTS="j2"
  GENTOO_MIRRORS="http://gentoo.gg3.net/ http://mirror.gentoo.gr.jp/"
  SYNC="rsync://rsync.asia.gentoo.org/gentoo-portage"

  注意,熟悉gcc参数的朋友可能会打算修改CFLAGS,CHOST ,CXXFLAGS的值,但官方文档只建议使用stage1的用户设置,我们使用的是stage3,所以还是保持吧。

  下面,准备进入新操作系统咯

  mount -t proc none /mnt/gentoo/proc
  proc文件系统是内核信息的镜象,可以通过它即时查看到很多内核程序的设置和使用情形,并且还可以即时修改,怎么样?就这一点就够爱死unix系统了,比windows的注册表每次都要重新启动/注销生效方便多了吧。。。

  cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
  将我们刚才设置好的dns解析文件cp过去

  chroot /mnt/gentoo /bin/bash
  env-update
  source /etc/profile

  以上三句是设置 /mnt/gentoo目录为根目录,并更新系统设置

  接着设置时区,由于天缘使用本地时间,因此
  ln -sf /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
  把本地时间设置为重庆时间,顺便把rc.conf里的时间设置也修改掉
  nano -w /etc/rc.conf
  修改
  CLOCK="UTC"
  为
  CLOCK="local"

  接下来,就是配置内核了,关于配置内核的文章到处有,这里我简单提一下关键和不同的地方吧

  首先是下载内核代码

  emerge sparc-sources

  之后就会自动下载并且安装代码到/usr/src下,我写此文的时候,内核版本是2.4.29,并做好一个/usr/src/linux的连接

  接着就是编译内核了
  cd /usr/src/linux
  make menuconfig

  恩,大体上与在x86上编译没什么区别,只把需要特别留意需要开启的地方写出来吧

  Code maturity level options --->
   
Prompt for development and/or incomplete code/drivers
  //开启扩展代码的支持,否则有的选项根本看不到呢

  File systems --->
   
Virtual memory file system support (former shm fs)
   <*> Ext3 journalling file system support
   <*> Second extended fs support
   
/proc file system support
   
/dev file system support (EXPERIMENTAL)
   [ ]  Automatically mount at boot
  //注意,依照官方的文档,是需要选自动mount的,但是这里我在选择了/dev后,重新启动的时候报告了错误,即使我emerge devfsd后依然如此,因此我只有把 [ ]  Automatically mount at boot去掉,这样的话开机会提示一个警告信息,但是使用上无碍,还请其他朋友指点此困惑。

  Console drivers --->
  Frame-buffer support --->
   
SBUS and UPA framebuffers      
   
Creator/Creator3D support
   
CGsix (GX,TurboGX) support
  //上面是对SBUS/UPA的支持,记得选上

  Misc Linux/SPARC drivers --->
   
 /dev/openprom device support
  上面是对OBP的支持

 SCSI support --->
  SCSI low-level drivers --->
   <*> Sparc ESP Scsi Driver
   <*> PTI Qlogic, ISP Driver
   <*> SYM53C8XX Version 2 SCSI support

  //scsi卡支持,上面的几种各自针对特定的型号,为了config文件的通用性,我是都选上了的

  Network device support --->
   Ethernet (10 or 100MBit) --->
  <*> Sun LANCE support          
  <*> Sun Happy Meal 10/100baseT support
  <*> DECchip Tulip (dc21x4x) PCI support
   Ethernet (1000Mbit) --->
  <*> Broadcom Tigon3 support

  //各种型号的网卡支持的,也是为了通用性,我都选了,其实ultra1上根本没1000m卡的,天缘这里的sun fire上才有吧。

  注意,最好只把重要的编译进核心,而把其他的相关部分编译成模块就行了,确保内核文件别超过2.5M为好,天缘在文章最后会给出我使用的.config文件,各位如果想偷懒保存下来后,直接使用就行了。

  恩,保存后退出,接着就是内核编译了。。。
  make dep && make clean vmlinux image modules modules_install
  之后。。。可以忙乎自己的事情去了,天缘是晚上编译,第2天早晨去看的结果,具体完成时间也办法告诉大家,估计在30分钟到2个小时吧。

  好,假设您跟我一样够好运气,顺利编译完成了(此时/空间用了大致78%左右,呵呵)
  接着就是把核心文件cp到/boot分区去

  cp arch/sparc64/boot/image /boot/kernel-2.4.9
  cp System.map /boot
  配置文件也一起cp一份丢过去吧
  cp .config /boot/config-2.4.29 /boot

  到这里,内核编译就完成了,接着就是最后的配置系统设置了

  首先是设置/etc/fstab 文件,linux系统后,是根据这个文件来加载分区的

  我的设置如下(注释已去掉):

  ultra1 root # cat /etc/fstab
  /dev/sda1      /boot  ext2  defaults,noatime  1 2
  #加载/boot分区,使用ext2格式,并且不记录对文件的访问时间(减少写入次数)
  /dev/sda4      /    ext3  noatime     0 1
  #加载/分区,ext3格式,不记录对文件的访问时间

  /dev/sda2      none  swap  sw    0 0
  #交换分区
  /dev/cdroms/cdrom0  /mnt/cdrom iso9660  noauto,user  0 0
  #cdrom加载,非自动加载
  #/dev/fd0    /mnt/floppy  auto   noauto      0 0
  #软驱,由于我编译内核的时候去掉了对软驱的支持,所以就把这行屏蔽了

  none       /proc    proc   defaults     0 0
  #proc分区加载,它的作用前面提到了

  none       /dev/shm  tmpfs   defaults     0 0
  #用内存+硬盘虚拟出一块区域来存放文件,tmpfs格式
  none       /proc/openprom openpromfs  defaults  0 0
  #这行是sparc系统必须添加的

  #此处我没有添加usb的支持,因为我内核里禁止了usb的相关模块

  以上行中,都是defaults,而不是default,天缘自己错过几次了,提醒各位留心哦。

  接下来设置主机名
  echo ultra1 > /etc/hostname

  接着设置本域的名字
  echo xx.edu.cn > /etc/dnsdomainname

  如果用nis的,还要设置nis domain
  echo nis.xxx > /etc/nisdomainname

  把domainname添加到开机启动里
  rc-update add domainname default

  rc-update 一般常用的有 add ,del, -s 几个选项,可以对/etc/init.d/下存在的脚本选择是否加入到启动阶段(boot或者default里,boot部分比default阶段早)

  然后是设置网络

  注意提醒一点,以stage3方式安装的时候,已经安装了ifconfig命令,而如果是stage1,则需要下载emerge net-tools ,否则启动的时候会因为没有ifconfig命令而无法使用网络哦
  nano -w /etc/conf.d/net

  该文件的说明非常清晰,天缘使用的是固定ip方式,所以配置如下
  iface_eth0="我的ip地址 broadcast 广播地址 netmask 掩码"
  gateway="eth0/网关ip"

  接着同样用rc-update命令让开机时候就执行启动网卡的脚本
  rc-update add net.eth0 default

  然后通过修改/etc/hosts改主机名
  nano -w /etc/hosts
  127.0.0.1 localhost ultra1

  修改安全设置,允许root直接登陆
  nano -w /etc/securetty
  echo ‘tts/0’ >> /etc/securetty

  最后的收尾工作就是把系统日志记录工具和crond服务,档案索引服务工具装上了
  安装日志工具
  emerge syslog-ng
  rc-update add syslog-ng default

  安装cron服务
  emerge vixie-cron
  rc-update add vixie-cron default

  安装档案索引服务
  emerge slocate

  最后一步,就是安装引导的开机程序,silo了,它的全名是Sparc Imporved boot Loader,和lilo或者grub的作用很象
  emerge silo

  然后设置选项,我是按照grub的习惯,将配置文件放到了/boot区
  nano -w /boot/silo.conf

  # Example of how can be silo.conf set up
  partition = 1 #这里是/boot分区的分区号
  root = /dev/sda4 #这里是/分区的位置
  timeout = 10 #等待时间,注意以0.1秒为单位的呢
  #password = __#密码,这里没要
  #restricted
  image = /boot/kernel-2.4.29 #引导文件的位置
    label = linux #标题名

  接着让配置生效
  /sbin/silo -C /boot/silo.conf

  最后退出chroot环境,准备重新启动

  exit
  cd /
  sync
  umount /mnt/gentoo/boot /mnt/gentoo/proc /mnt/gentoo
  reboot

  激动人心的时刻终于来到了,如果您一路无误,那么就可以成功地启动服务器了,如果有误,那么请根据提示,然后用光盘启动后,进入chroot环境再进行修改。

  后记:根据对linux对sparc系统支持地查看,发现对fire等高端系列,对t3存储,以及对lvc的支持都已经有不错的效果了,各位网管朋友如果某些时候需要针对linux下的一些服务,可以尝试着在中端服务器上调试看看。
文章评论

共有 2 条评论

  1. sailing0419 于 2010-04-07 17:33:48发表:

    全文

  2. rnjnfns8 于 2010-04-04 04:21:43发表:

    看了一半,实在看不下去了!收藏先!!以后慢慢研究!!!