解决OSError: [Errno 2] No such file or directory: ‘/dev/urandom’

最近自己的CentOS6在yum update以后,所有的yum命令都会遭遇如下错误

Traceback (most recent call last):
  File "/usr/bin/yum", line 4, in <module>
    import yum
  File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 46, in <module>
    import tempfile
  File "/usr/lib/python2.6/tempfile.py", line 34, in <module>
    from random import Random as _Random
  File "/usr/lib/python2.6/random.py", line 873, in <module>
    _inst = Random()
  File "/usr/lib/python2.6/random.py", line 96, in __init__
    self.seed(x)
  File "/usr/lib/python2.6/random.py", line 110, in seed
    a = long(_hexlify(_urandom(16)), 16)
OSError: [Errno 2] No such file or directory: '/dev/urandom'

解决方法:

mknod -m 644 /dev/urandom c 1 9

公布一个奇葩VPS:dream.jp/smartvps.cn

dream.jp/smartvps.cn好不好?dream.jp/smartvps.cn垃圾,dream.jp/smartvps.cn骗子。好了,开头先做一段SEO。现在开始讲述正题。

一提到日本,可能心里都会冒出几个感觉:友善,亲和,文明,礼貌。不知道从什么时候起,开始关注日本的VPS了,心里总有个感觉,再不济也是亚洲线路,速度也比美国的快吧

那天不知道怎么就逛到http://smartvps.cn这家了,查了一下,居然还是家大公司DTI旗下的产品,看来不用担心跑路了。又看了下价格,512M内存的日本VPS只要490日元(折合人民币40元不到),于是立即下手。开通还挺快。不到5分钟就开通了。

开通以后当然是万分欣喜的各种测试了,首先是看了看CPU,不看不要紧,一看顿时就闪瞎了我的眼!
垃圾的smartvps.cn 继续阅读

Linux挂载ftp服务器

Linux挂载ftp服务器,需要用到一个名为fuse-curlftpfs的包。正常情况下无法通过yum的方式获取此包,因此需要先安装DAG repository

Centos5 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
Centos5 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el5.rf.i386.rpm
Centos6 64位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Centos6 32位  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm

然后是安装下载的rpm包

rpm -ivh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm

然后就可以通过yum的方式安装fuse-curlftpfs了

yum install fuse-curlftpfs -y

在Centos6上执行此命令,可能会遇到 Requires: libcurl.so.3 的错误,解决方法:编辑 /etc/yum.repos.d/rpmforge.repo 文件,把 [rpmforge-extras] 项打开,再执行 yum clean all 即可。 继续阅读

解压rpm包

RPM包括是使用cpio格式打包的,因此可以先转成cpio然后解压,如下所示:

rpm2cpio xxx.rpm | cpio -div

例如:
[root@localhost ~]# rpm2cpio ipvsadm-1.26-1.src.rpm | cpio -div
ipvsadm-1.26.tar.gz
ipvsadm.spec
88 blocks

可以看到,压缩出来了一个.tar.gz格式的压缩包和一个xxx.spec格式的文件。
spec脚本用于指定软件基础信息,以及安装、卸载前后执行的脚本,对源码包解压、打补丁、编译,安装路径和文件等。关于spec脚本的详细说明请看RPM包rpmbuild SPEC文件深度说明。cpio命令的选项可以参考linux中cpio及rpm2cpio应用

CentOS5安装xen

一,判断CPU对虚拟化的支持

1,半虚拟化 (Para-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce cx8 ……

列表中出现pae表示支持半虚拟化,可以安装xen

2,全虚拟化 (Fully-virtualization) 硬件需求:

[root@linux ~]# cat /proc/cpuinfo | grep flags | egrep '(vmx|svm)'
flags : fpu tsc msr pae mce……

对于Intel的CPU,列表中出现vmx表示支持全虚拟化,可以安装xen
对于AMD的CPU,列表中出现svm表示支持全虚拟化,可以安装xen

需要说明的一点儿是,只有fully virtualized的才可以从iso文件、CD-ROM等为虚拟机安装操作系统,且可以安装windows系统,para virtualized只能从FTP/HTTP服务器安装,且不能安装windows系统。 继续阅读

修改shell终端提示信息

Shell终端默认只显示用户名、主机名、工作目录,有时候我们需要对Shell终端显示的信息简单调整一下,以便使工作更有效率。比如我们可以给Shell终端加上时间,以便我们计算脚本执行的时间,如下所示:

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息
[root@localhost src]$export PS1="[\u@\h \W \t]$"    #给Shell终端加上时间显示
[root@localhost src 16:19:18]$    #时间已经显示出来了

Shell终端的显示,使用到以下两个环境变量
PS1:就是用户平时的提示符。
PS2:第一行没输完,等待第二行输入的提示符。

[root@localhost src]$echo $PS1
[\u@\h \W]$    #读取默认终端显示信息

想重启后继续生效,只需要修改配置文件即可。
对于当前用户只需修改~/.bashrc,对于系统所有用户我们修改/etc/bashrc。 继续阅读

Linux加载内核模块

Linux加载内核模块的过程,记录一下,主要命令有modprobe、insmod及depmod等,命令由module-init-tools的软件包提供,请先确认系统安装了此软件包。本文方法已在CentOS 5 x86_64和CentOS6 x86_64系统上验证通过。

一,查看内核已加载的模块

[root@os ~]# lsmod

该命令通过读取/proc/modules文件中的内容列出已加载的模块。
系统中的所有模块位于/lib/modules/$(uname -r)/kernel/下的各种目录中。

二,手动加载模块
手动加载模块的方法有两个,下面分别介绍。

2.1 执行insmod命令加载模块

[root@os ~]# insmod mycdev.ko

2.2 执行modprobe命令加载模块

将模块拷入到相应目录下
[root@os ~]# cp mycdev.ko /lib/modules/$(uname -r)/kernel/drivers/char/

然后把模块的绝对地址写入到modules.dep文件中
手动写入(注意写入的行末尾有一个冒号)
[root@os ~]# echo /lib/modules/$(uname -r)/kernel/drivers/char/mycdev.ko: >> /lib/modules/$(uname -r)/modules.dep
或者执行如下命令自动写入
[root@os ~]# depmod -a

然后,就可以加载模块了
[root@os ~]# modprobe mycdev        #加载模块
[root@os ~]# lsmod | grep mycdev    #检验加载是否成功
mycdev                 35840  0

三,卸载模块

[root@os ~]# rmmod sysdog

四,开机自动加载模块
鸟哥的linux私房菜一书中,介绍的Linux系统开机流程:
(1) 载入BIOS的硬件信息,并取得第一个开机装置的代号
(2) 读取第一个开机装置的MBR的boot Loader (grub)的开机信息
(3) 载入OS Kernel信息,解压Kernel,尝试驱动硬件
(4) Kernel执行init程序并获得run-lebel信息(如3或5)
(5) init执行/etc/rc.d/rc.sysinit
(6) 启动内核外挂模块(/etc/modprobe.conf)
(7) init执行run-level的各种Scripts,启动服务
(8) init执行/etc/rc.d/rc.local
(9) 执行/bin/login,等待用户Login
(10)Login后进入Shell

打开/etc/rc.sysinit(是一个软链接,指向/etc/rc.d/rc.sysinit),会发现有如下内容

……
# Load other user-defined modules
for file in /etc/sysconfig/modules/*.modules ; do
  [ -x $file ] && $file
done

# Load modules (for backward compatibility with VARs)
if [ -f /etc/rc.modules ]; then
        /etc/rc.modules
fi
……

由此可见,如果想让一个模块开机自动加载,只要把模块加到这两个文件之中即可。

[root@os ~]# echo 'modprobe mycdev' > /etc/sysconfig/modules/mycdev.modules
[root@os ~]# chmod +x /etc/sysconfig/modules/mycdev.modules #不能少,否则会加载失败

然后重启,执行lsmod命令,会发现模块已加载。

第 20 页,共 29 页« 最新...10...181920212223...最旧 »