Linux

fedora-13-Linux下使用局域网中windows 共享打印机

环境:Fedora 13+windows xp+hp laserjet 1018
1、查看共享打印机名:
使用windows查看网络打印机属性。控制面板-》打印机和传真-》看看有没有你要添加的windows网络中共享的打印机,我的是 hp laserjet 1018,没有的话添加网络打印机,有的话直接在其之上单击右键-属性,第二个共享属性选项卡中有其共享名:网络 。(或者直接到共享的那台上看看它叫啥,就是不知道有没有办法在linux下只知道打印机服务器ip的情况下查询到打印机名称的办法。

2、安装samba 貌似我的直接安装好了的~没有的话终端下 sudo yum install samba

3、添加打印机:
系统-》系统管理-》打印,点新打印机-在弹出的窗口中选择 windows printer via samba ,右边填写打印机ip及打印机名称或者浏览(我的浏览不到打印机服务器,但是竟然浏览到了打印机服务器上的网络狗了~郁闷的要死),我填写的是:smb://192.168.1.1.08/网络 如何是字母这里一定注意大小写~以前没有成功就是这里的问题~
选择需要验证,用户名填写 guest 密码空(这里看你的实际情况了,一般默认下windows网络共享打印机都是guest用户访问打印的),然后测试下,点下“验证”,如果出现“已验证”,表示认证通过。恭喜^_^
4、安装驱动:选择相应厂商的相应打印机驱动程序,我的是hp laserjet 1018,自然就选择hp laserjet 1018。

打印测试成功!!呵呵

tun虚拟网卡不能设置MAC地址

tun虚拟网卡是点对点设备
tap是虚拟以太网设备,

tun虚拟网卡不支持设置MAC地址。
ifconfig tun0 hw ether XX:XX:XX:XX:XX:XX,会报错:SIOCSIFHWADDR: Operation not supported。

我是Fedora的忠实用户

按照当前的计划,Fedora 14将在10月26日发布,采用GNOME 3.0, KDE 4.5, the Linux 2.6.35/2.6.36 kernel, GCC 4.5, and X.Org Server 1.9。

  以上即将被整合的新技术,不少也还处在开发阶段,所以Fedora时常被指责不够稳定。但这样的指责并没有削弱 用户的体验热情,很多用户依旧是Fedora最忠实的粉丝。屏幕前面的你是否也正期待着Fedora 13的到来呢?

我是Fedora的忠实用户。

下载了Fedora13的64位版本-在VMware居然不能安装

原来是这个原因:
VMWare WorkStation 6.0可以支持安装64位操作系统,网上看了不少帖子说宿主的机器操作系统也需要是64位的,其实也不是,可以通过打开CPU的 Virtualization Technology支持,这个一般在BIOS的Performance选项中,记住,即使宿主机器使用的是64位操作系统,也需要打开这一选项才能在虚拟机中安装64位操作系统。

      如果你的机器是intel芯片,不支持VT,很遗憾,无法在VMWare中安装64位的系统。

      VMWare的官方网站指出,支持在VMWare中安装64位的系统的芯片有以下几种:

AMD Athlon 64, revision D or later
AMD Opteron, revision E or later
AMD Turion 64, revision E or later
AMD Sempron, 64-bit-capable revision D or later (experimental support)
Intel EM64T VT-enabled processors (experimental support)

看来我要把这64位的系统装在笔记本上才行。或者下载一个live光盘,装在虚拟机里面尝尝鲜。

vmware下安装redhat9-在redhat9里不能上网-eth0不能启动

red hat 9装在虚拟机vmware上之后,连接网络是出现问题 Determining IP information for eth0… failed; no link present. Check cable?  
vmware设置的是nat的上网方式。//无论是桥接bridge或NAT,eth0都不能启动。

证明是redhat9的bug。。。。无语了
解决方法:
到/etc/sysconfig/network-scripts/ifcfg-eth<n> 
/etc/sysconfig/networking/devices/ifcfg-eth<n>   
其中<n>表示Ethernet adapter的标识数字,一般为0。当为零的时候,就是
/etc/sysconfig/network-scripts/ifcfg-eth0 
/etc/sysconfig/networking/devices/ifcfg-eth0   
这两个文件中加入
check_link_down () {
return 1;
}
//其实只需/etc/sysconfig/network-scripts/ifcfg-eth0就行了。
//
/etc/sysconfig/networking/devices/ifcfg-eth0   会自动跟着更改的。
最后在root用户下,service network restart,就行了。

另外如果存在/etc/sysconfig/networking/profiles/default/ifcfg-eth0 文件,则同样在其中加入这一段东西即可,然后重
系统。不行的话再手动配置下DNS 如主DNS:192.168.1.1 就OK了

Fedora 8升级Linux内核到2.6.25

Linux 2.6内核编译比以前方便多了,本文描述了在Fedora 8下升级linux内核为2.6.25的详细步骤.

1. 首先从如下网址得到linux-2.6.25.

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2

2. 然后在/usr/src下untar这个包.

tar -xjfv linux-2.6.25.tar.bz2

3. 配置内核
cd /usr/src/linux-2.6.25
make mrproper(删除一些stable的文件,针对刚download下来的包这一步没必要)
make menuconfig(以菜单的方式显示, 可以定制Linux模块, 在菜单顶部有命令帮助)

3. 编译内核

make (这一步花的时间最多,我用了将近40分钟)
make modules_install
make install(系统将会把vmlinuz和System.map复制到/boot目录下同时修改grub)

在2.6以前需要make bzImage make modules, 而且还需要将vmlinuz和System.map复制到/boot目录.

要想得到更详细关于编译的描述, 可以参考/usr/src/linux-2.6.25的README. 每个Linux内核的发行都有这个文件.

4. 重启机器
shutdown -r now
这样在开始的grub菜单里你可以选择用新的内核来启动linux

进入系统后,可以sudo vi /boot/grub/menu.lst
将刚编译的kernel2.6.25设置为默认启动。

//没碰到一下情况。
如果启动时遇到这个错:
“Enforcing mode requested but no policy loaded. Halting now.”
Kernel panic: Attempted to kill init!

可以用如下方法解决:
Try adding enforcing=0 to your grub.conf.
kernel /boot/bzImage-2.6.5 ro root=/dev/hda5 enforcing=0

或者在/etc/selinux/config文件中,将SELINUX的值设为disabled.

Fedora13今天发布啦

今天是2010年5月26日,早上上网,去到Fedora网站一看,Fedora13已经发布了。
赶紧用迅雷下载下来,试用试用。
又是新的开始!

sprintf-将字串格式化

在头文件 #include<stdio.h>中
  语法: int sprintf(string format, mixed [args]…);
  返回值:字符串长度(strlen)
  1. 处理字符方向。-负号时表时从后向前处理。
  2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。
  3. 字符总宽度。为最小宽度。
  4. 精确度。指在小数点后的浮点数位数。
  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  转换字符
  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  % 印出百分比符号,不转换。
  b 整数转成二进位。
  c 整数转成对应的 ASCII 字元。
  d 整数转成十进位。
  f 倍精确度数字转成浮点数。
  o 整数转成八进位。
  s 整数转成字串。
  x 整数转成小写十六进位。
  X 整数转成大写十六进位。

连接字符串
  sprintf 的格式控制串中既然可以插入各种东西,并最终把它们“连成一串”,自然也就能够连
  接字符串,从而在许多场合可以替代strcat,但sprintf 能够一次连接多个字符串(自然也可以同时
  在它们中间插入别的内容,总之非常灵活)。比如:
  char* who = “I”;
  char* whom = “CSDN”;
  sprintf(s, “%s love %s.”, who, whom); //产生:”I love CSDN. “
  strcat 只能连接字符串(一段以’’结尾的字符数组或叫做字符缓冲,null-terminated-string),但有时我们有两段字符缓冲区,他们并不是以 ’’结尾。比如许多从第三方库函数中返回的字符数组,从硬件或者网络传输中读进来的字符流,它们未必每一段字符序列后面都有个相应的’’来结尾。如果直接 连接,不管是sprintf 还是strcat 肯定会导致非法内存操作,而strncat 也至少要求第一个参数是个null-terminated-string,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串 也一样的。比如:
  char a1[] = {‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’};
  char a2[] = {‘H’, ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’};
  如果:
  sprintf(s, “%s%s”, a1, a2); //Don’t do that!
  十有八九要出问题了。是否可以改成:
  sprintf(s, “%7s%7s”, a1, a2);
  也没好到哪儿去,正确的应该是:
  sprintf(s, “%.7s%.7s”, a1, a2);//产生:”ABCDEFGHIJKLMN”
  这可以类比打印浮点数的”%m.nf”,在”%m.ns”中,m 表示占用宽度(字符串长度不足时补空格,超出了则按照实际宽度打印),n 才表示从相应的字符串中最多取用的字符数。通常在打印字符串时m 没什么大用,还是点号后面的n 用的多。自然,也可以前后都只取部分字符:
  sprintf(s, “%.6s%.5s”, a1, a2);//产生:”ABCDEFHIJKL”
  在许多时候,我们或许还希望这些格式控制符中用以指定长度信息的数字是动态的,而不是静态指定 的,因为许多时候,程序要到运行时才会清楚到底需要取字符数组中的几个字符,这种动态的宽度/精度设置功能在sprintf 的实现中也被考虑到了,sprintf 采用”*”来占用一个本来需要一个指定宽度或精度的常数数字的位置,同样,而实际的宽度或精度就可以和其它被打印的变量一样被提供出来,于是,上面的例子 可以变成:
  sprintf(s, “%.*s%.*s”, 7, a1, 7, a2);
  或者:
  sprintf(s, “%.*s%.*s”, sizeof(a1), a1, sizeof(a2), a2);
  实际上,前面介绍的打印字符、整数、浮点数等都可以动态指定那些常量值,比如:
  sprintf(s, “%-*d”, 4, ‘A’); //产生”65 “
  sprintf(s, “%#0*X”, 8, 128); //产生”0X000080″,”#”产生0X
  sprintf(s, “%*.*f”, 10, 2, 3.1415926); //产生” 3.14″
  打印地址信息
  有时调试程序时,我们可能想查看某些变量或者成员的地址,由于地址或者指针也不过是个32 位的数,你完全可以使用打印无符号整数的”%u”把他们打印出来:
  sprintf(s, “%u”, &i);
  不过通常人们还是喜欢使用16 进制而不是10 进制来显示一个地址:
  sprintf(s, “%08X”, &i);
  然而,这些都是间接的方法,对于地址打印,sprintf 提供了专门的”%p”:
  sprintf(s, “%p”, &i);
  我觉得它实际上就相当于:
  sprintf(s, “%0*x”, 2 * sizeof(void *), &i);
  利用sprintf 的返回值
  较少有人注意printf/sprintf 函数的返回值,但有时它却是有用的,spritnf 返回了本次函数调用
  最终打印到字符缓冲区中的字符数目。也就是说每当一次sprinf 调用结束以后,你无须再调用一次
  strlen 便已经知道了结果字符串的长度。如:
  int len = sprintf(s, “%d”, i);
  对于正整数来说,len 便等于整数i 的10 进制位数。
  下面的是个完整的例子,产生10 个[0, 100)之间的随机数,并将他们打印到一个字符数组s 中,
  以逗号分隔开。
  #include
  #include
  #include
  int main() {
  srand(time(0));
  char s[64];
  int offset = 0;
  for(int i = 0; i < 10; i++) {
  offset += sprintf(s + offset, “%d,”, rand() % 100);
  }
  s[offset - 1] = ‘\n’;//将最后一个逗号换成换行符。
  printf(s);
  return 0;
  }
  设想当你从数据库中取出一条记录,然后希望把他们的各个字段按照某种规则连接成一个字
  符串时,就可以使用这种方法,从理论上讲,他应该比不断的strcat 效率高,因为strcat 每次调用
  都需要先找到最后的那个’’的位置,而在上面给出的例子中,我们每次都利用sprintf 返回值把这
  个位置直接记下来了。