谦卑的程序员






         静水流深

May 13, 2009

Linux发行版的相关问题

Filed under: 1.9 操作系统 — Eric Tou @ 3:36 pm
Tags: , , , , ,

  突然发觉不同Linux发行版之间还是有一定得区别的。最近一直在用Ubuntu(从之前的文章可以看出来),也看到了一些对于Ubuntu的炮轰,比如兼容问题,比如对社区的贡献少,比如背后商业公司的利益导向等等,但总的来说Ubuntu的Live CD,简易的安装,打包好的软件,漂亮的界面对于推广Linux还是起了不小的作用的。

  当然作为“有追求的专业人士”,将自己在知识方面的精力投资在一个更为通用、更为广泛接受的对象上无疑是明智的选择,所以还是需要介意一下的。

  Novell的SUSE Linux版本没什么研究,只知道大致上是SUSE EnterpriseOpenSUSE两个分支。版本的定位和Redhat差别不大,之后再讨论。

  Mandriva Linux,法国的发行商。最初基于Redhat,后来分道扬镳。使用GNOME、KDE桌面,使用rpm包,部分兼容Redhat/Fedora。这个基本没怎么见周围的人用过。

  剩下的就是基于RedhatDebian两种发行版的居多。最近很火的Ubuntu就是基于Debian内核(Debian本身反倒关注的人少了),简单来说就是预编译的.deb软件包可以兼容。Ubuntu分为针对服务器的Server版,针对桌面用户的Destop版,针对专本设备的MID和Netbook版。

  Redhat方面,在与Fedora Project合并后,分为两条线路,RHEL(Redhat Enterprise Linux)和Fedora Linux。两者的区别在于Fedora由社区支持,每6个月更新;RHEL由Redhat公司支持,每18个月更新,面向企业用户,提供需要付费的subscription服务,相对于Fedora经过认证的软件包较少一些。具体的比较请看这里。总的来说,可以把Fedora看做是RHEL的基础,试验田,两者在定位上有区别导致在发行版内容的侧重上会有区别,但是技术基础没有区别。在RHEL上能干的事情,在Fedora上应该都能干,区别是RHEL上出了问题,你可以找Redhat支持,Fedora上除了问题,你得靠自己(还有社区)

  到Redhat的网站上看了看,RHEL也分为Server和Destop版本,需要Buy,但是有30天的试用。但是请注意,Linux是Open Source的,RHEL也不例外。你购买的是7年的技术支持服务,而不是Linux本身,这意味着你在试用30天之后可以继续合法地使用RHEL,当然是在你不需要支持自己能搞定的情况下。

  当然也有一些定位于RHEL替代的“免费”的Redhat分支,如CentOSTao Linux等。

  RHEL下载还需要注册,感觉麻烦。跑到Fedora那看了看,一张光盘的Live CD,只有Desktop版本(当然你把它配成Server也没问题),可以Live CD直接引导,也可以配置成USB引导(不知道是不是学Ubuntu的)。于是中午下载了一个,决定之后开始玩起来。

  总的来说各个发行版对于初级的应用来说差别不大,无非是桌面的使用习惯、预编译软件包的数量、对硬件驱动的支持。考虑到这么多年,公司里还是Redhat应用得比较多,所以最近有从Ubuntu叛逃到Redhat线路的意图。(当然其实学好了都一样,这个纯属个人问题)

March 5, 2009

Linux平台的SVN客户端RapidSVN

Filed under: T.兵器谱 — Eric Tou @ 8:00 pm
Tags: , , , ,

Linux平台上的SVN客户端选择

  在Windows上常用的SVN图形化客户端是TortoiseSVN,那么在Linux平台上呢?<Comparison of Subversion clients> 列举了Subversion的客户端。

  当然用不着在这么多选择里一一比较,从搜索的结果来看,比较多用到的是RapidSVN和eSvn(这两款都是跨平台的,支持Win、Linux、Mac OS平台)。至于选择RapidSVN的原因么,是因为RapidSVN在Subversion的老巢Tigris.org可是受到推荐的,而eSVN的主页我没打开,理由就是这么简单。

tigris_featured_projects

RapidSVN的特点

  • Simple - provides an easy to use interface for Subversion features
  • 简单 - 为Subversion的功能提供易用的界面
  • Efficient - simple for beginners but flexible enough to increase productivity for experienced Subversion users
  • 高效 - 对于初学者很简单,同时对于有经验的Subversion用户足够灵活以提高生产率
  • Portable - runs on any platform on which Subversion and wxWidgets can run: Linux, Windows, Mac OS/X, Solaris, etc.
  • 可移动 - 能在任何Subversion和wxWidgets能够运行的平台上运行:Linux、Windows、Mac OS/X、Solaris及其它(个人认为应该是Cross-platform跨平台比较贴切)
  • Fast - entirely written in C++
  • 快速 - 完全用C++编写
  • Multilingual - it has been translated to many languages already: German, French, Italian, Portuguese, Russian, Ukrainian, Simplified Chinese, Japanese
  • 多语言 - 已经被翻译为多国语言
  • Full support for Unicode
  • 完全支持Unicode编码

在Ubuntu上安装RapidSVN

  在大多数主要的Linux发行版本中都提供预编译的RPM格式的RapidSVN安装包,相关的信息请参考RapidSVN关于Linux/Unix安装的在线帮助

  RapidSVN已经是Debian发行版(也包括Ubuntu)的一部分,可以简单地使用Package Manager进行安装。

  比如在Ubuntu Server的桌面环境下,从菜单栏运行[Applications] –> [Debian] –> [Applications] –> [System] –> [Package Management] –> Synaptic Package Manager,找到RapidSVN并选择安装,系统会添加其它需要所需组件,提示插入系统的安装盘,然后到官方网站下载并完成安装。

synaptic_package_manager 

  之后打开[Applications] –> [Programming],就会发现RapidSVN的快捷方式。

  整个安装过程很简单,就像在Windows里添加/删除Windows组件一样简单。

rapidsvn_main_window

TortoiseSVN vs RapidSVN on Windows?

  TortoiseSVN只支持Windows,RapidSVN支持Windows和Linux。

  初步使用,RapidSVN的所有操作都集中在主窗口,远程的repository和本地的working copy都以bookmark的形式表示,和TortoiseSVN与操作系统的右键菜单以及文件管理器整合的方式不同。在使用习惯上不小的差异。

  是否需要把Windows上的Subversion客户端也统一为RapidSVN?仍然有待考虑。

February 6, 2009

将你的Linux安装入USB设备

Filed under: 未分类 — Eric Tou @ 11:16 pm
Tags: , , , , , , , ,

  几天前介绍了《如何创建你自己的Windows Live CD》,但是可以没能把制成的Live CD给Portable化,塞进我的USB移动硬盘里。今天转过头来看看Linux的部分如何。

  Linux的世界大部分的发行版都提供Live CD,比如我现在在用的很流行的“有奔头”(Ubuntu)。有Live CD的好处是:1. 当你初次使用一个发行版本时,你可以先试用再决定要不要安装;2. 通过Live CD启动的系统在某些场合增加安全性。

如何制作自己的Linux Live CD

  当然,如果对现成的Live CD不够满意,也可以通过工具创建自定义的Linux Live CD。

  Revisor是一个创建自定义的Fedora Live CD和安装盘的工具。

  而对于Ubuntu则有Reconstructor

  当然对于绝大部多数的发行版,你还可以使用mklivecd脚本工具为当前扇区的数据创建“快照”并将其压缩入ISO镜像,以作为已安装系统的实时复制。

如何将Linux安装入USB设备

  Ubuntu的wiki里详细介绍了将其安装入USB设备的几种方法:

  1. 使用Linux环境下的工具Portable Linux或Live USB Creater自动创建。
  2. 使用安装CD直接安装。
  3. 将Ubuntu的ISO镜像隐藏在USB设备的分区。
  4. 将ISO镜像(中的文件)复制到USB设备。
  5. 使用Windows环境下的工具UNetbootin安装。

  几种方法各有优劣,同学们可以根据自己的情况选择。如果不介意USB设备的损耗的话,方法2:使用安装CD直接安装是比较简单方便的。

  其他的发行版方面,在Pendrive Linux对相当多的发行版都有介绍可供参考。

  当然,如果你觉得以上的操作步骤仍然很麻烦;你不介意使用哪个版本的Linux;你对运行速度很介意;你的USB设备容量很小;你只需要一个GTD的Linux系统在你的USB设备里,你可以试试“真TM小的Linux”Damn Small Linux)。

Damn Small Linux

  DSL的最初开发目的是尝试可以将多少应用程序塞入一张50MB的Live CD。之前是一个个人工具,逐渐发展成为社区项目。

  DSL可以在光盘、硬盘、或USB设备上使用作为本地安装系统或是多用途的备份/恢复系统使用。虽然容量只有小小的50MB,但包含了媒体播放、FTP客户端、Web浏览器、电子表哥、邮件客户端、文字处理软件、文本编辑器、图片工具、PDF阅读器、文件管理器、即时通讯软件等等实用软件。

  DSL麻雀虽小,却也能做以下的事情:

  • 从business card CD以Linux Live CD启动
  • 从USB设备启动
  • 在宿主操作系统中启动(能在Windows里运行)(注:不就是虚拟机么)
  • Run very nicely from an IDE Compact Flash drive via a method we call “frugal install”(这个不懂,所以不翻译)
  • 从硬盘安装转换为Debian OS
  • 可以在486DX 16MB内存上运行
  • 全速运行只需128MB内存
  • 可以通过模块来扩展(还是得自定义的,没有一劳永逸这回事)

  关于DSL的安装可以参照FAQ的这里。如果使用虚拟机的话注意是2.4内核。下图是DSL的桌面

damn_small_linux_desktop

后记

  在查找资料的时候看到某人提到,Live CD的主要作用是备份和恢复,深以为然。在系统崩溃了以后,能快速地弄起一个操作系统,里面该有的都有,就是这样。当然因为媒体的只读特性,还适合用来干些不想或不需要留痕迹的事情,安全。至于USB媒体方面,可说是东西在别人手上自己的数据不安全,东西在自己手上别人的数据不安全,还是要谨慎使用啊。

  其实了解到这些东西的起因还是几个月前一个同事问起怎么备份Linux的分区(貌似Ghost不行),于是一通Google查到了Partimage,一个与Ghost类似的工具,但支持Ext2/Ext3、Reiser3、FAT16/32、NTFS、HPFS、JFS、XFS、UFS、HFS文件系统,囊括了Linux、Unix、Mac OS、Windows平台。该工具还被收录在SystemRescueCD里方便使用。(机器挂了总得有个环境能运行吧)于是从SystemRescueCD的扩展阅读开始了Live CD之旅。

  最近似乎关于操作系统方面写得多了些,不过这也是根本,摆弄不好系统还是要被人鄙视的,不过大致上也告一段落了。Live CD也好,USB设备也好,除了备份和恢复的目标外,其他的似乎都能通过虚拟机解决(这个对于程序员来说是应该掌握的东西),之后把话题转向虚拟机方面。

  前一阵子做了点功课,经过一段时间的发展,应用的逐渐成熟,虚拟机(或者说虚拟化)开始成为一个越来越大的话题,不再是来一篇《VMWare图文教程》什么的就能大致概括得了的了,慢慢来吧。

November 17, 2008

关于Ubuntu Server的root用户

Filed under: 1.9 操作系统 — Eric Tou @ 10:41 pm
Tags: , , ,

环境:Ubuntu Server 8.10

  Ubuntu Server除了在安装的过程中会提示设置第一个用户(非root)的用户名和密码,直至安装完成都完全没有涉及到root用户的设置。root用户的密码是什么,又要如何设置root用户,对于刚刚开始使用的用户来说,比较让人困惑。

概述

  这里是Ubuntu Server的官方文档关于该主题的相关章节,其解释如下:

  Ubuntu开发者决定默认禁用root账号,这并不意味着root账号被删除了或是不能访问。它只是被赋予了一个难以破解的密码,因此不应直接用其登录。

  相替代地,用户被鼓励使用一个名为sudo的工具在执行系统的管理任务,sudo允许被认证的用户通过他们自己的密码临时获取root的权限,而无需知道root帐户的密码。这种简单有效的方法为所有用户的行为提供了可述性,并且给予了管理员诸如一个用户给予特定权限后可以执行那些操作这样的粒度控制。

  默认地,Ubuntu安装时创建的第一个用户属于”admin”组的一员,而”admin”组作为已认证的sudo用户已被添加到了/etc/sudoers文件中。

Sudo简单应用

  使用创建的第一个用户(比如Bob)登录后,如果要执行需root权限的命令,比如reboot,则输入

sudo reboot

  命令执行时会提示输入Bob的密码,在15分钟内有效,即在15分钟内再使用sudo命令无需重复输入密码。

 

  如果因为某些原因需要启用root用户,需要赋予root一个密码

sudo passwd root

  系统会提示输入Bob的密码,并为root设置新的密码

[sudo] password for username: (enter your own password)
Enter new UNIX password: (enter a new password for root)
Retype new UNIX password: (repeat new password for root)
passwd: password updated successfully

 

  使用完毕后,应该立即锁定root用户。

sudo passwd -l root

 

  如果你想要让其他的用户通过sudo获得完整的root权限,你只需要简单地将其加入到admin用户组中即可。比如新用户Sam

sudo adduser sam
sudo adduser sam admin

 

Sudo的特点

  Redhat发行版的Linux中(Redhat,RHEL,Fedora)默认使用的是su,而Debian发行版的Linux中(Debian,Ubuntu)则默认启用了sudo。su为切换用户,在执行命令时实际上是切换为root用户运行,切换时需要输入root的密码。而启用sudo,默认将root用户锁定,密码未知,执行相应命令时输入当前用户的密码,由sudo用户判断是否有相应权限。此外

  1.sudo能够限制指定用户在指定主机上运行某些命令。
  2.sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
  3.sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
  4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为15分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。

  

  以下是一些个人的总结

  安全角度:sudo默认将root锁定,无论是本地、远程,SSH或桌面都无法登录,想要字典暴力破解root基本是不可能,想要破解只能从其他用户下手。首先得知道用户名,其次破解了该用户也未必有足够的权限。

  用户角度:执行命令时需要输入密码以提醒用户再次确认,同时输入密码有一定的有效期,避免了以root登录可以在任何时候做任何事的情况。

  管理角度:可以为不同的用户指定不同的权限(要实现这个还需要进一步学习sudo的配置),而且还可以通过日志记录用户的操作。

November 6, 2008

VMWare克隆后Ubuntu的"No such device eth0"错误

Filed under: 1.9 操作系统 — Eric Tou @ 10:30 pm
Tags: , , , ,

环境:VMWare 6.5,Ubuntu 8.10 Server

  在本地为Ubuntu创建VMWare的虚拟机后,复制,创建一个新的克隆镜像,启动,网卡无效,显示错误”eth0: ERROR while getting interface flags: No such device”。

原因

  新克隆的虚拟机镜像的网卡mac地址已经变更。打开虚拟机的.vmx文件,ethernet0.generatedAddress项记录了该虚拟机的mac地址。

查看所有适配器信息

ifconfig -a

发现除了原来的eth0外,Ubuntu已经将新网卡命名为eth1。
Ubuntu保存网卡mac地址和设备名的配置文件在

/etc/udev/rules.d/70-persistent-net.rules

网卡的网络配置保存在

/etc/network/interfaces

该配置文件中只有原来eth0的配置信息。

 
解决方案1

移动/删除rules文件。(未验证)
重启后Ubuntu会创建新的rules文件。
将新网卡辨认为eth0,沿用原eth0的网络配置。
如果网络配置是自动获取IP,则无需做其他修改。

sudo mv /etc/udev/rules.d/70-persistent-net.rules
    /etc/udev/rules.d/70-persistent-net.rules.old

解决方案2

修改rules文件。(未验证)

sudo pico /etc/udev/rules.d/70-persistent-net.rules

原内容如下

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:50:xx:xx", ATTR{type}=="1", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth1"

删除eth1的配置,用eth1的mac地址替代eth0的mac地址。

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*",
    ATTR{address}=="00:0c:29:36:xx:xx", ATTR{type}=="1", NAME="eth0"

重启后Ubuntu同样会将新网卡辨认为eth0,沿用原eth0的网络配置。
如果网络配置是自动获取IP,则无需做其他修改。

解决方案3

修改interfaces文件。(已验证)

sudo pico /etc/network/interfaces

将所有的eth0替换为eth1。
如果是静态地址则同时修改相应设置。

November 5, 2008

Ubuntu Server网络配置

Filed under: 1.9 操作系统 — Eric Tou @ 8:37 pm
Tags: , , ,

环境:Ubuntu Server 8.10

  Ubuntu Server默认没有安装图形界面,网络配置需通过命令行来完成。

  如果是自动获取IP,Ubuntu会自行完成网络配置。如果要设置静态IP,在安装Ubuntu时或安装完成后都可以进行设置。

1.安装时设置

  用Ubuntu安装光盘启动后,出现选择语言界面,选择后,注意将光标停留在”Install Ubuntu Server”,按F6 – Other Options,在Base Options栏末尾输入

netcfg/disable_dhcp=true

ubuntu_install

  之后的安装过程中会逐步提示输入网络配置信息。

2.安装后设置

2.1 设置主机名

2.1.1 查看主机名

sudo hostname

2.1.2 临时修改主机名,命令执行后即时生效

sudo hostname yourhostname

2.1.3 永久修改主机名,将新的主机名写入,重启系统后生效

sudo pico /etc/hostname

2.2 设置IP地址及网关

2.2.1 查看网络配置,如果返回结果中只有lo,表示网卡未被配置

sudo ifconfig

2.2.2 临时修改IP地址,命令执行后即时生效。系统重启后,恢复原来的设置

sudo ifconfig eth0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx

2.2.3 查看路由信息

sudo route

2.2.4 临时修改缺省网关,命令执行后即时生效。系统重启后,恢复原来的设置

sudo route add default gw xxx.xxx.xxx.xxx

2.2.5 临时删除缺省网关,命令执行后即时生效。系统重启后,恢复原来的设置

sudo route del default gw

2.2.6 永久修改IP地址及网关

编辑保存网络配置的interfaces文件

sudo pico /etc/network/interfaces

默认的配置是DHCP自动分配,内容如下

auto eth0
iface eth0 inet dhcp

将其修改为,其中network和broadcast项不是必须

auto eth0
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
network xxx.xxx.xxx.xxx
broadcast xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx

2.2.7 让永久修改后的新配置生效

方法一:重启Ubuntu

sudo reboot

方法二:使用重启networking命令

sudo /etc/init.d/networking restart

方法三:重启网卡,优点是可以指定网卡,不影响其他网络接口

sudo ifdown eth0
sudo ifup eth0

2.3 设置DNS地址

编辑保存DNS信息的配置文件

sudo pico /etc/resolv.conf

最多可以使用3个DNS地址,内容如下

nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

对resolv.conf文件的修改是即时生效的,可以使用nslookup命令进行查询。

May 7, 2008

在Windows中安装Ubuntu 8.04

Filed under: 1.9 操作系统 — Eric Tou @ 5:18 pm
Tags: , , ,

  安装一个Linux很麻烦,特别是当你还想保留你现有的已安装的Windows。对于那些仅仅是对Linux好奇,想尝试一下的用户来说,为Linux和Windows配置双启动并不简单,更不用提卸载,重新安装,备份等等

  虚拟机是一个答案,另一方面,Ubuntu做得也不错。你可以通过从Ubuntu光盘启动来直接运行Ubuntu Linux而无需安装它,如果你仅仅是想尝试一下的话,这样做不会对你的环境有任何的影响。

  从Ubuntu 8.04版开始,你甚至可以将Ubuntu安装在Windows里面。这是通过Wubi 实现的 - 一个官方支持的针对Windows用户的Ubuntu安装程序。Wubi使你能够像其他Windows应用程序那样简单并且安全地安装与卸载Ubuntu。你的Windows仍保持原样,Wubi仅仅为启动进入Ubuntu添加了一个额外的选项 。Wubi并不要求你修改PC的扇区,或者是使用其他的启动引导程序,也不安装特别的驱动程序,它和其他的应用程序以同样的方式运行。

  现在,载入你的Ubuntu安装盘,点击”Install inside Windows”选项,稍等片刻,开始尝试Ubuntu吧。

WPMU Theme pack by WPMU-DEV.