电脑的启动流程

来源:互联网 发布:python get 编辑:程序博客网 时间:2024/04/29 07:34

如果对使用电脑遇到的问题做一个统计的话,我想装系统一定会是前十。笔者使用电脑这么多年,风风雨雨中自己或帮别人装了各种系统几十上百次。不管操作系统怎么更新换代,不管是DOS、Windows、Linux,不管是图形界面还是命令行界面,大家都面临一个基础性问题——装系统。

所以,我决定在此将装系统的那些事儿汇总一下,不管你是安装什么系统或遇到什么问题或解决了问题但想了解原因,相信在这里大多能找到答案。

都说“授人以鱼,不如授人以渔”,在开始讲诉各种系统的安装方式前,我先要讲一下电脑的启动流程

电脑的启动流程

当我们打开电脑电源,此时主板通电,ROM里的BIOS运行(此时控制权还在BIOS,CPU尚未通电),首先BIOS会对整个电脑的硬件进行自检,这个过程在早期的windows 95和windows 98中是可以看到的(如下图),现在XP后已经默认不显示了。硬件自检的内容主要是看CPU、显卡、内存等是否安装好或有松动等等。
在自检过程中,若出现问题,电脑会报出指定的各种“嘀”声音,如内存没插好一般会出现“嘀…嘀…”的连续有间隔的长音,不同的主板对不同的错误定义的声音是不同的,有经验的电脑维修者可依据此判断电脑的问题所在,有兴趣的可以点一下这里看一下常见的“嘀”声故障。
若主板上电自检成功,BIOS根据用户指定的启动顺序从软、光、硬盘、U盘或其它存储设备启动,在BIOS进入其他设备启动前,可以进入BIOS选择当前启动的设备,否则BIOS按照默认的顺序选择可以启动的第一个设备启动,不同电脑进入BIOS的方法参考这里。
现在一般的启动设备主要是硬盘、光盘和U盘,其中硬盘的结构最为复杂,下面以硬盘启动为例说明启动过程,光盘和U盘类似。
硬盘,这是正常情况下电脑的启动设备,硬盘的结构如下图左边示意图。硬盘最开始部分为主引导记录区,包括三部分:主引导记录MBR,硬盘分区表DPT,扇区结束标志55AAH。其中主引导记录MBR可以看做一小段用于引导系统跳转的程序;硬盘分区表DPT是用于描述整个硬盘的分区情况,存储的是每个分区的实际跳转地址,硬盘寻址的时候据此跳转到硬盘数据区,一般主引导记录区的硬盘分区表DPT的大小有限,最多只能存储4个主分区记录,主分区记录对应的硬盘数据区叫主分区(图中C区、D区),若要将硬盘分区超过4个,可采用扩展分区,即如下图的方式将一部分引导记录做到硬盘数据区,这时候在硬盘上的分区记录表叫扩展分区表,对应的硬盘数据区叫扩展分区或逻辑分区(图中E区、F区);扇区结束标志为特定的值,检查此项以确认主引导记录区没有被破坏。
接下来电脑将这主引导记录区读到内存RAM中,将控制权交给中央CPU,CPU首先检查扇区结束标志已确认引导记录没有被破坏,接下来执行主引导记录MBR,MBR在分区表DPT或扩展分区表中选择默认的活动分区,再加载活动分区的引导程序进一步完成电脑的启动,如下图右是C为活动分区的示意图。
这里值得注意的是一旦到活动分区的引导程序,这就涉及到不同的操作系统的引导方式,这里稍后再叙述。
当然,这里描述的是一台电脑上装了一个操作系统,且用的是硬盘默认的MBR引导程序的电脑启动流程,在实际流程中很多电脑上装有多个系统,如Win7和win XP,如WIN7和Ubuntu等等,不同的多系统共存方式,它的启动流程都是各不一样的。在上面叙述中,是从默认的活动分区启动的,如何启动不在默认活动分区上的操作系统呢,这个同样是个问题。
要解决这些问题,当然先得从MBR入手,默认的MBR只是跳转到活动分区引导区,它的程序大小是固定的,要想扩展MBR支持多分区启动和从非默认活动分区启动等等高级功能,自然想通过改写MBR来完成,但是就程序大小确定的MBR怎么改写也不能完成这样的高级功能啊,人们想到了一个中立的办法,就是在硬盘数据区划分一块存储高级引导程序,改写默认的MBR先跳转到高级引导程序(Grub,Easyboot等第三方高级引导程序),通过高级引导程序再跳转到各个分区引导程序,如下图是两种引导方式。
这样我们就可以进行多系统引导和从非默认活动分区引导了。
我们再想想,能不能不修改MBR,也实现多系统引导和从非默认活动分区引导,答案当让是可以的了。因为直到进入待引导分区,系统的实际引导工作还没有开始,这时候还可以进行系统引导的重导向。
前面提到分区的引导扇区程序是视操作系统的不同而不同的。这里所述的操作系统主要是windows 2000,XP/7 和 Unbuntu,CentOS。Windows的2000前的系统引导方式可能略有不同,现在已经不需要关心,Linux的引导现在普遍采用Grub,之前的LILO引导程序用的已经不多,这里不作介绍。
一般的引导流程如下图

Windows引导

若待引导分区为Windows系统,引导扇区跳转到Windows自带的高级引导程序ntldr,高级引导程序读取待引导系统列表boot.ini,显示给用户选择,在windows附件中打开命令行,假设当前启动系统为C区,输入如下命令可以查看到ntldr和boot.ini。
cd C:/dir /a

如下图

若选择当前分区系统,则进行加载系统内核,加载硬件初始化,启动操作。若选择其他分区系统,则跳转到对应分区的引导扇区重复选择引导操作。Windows自带的ntldr支持引导Windows系统,若要在Windows下引导Linux系统,需要对ntldr再次跳转到支持Linux启动的高级引导程序如Grub for DOS,这在后面实际案例中会讲解。
另外在windows命令行中输入msconfig,也可以打开查看当前boot.ini的启动内容,如下图

Linux引导

若待引导分区为Linux系统,引导扇区跳转到Grub自带的高级引导程序grldr,高级引导程序读取待引导系统列表menu.lst,显示给用户选择。
若选择当前分区系统,则进行加载系统内核vmlinux,加载硬件初始化initrd.img,启动操作。若选择其他分区系统,则跳转到对应分区的引导扇区重复选择引导操作。
由于笔者写作时采用Windows系统,就不给截图演示了,大家自行摸索吧。

小结一下

自此,电脑的启动流程大概描述清楚,下一节会讲述操作系统的安装原理。
原创,转载请注明来自http://blog.csdn.net/wenzhou1219

作者:wenzhou1219 发表于2013-9-13 19:12:22 原文链接
阅读:59 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

linux下crontab的使用方法

  1. <span style="font-size:14px;">在Linux中任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。  
  2. crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序。  
  3. cron服务是可以根据时间、日期、月份、星期的组合来调度对重复任务执行的守护进程。linux的cron服务是每隔一分钟去读取一次/var/spool/cron,/etc/crontab,/etc/cron.d下面所有的内容。  
  4. crond服务通常被放在/etc/init.d/crond , 这样就可以在系统启动后自动启动crond服务。  
  5. linux中的用户使用crontab命令来配置cron任务.  
  6. crontab在/etc目录下面存在cron.d,cron.daily,cron.weekly,cron.monthly,cron.hourly五个目录和crontab文件。  
  7. cron.d是系统自动定期需要做的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。  
  8. 如果是按小时,按天,按星期,按月的来执行的话,则可以放到相应的目录下面去。  
  9. cron.hourly是每个小时执行一次的任务  
  10. cron.daily是每天执行一次的任务  
  11. cron.weekly是每个星期执行一次的任务  
  12. cron.monthly是每月执行一次的任务  
  13. Linux下的Crontab使用详解  
  14. crontab命令格式:  
  15. crontab [-u user] file  
  16. crontab [-u user] { -e | -l | -r }  
  17. -u 参数的详细说明:  
  18. 如果使用该选项,就是指定了是某个具体用户的crontab文件将被修改。如果不指定该选项,crontab 将默认是当前操作用户的crontab ,也就是执行该crontab命令用户的crontab文件将被修改。  
  19. 注意: 如果使用了su命令再运行crontab命令很可能就会出现混乱的情况,因此使用了su命令时,最好使用-u选项来指定究竟是哪个用户的crontab文件。  
  20. crontab常规使用方式 :  
  21. crontab [-u user] file   -用指定的文件替代目前的crontab  
  22. crontab [-u user] -l     -列出用户目前的crontab  
  23. crontab [-u user] -e     -编辑用户目前的crontab  
  24. crontab [-u user] -r     -删除某个用户的crontab  
  25. 特别注意: 如果用crontab -r  就删除了所有的定时任务(需要特别小心)  
  26. crontab是通过读取一个crontab文件来工作,系统主配置文件是crontab, /etc/crontab 文件中的每一行都代表一项任务,crontab文件有六个域。  
  27. crontab文件的格式是:M H D m d cmd  
  28. 每个域之间用空格或者Tab键分开,前五个域都是整数或者*,基本格式如下(括号里面是取值范围):  
  29. # Use the hash sign to prefix a comment  
  30. # +—————- minute (0 – 59)  
  31. # |  +————- hour (0 – 23)  
  32. # |  |  +———- day of month (1 – 31)  
  33. # |  |  |  +——- month (1 – 12)  
  34. # |  |  |  |  +—- day of week (0 – 7) (Sunday=0 or 7)  
  35. # |  |  |  |  |  
  36. f1 f2 f3 f4 f5  command  
  37. 分 时 日 月 周 命令  
  38. f1 — 分钟,从 0 到 59 之间的任何整数  
  39. f2 — 小时,从 0 到 23 之间的任何整数  
  40. f3 — 日期,从 1 到 31 之间的任何整数(如果指定了月份,必须是该月份的有效日期)  
  41. f4 — 月份,从 1 到 12 之间的任何整数(或使用月份的英文简写如 jan、feb 等等)  
  42. f5 — 星期,从 0 到 7 之间的任何整数,这里的 0 或 7 代表星期日(或使用星期的英文简写如 sun、mon 等等)  
  43. command — 表示要执行的任务(可以使运行linux系统命令,也可以是执行你自行编写的linux脚本命令。)  
  44. * 的作用:  
  45. 星号(*)可以用来代表所有有效的值。比如:月份值中的星号,表示在满足其它制约条件后每月都执行该命令。  
  46. 当 f1 为 * 时表示每分钟都要执行 command,f2 为 * 时表示每小时都要执行任务,其余类推  
  47. 整数间的短线(-)的作用 :  
  48. 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推  
  49. 整数间的正斜线(/)可以用来指定间隔频率:  
  50. 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推  
  51. 整数间的逗号(,)的作用 :  
  52. 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推  
  53. crontab的常用例子 :  
  54. #每天早上7点执行一次 /bin/ls :  
  55. 0 7 * * * /bin/ls  
  56. #每天早上6点10分  
  57. 10 6 * * * date  
  58. #每两个小时  
  59. 0 */2 * * * date  
  60. #晚上11点到早上8点之间每两个小时,早上8点  
  61. 0 23-7/2,8 * * * date  
  62. #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点  
  63. 0 11 4 * mon-wed date  
  64. #1月份日早上4点  
  65. 0 4 1 jan * date  
  66. linux系统的WEB服务器管理员经常用到crontab的例子 :  
  67. #在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :  
  68. 0 6-12/3 * 12 * /usr/bin/backup  
  69. #每晚的21:30重启apache。  
  70. 30 21 * * * /etc/init.d/apache2 restart  
  71. #每月1、10、22日的4 : 45重启apache  
  72. 45 4 1,10,22 * * /etc/init.d/apache2 restart  
  73. #每周六、周日的1 : 10重启apache。  
  74. 10 1 * * 6,0 /etc/init.d/apache2 restart  
  75. #在每天18 : 00至23 : 00之间每隔30分钟重启apache。  
  76. 0,30 18-23 * * * /etc/init.d/apache2 restart  
  77. #每星期六的11 : 00 pm重启apache。  
  78. 0 23 * * 6 /etc/init.d/apache2 restart  
  79. #每一小时重启apache  
  80. * */1 * * * /etc/init.d/apache2 restart  
  81. #晚上11点到早上7点之间,每隔一小时重启apache  
  82. * 23-7/1 * * * /etc/init.d/apache2 restart  
  83. #每月的4号与每周一到周三的11点重启apache  
  84. 0 11 4 * mon-wed /etc/init.d/apache2 restart  
  85. #1月1日的4点重启apache  
  86. 0 4 1 jan * /etc/init.d/apache2 restart  
作者:cd520yy 发表于2013-9-13 18:45:33 原文链接
阅读:33 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

linux系统服务基础

服务分为本地服务和网络服务

配置较多的是为了网络服务

常见的网络服务有:

  • 邮件服务Mail
  • 文件共享:FTP、SMB、HTTP
  • 网游
  • 域名服务DNS

/etc/rc.d/init.d/下保存着许多服务对应的脚本

service xxxx start|stop|restart|status

在/etc/rc%d.d/下保存着许多链接 链接到之前所说的脚本

文件名的格式如下[k|p]xxnnnnnn

]例如p03network表示在第三个启动network服务 如果k开头 则表示不启动此服务

可以通过chkconfig命令进行设置服务开机是否自动运行

chkconfig network [on|off]

chkconfig –list

还有另一部分XINETD进行控制的服务

其控制一些简单的不常用的服务

区别于service服务这些服务一般不常驻在后台

对于这些服务请求,都由xinetd来代理

CentOS 6默认不会安装xinetd

作者:lfj200411 发表于2013-9-13 16:48:29 原文链接
阅读:32 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

linux的瑞士军刀:lsof/fuser/pkill/pgrep

lsof命令详解:lsof命令的原始功能是列出打开的文件的进程,但LINUX下,所有的设备都是以文件的行式存在的,所以,lsof的功能很强大.一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”

sof指令的用法如下:

lsof abc.txt 显示开启文件abc.txt的进程

lsof -i :22 知道22端口现在运行什么程序

lsof -c abc 显示abc进程现在打开的文件

lsof -g gid 显示归属gid的进程情况

lsof +d /usr/local/ 显示目录下被进程开启的文件

lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长

lsof -d 4 显示使用fd为4的进程


lsof -i 用以显示符合条件的进程情况

语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]

46 –> IPv4 or IPv6

protocol –> TCP or UDP

hostname –> Internet host name

hostaddr –> IPv4位置

service –> /etc/service中的 service name (可以不只一个)

port –> 端口号 (可以不只一个)

例子: TCP:25 – TCP and port 25

@1.2.3.4 – Internet IPv4 host address 1.2.3.4

tcp@www.linuxidc.com:ftp – TCP protocol hosthaha.ks.edu.tw service name:ftp

lsof -n 不将IP转换为hostname,缺省是不加上-n参数

例子: lsof -i tcp@www.linuxidc.com:ftp -n

lsof -p 12 看进程号为12的进程打开了哪些文件

lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新

-r,lsof会永远不断的执行,直到收到中断信号

+r,lsof会一直执行,直到没有档案被显示

例子:不断查看目前ftp连接的情况:lsof -i tcp@www.linuxidc.com:ftp -r

lsof -s 列出打开文件的大小,如果没有大小,则留下空白

lsof -u username 以UID,列出打开的文件

fuser 命令

用途
使用文件或文件结构识别进程。

语法
fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]文件 …

描述
此 fuser 命令列出了本地进程的进程号,那些本地进程使用File 参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。

每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。

c 将此文件作为当前目录使用。
e 将此文件作为程序的可执行对象使用。
r 将此文件作为根目录使用。
s 将此文件作为共享库(或其它可装载对象)使用。


进程号被写入标准输出(在进程号之间有空格的行中)。一个换行符被写入标准错误(在每个文件操作数的最后一个输出之后)。其他所有输出被写入标准错误。

此 fuser 命令不会检测有 mmap 区域的进程,其中相关的文件描述符已从此被关闭。

标志

-c 包含 File的文件系统中关于任何打开的文件的报告。
-d 暗示使用了 -c 和 -x 标志。关于任何与文件系统(自父目录删除的)无链接的打开文件的报告。当与 -V 标志一起使用时,它也会报告被删除文件的节点号和大小。
-f 仅对文件的打开实例报告。
-k 将 SIGKILL 信号发送到每个本地进程。仅有 root 用户能终止另一用户的进程。
-u 为进程号后圆括号中的本地进程提供登录名。
-V 提供详细输出。
-x 与 -c 或 -f 连用,报告除标准 fuser 输出以外的可执行的和可载入的对象。

示例
要列出使用 /etc/passwd 文件的本地进程的进程号,请输入:

fuser /etc/passwd要列出使用 /etc/filesystems 文件的进程的进程号和用户登录名,请输入:

fuser -u /etc/filesystems要终止使用给定文件系统的所有进程,请输入:

fuser -k -x -u -c /dev/hd1 或者

fuser -kxuc /home任一命令都列出了进程号和用户名,然后终止每个正在使用 /dev/hd1 (/home) 文件系统的进程。仅有 root 用户能终止属于另一用户的进程。如果您正在试图卸下 /dev/hd1 文件系统,而一个正在访问 /dev/hd1 文件系统的进程不允许这样,您可能希望使用此命令。

要列出正在使用已从给定文件系统删除的文件的全部进程,请输入:

fuser -d /usr文件

/dev/kmem 用于系统映像。
/dev/mem 也用于系统映像

名称
pgrep, pkill – 查找或者发信号给进程通过名称和其它属性。

语法
pgrep [-flvx] [-n | -o] [-d delim] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]

pkill [-signal] [-fvx] [-n | -o] [-P ppidlist] [-g pgrplist] [-s sidlist] [-u euidlist] [-U uidlist] [-G gidlist] [-J projidlist] [-t termlist] [-T taskidlist] [-c ctidlist] [-z zoneidlist] [pattern]


说明
  pgrep程序检查在系统的中活动进程,报告进程属性匹配命令行上指定条件的进程的ID。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。例如,
  pgrep -G other,daemon
  匹配真实组ID是other或者是daemon的进程。如果多个条件被指派,这些匹配条件按逻辑与”AND”规则运算。例如,
  pgrep -G other,daemon -U root,daemon
  匹配进程它的属性是:
  (真实的组ID是other或者是daemon) 与 (真实的用户ID是root或者是daemon)
  pkill函数和pgrep相同,除了匹配的进程被信号通知就像用kill(1)替代了pgrep的进程ID的输出。一个信号名称或者数字可以作为pkill的第一个命令行选项。

选项
  支持下面的选项:The following options are supported:
  -c ctidlist 仅匹配列表中列出的ID的进程。
  -d delim 指定每一个匹配的进程ID之间分割字符串。如果没有 -d 选项指定,默认的是新行字符。-d 选项仅在pgrep命令中有效。
  -f正则表达式模式将执行与完全进程参数字符串 (从/proc/nnnnn/psinfo文件的pr_psargs字段获得)匹配。如果没有 -f 选项,表达式仅对执行文件名称(从/proc/nnnnn/psinfo文件pr_fname字段获得)匹配。
  -g pgrplist仅匹配进程组ID在给定列表中的进程。如果组0包括在列表中,这个被解释为pgrep或者pkill进程的组ID。
  -G gidlist仅匹配真实组ID在给定列表中的进程。每一个组ID可以使用组名称或者数字的组ID指定。
  -J projidlist匹配项目ID在给定列表中的进程。每一个项目ID可以使用项目的名称或者数字项目ID来指定。
  -l长格式输出。输出每一个匹配进程的名称连同进程ID。进程名称从pr_psargs 或者 pr_fname字段获得,依赖于-f选项是否指定。-l选项仅在pgrep命令中有效。
  -n匹配最新(最近生成的)符合所有其它匹配条件的进程。不能和-o选项一起使用。
  -o匹配最旧(最早生成的)符合所有其它匹配条件的进程。不能和-n选项一起使用。
  -P ppidlist 仅匹配给定列表中父进程ID的进程。
  -s sidlist 仅匹配进程会话ID在给定列表中的进程。如果ID 0在列表中,这个解释为pgrep或者pikill进程的会话ID。
  -t termlist 仅匹配与给定列表中终端关联的进程。每一个终端指定为在/dev中终端设备路径名称的后缀。例如term/a 或者 pts/0。
  -T taskidlist 仅匹配在给定列表中任务ID的进程。如果ID 0包括在列表中,这个解释为pgrep或者pikill进程的会话ID。
  -u euidlist 仅匹配有效用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
  -U uidlist 仅匹配真实的用户ID在给定列表中的进程。每个用户ID可以通过一个登录名称或者数字的用户ID指定。
  -v 反向匹配。匹配所有的进程除了符合匹配条件的。
  -x 仅认为进程其参数字符串或者执行文件名称正确匹配规定模式是匹配的进程。模式被认为是准确的当所有在进程参数字符串或者可执行文件名称的字符匹配模式。
  -z zoneidlist 仅匹配区域ID在给定列表中的进程。每一个区域ID可以使用一个区域名称或者一个数字的区域ID指定。这个选项仅在全局区域中执行有效。如果pkill程序用来往其它区域的进程发信号,进城必须宣称{PRIV_PROC_ZONE}特权。
  -signal 指定发往每一个匹配进程的信号。如果没有指定,SIGTERM 是默认的信号。-signal仅在pkill命令中作为第一个选项有效。信号可以是在signal.h中定义的没有SIG前缀的一个符号名字,也可是一个相应的信号数值。

操作

支持如下操作:
pattern
    指定一个扩展正则表达式(Extended Regular Expression (ERE))模式来匹配可执行文件名称或者完整的进程参数字符串。ERE语法的完整描述参看regex(5)。

例子

例子1 获得一个进程ID

获得sendmail的进程ID:

example% pgrep -x -u root sendmail
283

例子2 终止一个进程

终止最近生成的xterm:

example% pkill -n xterm

Exit Status

  如下退出值被返回:

  0 一个或者多个进程被匹配。
  1 没有进程被匹配。
  2 指定了无效的命令行参数。
  3 出现一个致命的错误。

作者:iloveyin 发表于2013-9-13 16:47:02 原文链接
阅读:35 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

Ubuntu离线安装软件包

一.应用场景
a.当我们需要在多台电脑安装同一个软件,并且这个软件很大,下载需要很长时间时
b.需要安装软件的ubuntu不能上网
二.离线安装包的制作
2.1.通过如下指令下载
XXXX软件所需要的deb包
        sudo apt-get -d install XXXXX
执行完上述指令后,XXXX软件的安装包就下载到了/var/cache/apt/archives目录下
2.2.生成依赖关系

1.根目录下新建一个文件夹 
$ 
sudo mkdir offlinePackage
2.将下载的deb包拷贝到上述新建的文件夹下
$ sudo cp -r /var/cache/apt/archives  /offlinePackage
3.修改文件夹的权限,可读可写可执行
$ sudo chmod 777 -R /offlinPackage/
4.建立deb包的依赖关系
$ sudo dpkg-scanpackages /offlinePackage/ /dev/null |gzip >/offlinePackage/Packages.gz
如果出现错误:sudo: dpkg-scanpackages: command not found
则需要安装dpkg-dev工具:
$ sudo apt-get install dpkg-dev
5.将生成的Packages.gz包复制到和deb同目录下
$ sudo cp /offlinePackage/Packages.gz /offlinePackage/archives/Packages.gz

2.3.打包成压缩包,以备后用
        $ tar cvzf offlinePackage.tar.gz offlinePackage/
保存offlinePackage.tar.gz文件到U盘或服务器
三.在另外一台Ubuntu上离线安装
       1.插入U盘或光盘,将offlinePackage.tar.gz复制到根目录下,解压
        $ sudo tar -xvf offlinePackage.tar.gz
       2.将安装包所在和源路径添加到系统源source.list
        $ sudo vi /etc/apt/sources.list
           deb file:///offlinePackage archives/
       然后将所有的其他deb全部注销掉(#)
       注意:我们在添加之前可以先将原来的源备份
        $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.back
       以备以后使用
3. 更新系统源
        $ sudo apt-get update
4.离线安装
        此时,在没有网络的情况下,我们就可以安装我们之间下载的XXXX软件了
        $ sudo apt-get  install XXXXX

注意:

兼容性问题,如果我们制作安装包时,用的是64位的ubuntu,那么该离线包只能在其他64位系统上安装。

有些软件对ubuntu server和ubuntu desktop版也不兼容。总之,在什么系统下制作的离线包,就在什么系统下安装。

作者:NUPTboyZHB 发表于2013-9-13 16:17:08 原文链接
阅读:59 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

OSX: 真的吗?Mac OS X重大漏洞 改时钟获系统最高权限

     9月3日才注意到这个在8月28日刊登在英文网站9月1日在驱动之家的,关于OS
X系统的sudo漏洞没有修补的新闻,今天才有时间成文上传。


       这个sudo漏洞是在2013年2月27日被公布出来的,它的注册号是CVE-2013-1775,
大家可以上网找找,这个漏洞
相继在不同的类Unix系统中被确认,特别是基于开源的操作系统。它影响sudo发布版本中所有从1.6版到1.7.10p6, 从1.8.0到1.8.6p6。从sudo命令的网站上看,它同时在2013年2月27日推出了一个重要的系统更新版本,用来修复这个漏洞,Sudo
version 1.8.6p7 和Sudo
version 1.7.10p7 。
目前来看,OS X 10.7.4和10.8.3的sudo版本都是1.7.4p6,10.6.8是1.7.0。大家可以自己在Terminal终端中运行sudo
-V来查看。

       该新闻中,主要提到的是,该漏洞在OS X 10.6到现在的10.8.4的各个版本都存在,基于Apple的升级策略与微软或者其它厂家的不同,苹果既没有推出及时更新也没有正面回复第三方的询问。

       在各个网友的回复中,普遍存在误解。反方是坚定了自己对Mac系统的鄙视态度,正方是在鉴定苹果系统最安全的基础上对此漏洞采取一带而过忽视的作法,所以吵得还挺热闹。


       新闻就是新闻,总是由不懂行的人道听途说地写出来,既不清晰也不易懂。咱们还是从该漏洞的具体内容开始说说吧:

       首先,这个牵扯到计算机开元世纪(Unix epoch),计算机的时钟是从零开始计数的,Unix系统默认地把时钟0,当作1970年1月1日0时0分0秒(也就是1970:01:01 01:00:00),那么如果电脑时钟计数是10,那么系统就认为是1970年1月1日0时0分10秒。

       再说,sudo的作用主要是提升当前用户的权限,比如可以让一个管理员用root权限来运行命令,众所周知,root在类Unix系统中就是上帝,可以做任何事情,甚至比上帝都全能,能杀掉自己!能够用root权限来执行命令,就意味着完全地控制了这个系统。默认地,在运行sudo的时候,会在Terminal中提示让用户输入密码,正确后,它会生成一个时间戳,再次使用sudo的时候,它会用当前时间和当初生成的那个时间戳比较,如果这个时间没有超出了设定的时间间隔,该间隔默认的是5分钟,那么它不会再次询问用户密码,而是直接运行命令;如果超出,那么需要用户再次输入密码确认。

       其实,即便没有超出时间间隔,也可以使用sudo -k命令来重置时间戳,这样下次在使用sudo,系统会询问密码。在sudo的1.6版本之后,sudo -k命令不是把那个时间戳彻底移除,而是把它设置到电脑开元世纪时间,正是这个举动给骇客以可乘之机。因为在这些版本中,它不管时间戳是不是开元世纪时间,而是依然使用当前时间与之对比,大家可以看到其中的漏洞了吧。只要用户可以把系统时间修改成开元世纪,在5分钟内,可以不用输入用户密码,就可以成功运行sudo命令了。比如sudo
su后就可以切换到root用户,只要不退出Terminal,就可以没有时间限制地完全掌控这个系统。

       要想利用这个漏洞,需要有几个关键条件:

  1. 这个用户曾经成功运行过sudo命令,也就是sudo建立过时间戳,并运行sudo -k,这样让它归零-不归零的话,可不好猜该用户上一次什么时候运行的sudo命令-如果谁能够知道方法那么sudo的漏洞可就更大了,这是题外话。不过还好了,sudo -k运行的时候不需要密码的。
  2. 其次是,骇客需要更改系统时间,如果通过GUI的System Preferences,系统当然会再次询问用户密码才能变更系统时间;不过,systemsetup命令可以在不用提供密码的情况下可以变更系统时间(这一点在我的10.8.4中需要使用sudo才能变更系统时间设定,我要在其它系统中尝试在确定一下
    systemsetup -setusingnetworktime off
    systemsetup -setdate 01:01:1970
    systemsetup -settime 00:05
    注:上面的命令只用于举例,并不用于真正的入侵行为
  3. 因为1的原因,也就暗含了另外一个条件,也就是这个用户必须被准许运行sudo命令,默认情况下,OS X系统的管理员帐户都被准许执行,除非特殊设定.
  4. 需要可以在这台机器上操作,也就是这台机器已经被满足1和3条件的用户登陆了,当然也可能远程登陆。
       说了这么半天,有好多人会有疑问:你说都用该用户登录到系统了,怎么会不知道密码,知道密码了,上面的那些破假设还有什么意义啊!

       其实,还真不一定。比如,你作为管理员登陆后,设置屏幕保护10分钟后开启并进行密码保护,而且没有立刻启动屏幕保护程序有事就离开了,我想这个场景在每个人身上都可能发生,也很普遍吧,那么另外一个人路过看到了,娃哈哈!好一个机会!插上U盘,运行早已准备好的脚本,搞定了!他可能秘密地生成另外一个管理员帐户,开启远程控制,ssh等服务,那么不用什么木马蠕虫,就可以完全控制你的机器了!同样的情景,如果你在远程ssh到服务器,那么他也可以用同样的方式控制远程的服务器,不是吗?

       所以说,这个漏洞真的不是无所谓,至少是,一旦上面的条件满足,那么潜在的危险就是事实的危险。

       那么有了这么一个系统漏洞不修补是不是就是不可挽救了呢?也不是。一是养成良好的习惯,比如设定热角启动屏幕保护并开启密码保护;使用sudo -K命令来彻底删除时间戳;严格控制可以访问用户的权限,并使用sudo visudo来设置sudoers,只给对的用户正确的权限,这是一个原则。

       看了驱动之家各位网友的相关回复,争吵还真是热闹。这么热闹,整个耳红脖子粗的,闹一肚子气,还不是自己生气?!谁会高兴?我看就是小编们看着自己的业绩,那是真心的笑了。其实啊,你用什么顺手,就用什么;再好的东西,到了自己手里不会用,也是瞎掰浪费不是。世界上没有攻不破的系统,没有绝对安全的电脑,更何况现在市面上所谓的系统似乎都不是那么的安全。什么一个系统比另外一个安全100倍了,什么谁谁最不安全,都是没事儿瞎扯,争论这些没有任何意义。有时间多吃个垃圾食品,危害来说可能都比生气来得没有那么深远;再说哪个系统也不是咱亲娘舅出的,咱这么费力生着气帮它,有人给你津贴吗?!对于大众用户来说,与其争论这些,还不如好好弄好自己的机器,多学学如何把自己的电脑调教得相对比较坚固可靠,比如参考我上一篇的有关使用虚拟机的方法,别轻易地变成肉机;培养自己的安全意识,并养成良好的使用习惯,远离危险源。

注:如果细心的读者使用上面的方法突破系统,很可能不成功,那是因为我在上面的命令中有益忽略了一个特殊的命令导致。


作者:afatgoat 发表于2013-9-13 13:42:31 原文链接
阅读:42 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

KVM的虚拟化研究及应用

引言

    虚拟化技术是IBM在20世纪70年代首先应用在IBM/370大型机上,这项技术极大地提高了大型机资源利用率。随着软硬件技术的迅速发展,这项属于大型机及专利的技术开始在普通X86计算机上应用并成为当前计算机发展和研究的一个热点方向。目前,虚拟化技术在高校数据中心虚拟化、计算机教学、数字图书馆等各方面都有所应用并取得了较好的效果。文中提出基于KVM的教学平台虚拟化方案设计,较好地解决了使用加密狗作为加密手段的应用虚拟化问题。

1 KVM虚拟化技术概述

    虚拟化技术能够在一台计算机上运行多个操作系统,每个系统上运行自己独立的应用软件。虚拟化技术可以对这些系统进行有效隔离,对资源进行按需分配,从而保证每个系统的安全性和性能。目前虚拟化技术已经形成从硬件到软件一整套的解决方案。基于X86架构的硬件技术主要是由Intel和AMD提供的VirtualizationTechnology(VT)和Pacifica(AMD—V)虚拟化技术,该技术对处理器进行了扩展,从而实现了处理器的虚拟化。软件方面主要有Vmware公司的VSpare和VmwareWorkstation、Microsofl公司的Hy—per—V和VirtualPC以及Linux系统下的Xen和KVM等。前两个软件是已经商业化的系统,Xen也开始了商业化运作,KVM是免费的开源系统并在迅速发展当中,是目前唯一进入Linux核心的虚拟化解决方案。

    KVM是由以色列的一个名为Qumrant的开源组织于2006年10月提出的基于硬件虚拟化的虚拟机(VirtualMachine,VM)实现方案,2007年2月发布的Linux2.6.20内核第一次包含了KVM。实际上KVM只是虚拟化解决方案的一部分,其底层需要处理器支持,为多个操作系统提供虚拟化处理器,I/O通过QE—MU进行,其架构如图1所示。

  KVM系统架构 

图1 KVM系统架构

    KVM包含内核模块和处理器模块两部分,内核模块kvm.ko提供核心的虚拟化支持,处理器模块kvm—inte1.ko和kvm—amd.ko分别提供了对Intel和AMD处理器虚拟化技术的支持。KVM通过加载kvm.ko内核模块将Linux内核转换为一个VirtualMachineMonitor(VMM,Hypervisor),因此KVM可以随着Linux标准内核的升级而获得性能提升(如调度程序、内存支持等)。虚拟机对应成为标准的Linux进程,因而可以用标准的Linux进程管理机制进行管理。

    在普通的Linux进程有内核模式和用户模式两种运行模式,内核模式表示代码执行的特权模式,用户模式表示代码执行的非特权模式。在KVM系统中为Linux引入了一种新的进程模式,新的模式称为客户模式,客户模式用来执行虚拟机操作系统非I/O代码。在客户模式中包含内核模式和用户模式两种标准模式,VM操作系统可在内核模式下运行标准的内核,在用户模式下支持自己的内核和用户空间应用程序。

    虚拟机操作系统的I/O操作是由修改过的QEMU支持的。QEMU是一种用动态翻译技术实现的快速指令集层虚拟机,它支持整个计算机系统的模拟,包括多种处理器(X86、ARM、PowerPC等)、磁盘、图形适配器和网络设备等。KVM是用硬件虚拟化技术代替了QEMU的动态翻译技术,实现虚拟机操作系统代码直接由硬件处理从而提高系统性能。VM操作系统生成的I/O请求会被截获并转发到用户空间,由QEMU的设备模型来模拟I/O操作,在需要的情况下触发真实的I/O操作。

2 KVM教学平台虚拟化应用系统设计

    随着经济模式的转变和信息技术的发展,社会对复合型人才的数量和质量要求越来越高。为了适应这种变化,高等教育不断重视和加强实践教学,利用现代计算技术贴近现实成为其中最重要的手段之一。国内大部分院校均已建立起一定规模的实践教学环境,初步建立了教学、科研等各种网络应用系统。这些系统在实践教学秩序的稳定性和教学质量的提升等方面发挥了重要作用。

    一般实践教学数据中服务器拓扑结构如图2所示,其中包括目录服务器、数据库服务器、文件服务器、WEB服务器及专业教学软件应用服务器,部分院校还部署了防火墙、负载均衡等扩展设备,以保证服务器的安全性、高性能和高可靠性。

 实践教学数据中心服务器拓扑结构 

图2 实践教学数据中心服务器拓扑结构

在实践教学快速发展过程中,各院校的数据中心在建设和管理上也面临着许多困难和问题。

    ①服务器数量越来越庞大,经常是一个建设项目建立一套服务器系统,在此情况下服务器利用率相当低;

    ②服务器资源争夺,有时为了提高服务器利用率,将不同系统部署在同一台服务器上,造成不同应用系统之间的冲突,比如加密狗之间的冲突、端口之间的争夺、环境资源冲突等。虚拟化技术的应用为解决这些问题提供了一条很好的思路。

    2.1KVM技术在虚拟化中的优势

    KVM虚拟化技术具有较强的灵活性,能较好地将不同操作系统和特殊硬件设备加以利用,降低不同系统间维护的复杂度。

    KVM支持VM操作系统种类多,常见的基于X86架构的Windows、Linux、Unix操作系统绝大部分可以稳定运行。

    KVM本身运行在Linux系统内核当中,属于瘦虚拟化方案,KVM本身体积很小,其支持硬件取决于Linux系统本身对硬件的支持。目前主流硬件设备均有对应的Linux驱动,这也就决定了KVM可以在最广泛的硬件系统之上运行。

    KVM可以直接使用指定的硬件设备,如USB端口等。利用此项功能,可以直接将特定应用USB加密狗与运行该应用的VM绑定,从而解决加密狗冲突的问题。

    同时KVM具有优良的系统性能和稳定性,系统更新便捷。

    2.2虚拟化设计的原则

    现有系统的分类整合,对目前应用系统按照技术架构进行分类,分析其应用特性,将类似的系统进行合并服务器处理,以利于将应用迁移到虚拟主机上。对将来要增加的应用系统进行预测,以保证系统的扩展性满足未来的需求。

    数据集中存储,将虚拟机文件及数据库集中存放到存储设备中,实现数据的集中统一管理。

    2.3服务器虚拟化方案设计

    根据现有应用系统的性质将其分为两大类,一类为教学服务器,专门运行教学相关的专业软件。另一类为环境支持系统,包括域服务器、网站服务器、文件服务器。教学服务器平时压力并不大,但是当展开教学活动时,服务器负载会迅速提高鉴于教学系统的特点,将教学系统服务器作为首先进行虚拟化的部分,系统结构如图3所示。

 应用服务器虚拟化架构 

图3 应用服务器虚拟化架构

    将教学系统服务器按资源利用率分为两部分,利用率超过20%的系统将单独设置虚拟机,利用率在20%以下的按照提供服务种类组合在不同虚拟机中。按服务性质将服务分为纯加密保护验证类、B/S应用服务类、C/S应用服务类、自有专用服务类等四类。在教学系统中大量应用使用USB加密狗进行版权保护,为避免加密狗之间相互冲突,将加密狗对应USB端口直接指向对应的虚拟机,使之成为私有端口,不被主机系统和其它虚拟机系统所识别和使用,从而达到消除冲突的目的。

    依据数据集中存储的原则,采用SAN(存储区域网络)集中存储方式,将虚拟机镜像文件部署在SAN共享存储阵列中。当物理主机发生故障时,可通过集群转移或者指定其他物理主机重新运行虚拟机,缩短应用中断时间。

    通过分析应用系统的运行原理,建立分布式数据库,使其与应用分离,数据库集中存储在数据库服务器上。应用采用虚拟机多机备份机制,保证在应用的安全性。对于部分数据库和应用不能分离的业务,采用多级备份的方式,以降低风险发生时造成的损失。

3 KVM虚拟化应用系统部署

    采用Ubuntu910系统,基于KVM84对服务器进行虚拟化,设置CPU、内存、硬盘、网络等硬件环境,安装操作系统及应用,加载相应USB加密狗,实现从虚拟化平台到软件应用的完整虚拟化解决方案。

    3.1 环境检查及软件配置

    KVM是基于CPU硬件虚拟化基础之上的,在安装KVM之前必须确认CPU支持虚拟化技术。使用cat/proc/cpuinfolgrep-E(vmxIsvn1)命令进行检测,有输出结果说明CPU支持虚拟化。部分服务器默认是关闭虚拟化技术的,需要进入BIOS打开CPU的虚拟化支持。

    Linux内核是从2.6.20版本开始集成KVM,因此Linux内核版本必须在此之上。使用uname—a命令查看Linux内核版本。

    在Ubuntu下安装KVM模块和安装其他软件类似,使用apt—getinstallkvm安装KVM模块并添加到Linux核心。lsmod命令可查看KVM模块是否加载成功,如果未加载成功可以使用命令modprobekvm载入。

 

3.2V M操作系统实例化

    3.2.1建立虚拟磁盘镜像

    虚拟磁盘镜像在逻辑上足提供给虚拟机使用的硬盘,在物理上可以是Linux系统内一普通镜像文件,也可以是真实的物理磁盘或分区。本方案设计中将虚拟机集中存储在SAN存储阵列中,采用文件方式,用dd命令创建如下

    ddif=/dev/zeroof=hdisk.imgbs=1Gcount=10

    dd命令创建一个名为hdisk.img的容量为10G的虚拟磁盘。虚拟磁盘并不会立即分配全部空问,而是根据使用情况在不超过1OG范围内动态分配。

    3.2.2配置虚拟网络

    KVM有NAT和TUN/TAP两种网络接入方式。NAT方式下主机操作系统和虚拟机操作系统不需要进行特殊设置,虚拟机操作系统内网卡采用内部DH.CP方式获取私有IP地址,可以与外部网络通讯,但是虚拟机不能向外提供服务,也不能与主机进行通信。TUN/TAP方式是采用网桥连接,虚拟机与主机、虚拟机与外部网络通讯都正常,其拓扑结构如图4所示。

  KVM网络桥接模式拓扑图 

图4 KVM网络桥接模式拓扑图

    TUN/TAP模式是将物理网卡eht0设置成混杂模式,建立一个虚拟网桥br0和虚拟网卡taro,然后将虚拟网卡tarO和物理网卡eth0加入网桥,设置成网桥端口并激活虚拟网卡tarO。网桥IP设置成原主机IP地址,这时主机操作系统可正常通讯。当虚拟机操作系统启动时将自动以tarO为模板建立所需数量的虚拟网卡并插入系统,VM操作系统启动后可按正常系统DHCP方式或手工指定方式设置网卡IP地址。

    3.2.3部署操作系统

    KVM虚拟机硬件配置的设定或更改非常灵活,KVM通过虚拟机启动命令参数指定虚拟机所对应的CPU、内存、硬盘、网卡、声卡、系统时钟等硬件配置。使用启动命令将虚拟磁盘文件和虚拟机关联起来,启动后开始安装操作系统。

    kvm—m512-hda/home/kvm/hdisk.img—cdrom/dev/cdrom..bootd——localtime

    此命令是设置虚拟机使用磁盘镜像文件/home/kvm/hdisk.img作为硬盘,设置内存容量为512兆,从光驱启动虚拟机安装操作系统,安装界面出现后和在物理机器上正常安装操作系统一致。

    安装完毕后将启动命令中的-bootd参数修改为-boote即可实现从磁盘镜像正常启动虚拟机。

    3.3虚拟机的优化和统一集中管理

    Virtio是一套Linux下用于虚拟I/O的通用框架,采用半虚拟化技术以提高I/0性能,通过在VM内加载virtio驱动以支持网卡、块存取设备、PCI等设备。启用virtio虚拟千兆网卡替换KVM默认的RealteckRTL8029虚拟网卡,可大幅度提高虚拟网卡的性能和稳定性。如选用virtio网卡并指定网卡物理地址,可使用-netnic,model=virtio,mac=52:54:00:l2:34:68参数。虚拟机启动后安装对应的网卡驱动即可正常使用。虚拟机系统调试完毕后可将复杂的启动命令存为脚本,避免出错并提高管理效率。

    KVM虚拟机是针对服务器虚拟化进行设计和开发的虚拟化方案,因此KVM虚拟机对虚拟显卡支持相对较弱。但是KVM提供了不在物理服务器端启动虚拟机图形界面,而是通过VNC远程访问的方式对虚拟机进行管理的工作机制。如使用远程管理启动虚拟机,可使用-vrlc172.16.32.3:3参数启动VNC服务器,VNC客户端通过访问172.16.32.3:5093地址对虚拟机进行远程管理控制,为不同虚拟机指定不同端口,形成统一的集中管理。

    3.4部署USB加密设备

    在部署应用过程中,加密狗冲突问题可以利用KVM硬件端口指定技术将不同USB设备与特定虚拟机绑定,主机操作系统不需要安装相应USB驱动,由此可解决USB加密狗在同一系统下冲突的问题。

    KVM可使用-usbdevicehost*.*参数将所有主机上的USB设备全部指定转接到虚拟机上,此时主机将无法正常使用USB设备。因此,必须向KVM说明哪些USB设备由客户机控制。这里需要使Hj到的是USB设备的rid和pid两个参数,每个usb设备都有这两个id,vid代表生产商,pid代表产品。可以通过lsusb命令来察看USB设备的这两个参数,其中一条结果如下

    Bus001Device007:ID0aSe:2110BroadcomCorp

    在启动命令里边修改一usbdevice选项,增加该USB设备一usbdevieehost:0aSe:2110,操作系统启动后再加载相应USB加密狗驱动即可正常使用。

 

3.5虚拟化应用效果分析

    目前实验中心实际运行的教学专用应用中符合虚拟化条件的为37个,分布在l3台服务器上,通过虚拟化部署共建立虚拟机12个,分布在4台服务器上,有效提高了服务器的资源利用率。其它服务器中3台服役时间已超过6年,实施虚拟化后随着服务器的压力减小,故障率明显降低,故障修复周期也大幅缩短,保障了教学秩序的稳定。

    KVM虚拟机只依赖于虚拟磁盘镜像文件,其他配置在Linux系统中完成。因此只需要复制磁盘镜像文件,修改对应启动命令即可完成一台新服务器的部署,有效缩短部署新服务器的工作周期,极大地降低部署复杂程度,提高工作效率。服务器数据备份是管理员日常工作的一个重要组成部分,实施虚拟化后只需备份虚拟磁盘文件,恢复时将虚拟磁盘文件复制回来即可实现应用和数据的完整恢复。

4 结束语

    KVM是一个发展时间比较短,但是性能和稳定性表现优秀的虚拟化解决方案。文中通过一个实例介绍了KVM在虚拟化过程中的具体应用,其灵活的网络拓扑结构、简便的硬件配置方案、集中统一管理可满足于大多数数据中心虚拟化实践。当然KVM也有很多不足,对一些虚拟化扩展特性,如泛虚拟化支持、虚拟机动态迁移、图形化管理界面等新功能正在进一步研究和开发当中。

 

作者:cd520yy 发表于2013-9-13 12:51:14 原文链接
阅读:22 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

xen虚拟机安装实践

xen虚拟机环境安装,用了2天的时间摸索,终于出来了,给大家分享一下。

1、安装宿主环境,我使用的是Centos6.3

2、安装xend,参考了一篇老外的文章,基本比较顺利。

地址:http://xen.crc.id.au/support/guides/install/ 

2.1. yum install bridge-utils

2.2.yum install http://au1.mirror.crc.id.au/repo/el6/x86_64/kernel-xen-release-6-5.noarch.rpm

2.3.yum install kernel-xen xen

2.4.vi /etc/sysconfig/selinux.

修改这一行

SELINUX=disabled

2.5.reboot

xm info 命令如果好用,恭喜你,基本差不多了。

3、安装虚拟系统

不能直接使用iso文件,需要挂载为光驱,支持http或nfs格式访问,好像不能使用本地目录。

我在宿主机上安装了httpd,把光驱挂载到http跟目录下,其他目录在安装过程中会有找不到文件的错误,建议直接挂根分区。

mount -o loop -t iso9660 /data7/CentOS-6.3-x86_64-bin-DVD1.iso /var/www/html

dd if=/dev/zero of=vm00.img bs=1k seek=30720k count=1 创建硬盘

/usr/sbin/virt-install –paravirt –file=/data/vm/vm00.img –name=vm00 –ram=1024 –vcpus=1 –bridge=eth0 –nographics –location=/var/www/html

执行后会有安装操作界面,有个界面是输入安装介质,选择url,输入http://192.168.1.185/

安装完成后reboot

4、虚拟机管理

xm list 显示虚拟机列表

xm start vm00 开机

xm console vm00 进入虚拟机命令行环境

xm delete vm01 删除虚拟机

xm shutdown vm00 关机

5、克隆虚拟机

virt-clone -o vm00 -n vm01 -f vm01 

可以多克隆几个,哈哈

克隆完之后就可以使用第4条的命令来管理了。

作者:ycl111 发表于2013-9-13 12:16:29 原文链接
阅读:65 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

虚拟机内存调的过大导致无法恢复也无法关闭解决办法

今天在虚拟机中安装服务的时候,因为服务要求内存必须增大,于是在虚拟机将内存调大。但是却调的过大了,最终导致虚拟机一启动就崩溃。于是想着将虚拟机的内存调小,可是内存调整那一块是灰色的,根本调不了。

怎么办?于是网上一遍一遍的搜,其中有人提到当虚拟机处于挂起状态时,是无法调整内存的。我立即看了下虚拟机的状态,确实是挂起的。那么将虚拟机关掉不就不是挂起状态了么!果断切换到电源菜单,结果晕了!菜单中除了“恢复”“ 恢复客户机”是可以点击的,其他的都是灰色的。

虚拟机无法关闭!!那怎么办?总不至于要重装一次虚拟机吧!想了想,不如换个思路,想想能不能让虚拟机从挂起状态转换成正常状态。虚拟机是以文件形式保存的,所以相应的配置信息也必然是文件保存。说不定只要改某个文件中的配置就可以了。

又网上搜了搜,发现原来这挂起状态的保存在一个.vmss后缀的文件中的(该文件可能是隐藏文件),只要删掉就OK了。果断删了,但这时虚拟机还是处于挂起状态。这时最好,将原虚拟机从收藏夹中移除,然后再重新打开。

虚拟机终于正常了,于是将虚拟机的内存调小,立即重新开启。这时,又遇到一个问题!!其画面如下。

看着提示,说是要允许更多虚拟机交换内存,于是想了一遍后,记得虚拟机的参数中好像有这么一个选项。依次在虚拟机的菜单中点击编辑->参数,弹出参数菜单,画面如下。

将其中的内存->额外内存 调整为"允许大多数虚拟机内存交换"就OK了。

重开虚拟机,正常了!!

作者:xxdddail 发表于2013-9-13 12:03:19 原文链接
阅读:0 评论:0 查看评论

Powered by WPeMatico

Posted in 系统运维

redhat6.4 配置centos6 yum替换

相关包下载地址

 http://download.csdn.net/detail/h249059945/6259889

1、卸载掉系统redhat自带的yum
  rpm -qa |grep yum |xargs rpm -e –nodeps

2 下载相关的centos yum插件
  主要有python-iniparse-0.3.1-2.1.el6.noarch.rpm 
 yum-3.2.29-40.el6.centos.noarch.rpm
 yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
 yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm

  其中版本号和安装的系统版本,以及时32位系统和64位系统有关系
  下载地址:http://mirrors.163.com/centos/

  在linux可以使用命令直接下载到本地也可以
  wget

http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm

  wget

http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm

  wget

http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.29-40.el6.centos.noarch.rpm

  wget

http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm

 
  注意:如果下载不了可能是小版本号有变化,可以直接下载后在上传到linux服务器

3 安装下载的yum包(如果没权限可以先修改权限 chmod 777 *)

 rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
 rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
 rpm -ivh yum-3.2.29-40.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-14.el6.noarch.rpm

  最后两个需要一起安装,有相互依赖关系

4 下载配置文件CentOS6-Base-163.repo
  wget 
http://mirrors.163.com/.help/CentOS6-Base-163.repo

5 修改CentOS6-Base-163.repo  ,将其中的$releasever 更改为centos的版本
 vi CentOS6-Base-163.repo
 :%s/$releasever/6

6 把配置文件放到指定目录 并且删除原来的配置文件
  cd /etc/yum.repos.d
  rm -fr *
  mv /home/CentOS6-Base-163.repo ./

7 清除缓存 yum clean all

8 配置获取yum列表
   yum  makecache