谦卑的程序员






         静水流深

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线路的意图。(当然其实学好了都一样,这个纯属个人问题)

February 3, 2009

如何创建你自己的Windows Live CD

Filed under: 1.9 操作系统 — Eric Tou @ 4:48 pm
Tags: , ,

  之前有记录过一篇《便携式WinPE》,介绍如何将别人已经做好的WinPE改成Portable的。现在移动硬盘里装的就是这个,重新安装系统也不用到处找光盘什么的,只要主板支持USB启动就好,可谓是居家旅行之必备。

  于是也会好奇这个WinPE是怎么弄的,前几天在codeproject的newsletter里读到了一篇<How To Make Your Own Windows Live CD>,虽然还是使用工具,但好歹是一个小小的进步。

以下翻译自上文,有兴趣的同学可以DIY

  Live CD允许你从光驱启动计算机并对你的系统实现不同的功能,比如Live CD非常适于恢复数据、修复问题或者当你使用不是自己的计算机时拥有一个由自己支配的自定义桌面。

  Live CD在Linux世界相当普遍,但并不常听说Windows Live CD

  今天我们要向你展示如何创建自定义的Windows Live CD

需要的工具
Bart PE
你的Windows安装盘(注:或者i386文件夹)

步骤

1. 下载并安装最新版的Bart PE。运行PE Builder。这是程序的主窗口。

pe-builder

2. 所有你想要添加的额外功能通过插件的手段实现。有很多插件可供选择。插件不过是向你的Live CD添加额外软件的手段而已。你可以从这里访问Bart PE的插件库。(注:相当多的插件,这张Live CD被打造成什么样子,或者说要实现怎样的功能,完全取决于你选择的插件)

3. 为了实现我们的目的我们需要一个叫做Windows XPE的插件以使我们能够启动进入图形化界面环境。你可以自由的为你想添加的功能选择其他的插件。那里有磁盘恢复、办公、备份、磁盘镜像等插件。

4. 现在插入你的Windows安装盘,为PE Builder指定包含Windows安装盘的CD驱动器或者其复制文件的路径。(如果你有一台笔记本和i386文件夹就更好了)

5. 点击底部的plug-ins按钮。你可以添加更多的软件或是调整现有的软件/插件。如果你得到错误提示,可能是你之前提供的源路径不对。

pe-builder-plugins

6. 点击add按钮,指向你存储Windows XPE插件的位置将其添加。我们使用了XPE插件后你可以安全地禁用Nu2shell,PENETCFG和A43插件因为它们提供的功能XPE插件已经包含。

7. 点击close。现在你可以刻录光碟或者保存一个ISO用于测试以便之后刻录。点击build之后PE Builder就会开始工作。

图略

8. 如果编译的过程无错误地结束,你已经创建了你自己的Live CD。

  注:我的编译过程5分钟不到,生成的文件大小270MB。作者在Virtual Box虚拟机中测试生成的iso的贴图略去。以下是运行的WinXP PE的桌面贴图。感觉运行速度比较一般,还有待调校。

winxp-pe-desktop

  有其他的小技巧使你可以自定义启动时的文本,墙纸以及其他东西。不过是需要编辑一些文件的小麻烦而已。不管有没有这个可视的自定义环境,现在你都已经拥有了一个包含符合你特定需要的工具的,功能完整的Live CD。通过探索这样一个工具,还有无数其他的可能性在等待着你。比如你可以创建一张包含了所有你喜爱的程序和文档的Live DVD。
————————————————–

Bart PE的简介

  翻译完上面的动手文章后,我们来介绍一下其中用到的Bart PE。引用自Bart PE的主页

什么是Bart PE和PE Builder?

  Bart是作者的名字,他开发的PE Builder帮助你通过原始的Widnows XP或Windows Server 2003安装盘创建一个基于BartPE(Bart Preinstalled Environment Bart预装系统)Windows启动光盘,非常适用于PC维护。

使用Windows内核的优势

  对NTFS分区的完全读写访问

BartPE vs. Windows PE?

  BartPE不是由Microsoft支持的。Windows PE才是Microsoft官方产品。
  BartPE有图形化用户界面。Windows PE有一个命令行界面。
  创建BartPE安装盘的工具是免费软件。Windows PE只针对Microsoft OEM用户。
  BartPE允许无限制的自定义插件。Windows PE只有有限数量的插件选择。

BartPE和Windows PE的技术差别?

  目标 - Microsoft把Windows PE看做一个安装平台。Bart把Windows PE 看做下一代的拯救回复平台。

  开始菜单 - Bart的builder提供简单、动态、功能强大的开始菜单(Nu2Menu, 见截图). Microsoft的builder不提供开始菜单,只有命令提示符。

  创建的源 - Bart的builder能够从Windows XP Home Edition或者一个 预装的Windows XP版本创建(不需要CD).

  插件 - 通过PE Builder你能使用插件轻松添加应用程序、驱动和工具。这使PE Builder特别强大。最终用户能将不同软件商的插件整合到一个光盘镜像中。

  网络支持 - PE Builder包含自己的网络支持工具(bartpe/penetcfg) 来启动TCP/IP和Microsoft Client. 各种TCP/IP设置如: dynamic/static ip-address, subnet-mask, default gateway, dns-servers computer-name, workgroup能即时修改。你也能创建一个供选择的预定义档案。Microsoft Windows PE只支持DHCP或是使用winbom.ini的固定的设定。
  此外还有一个Erwin Veermans制作的插件(NwDskPe) 能为BartPE载入 Netware Client(IP/IPX).

  文件共享- BartPE能够开启文件共享支持。

  VNC - 因为支持文件共享,你同样可以运行UltraVNC。

  Dos支持 - Bart’s builder有一个”dospe”插件。

  授权- Microsoft Windows PE只针对企业/OEM客户,BartPE面向所有人。

  64-Bit - Bart’s builder不支持Windows 64-bit版本。

————————————————–

后记

  比较了生成的文件结构,和原来的老毛桃版本不一样,怎样把自制的版本Portable暂时还没什么头绪,以后再研究。

  默认生成的只是一个可以运行的GUI,并没有太多的功能,还需要根据需要选择插件自己定制。看着长长的插件列表,仿佛又看见了一个时间杀手。需要查询一下是否已经有在Bart PE基础上提供的插件方案。

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命令进行查询。

September 9, 2008

便携版WinPE

Filed under: 1.9 操作系统 — Eric Tou @ 11:05 pm
Tags: ,

  到这里下载老九WinPE 老毛桃修改 撒手不管版(Build 070911)

  确认主板支持USB-HDD启动,内存大于256MB。解压下载的压缩包,得到BootCD_070911.iso。准备好移动硬盘活动主分区,NTFS和FAT32分区均可。将iso中的MINIPE目录解压至根目录,将WINNT.XPE解压至根目录,将WXPE目录下的SETUPLDR.BIN和NTDETECT.COM,将SETUPLDR.BIN文件改名为ntldr。
  完成后移动硬盘主分区根目录结构如下:

  <MINIPE>
  NTDETECT.COM
  ntldr        –原SETUPLDR.BIN
  WINNT.XPE

  重启计算机,从移动设备启动,即可进入WinPE。

June 20, 2008

开源DOS模拟器 - DOSBox

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

    As a relatively early computer user, I start my adventure from MS-DOS. About DOS, there is a kind of feeling mixed with love and hate, I love the command line, but remember the Config.sys and Autoexec.bat? remember the Emm386.exe? remember ‘DOS = High, Umb’? remember everything we did for one more kb additional memory to run a … Turbo C compiler?
    OK, that’s not true, I seldom run it now, that was what I usually do when I was in university. Currently I only use DOS to run the old games only support DOS. You may say i am going farther from the programming things. But the command line, the config files (and Quick Basic) could be the beginning of a programmer.

    How about you? Still have a old DOS installation on your disk? Or, have a virtual machine of DOS? As a programmer, you did better. But may I ask a question? Do you still have a floppy driver and How can you find the damn installation floppy? You use image files and floppy simulator? Yes you do it better and better.
    If you want to go through this way, you can get FreeDOS, a open source, free DOS-compatible operating system for IBM-PC compatible systems.
    You can install in on you hard disk, or use a PC emulator (Virtual Machine software) to install FreeDOS. You can find PC emulators for all computer platforms (Windows, Linux, Mac.) You can even run FreeDOS using a PC emulator written in Java : JPC, right in your web browser! Cool, we will talk about it later.

    Now let’s get back to the point. Don’t you think it’s troublesome? Try DOSBox, It support Windows, Linux, Mac. You can easily install it as a programe on you desktop, get a command line window after ran it, and then run the game in the window, don’t need to care about the memory things any more.
    You can get a portable release at PortableApps.com.

    I even have DOSBox installed on my PSP Slim (PSP 2000), It means I can play old DOS game on my PSP. Someone even installed the Win 3 and Win9x on the DOSBox hosted at PSP Slim. I guess I used too many EVEN. Do some search work you can find the informations.

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.