显示标签为“linux”的博文。显示所有博文
显示标签为“linux”的博文。显示所有博文

星期二, 十二月 08, 2009

安装chromeOS至本地硬盘

编译镜像,编译完后,挂载编译好的rootfs.image,然后开始后续的工作了。

分出两个空闲的ext3分区,分别设置卷标为C-STATE(hd0,7)、C-ROOT(hd0,8),第一个是home目录(可写),第二个是根目录。
将挂载的rootfs.image下面的文件通通拷贝到C-ROOT下面,然后再将其中的home目录拷贝到C-STATE下面。
chromeOS系统已经被我们写入到物理磁盘中了,然后我们再用grub来引导,下面:
[code=bash]title chrome OS-fix
root (hd0,8)
kernel /boot/vmlinuz init=/sbin/init boot=local rootwait root=LABEL=C-ROOT ro noresume noswap i915.modeset=1 loglevel=1
initrd /boot/initrd.img[/code]
上面的引导实际上是根据rootfs.image/boot/extlinux.conf来写的。

ok,现在重启系统,就可以从grub来启动本地磁盘中的chromeOS了。
其实先不着急重启,我们可以顺便修改下网络,因为像我这里上网并不是dhcp分配IP的,而需要手动设置,不然只能登录毫无意义的脱机用户了。正如chromeOS是基于debian的,可以直接修改/etc/network/interfaces文件,顺便修改/etc/resolv.conf,添加DNS。
另外,也可以修改下默认的gtk主题,直接修改/etc/gtk2.0/gtkrc。
如果需要安装部分软件包,请直接chroot进入,然后dpkg。

以上仅供测试。
补充,根目录是只读系统,可能是google为了防止用户糟蹋乱了系统的缘故?就好像把debian 5.0升级到ubuntu 9.10一样?
home目录是可写的,但在U盘中却会重启后清理干净,本地磁盘不会。
还有就是,无法挂载ntfs。

星期二, 十一月 24, 2009

building google chromium OS

粗略的介绍一下chromiumOS编译过程。
安装下面的依赖:
[code=bash]sudo apt-get install subversion pkg-config python perl g++ g++-multilib bison flex gperf libnss3-dev libgtk2.0-dev libnspr4-0d libasound2-dev libnspr4-dev msttcorefonts libgconf2-dev libcairo2-dev libdbus-1-dev wdiff lighttpd php5-cgi sun-java6-fonts git-core[/code]
然后,使用gclient获取chromiumos的源码目录(四百多兆):
[code=bash]mkdir chromiumos
cd chromiumos
gclient config http://src.chromium.org/git/chromiumos.git
gclient sync[/code]
编译脚本都在chromiumos/src/scripts下面,依次执行下面几个脚本:
[code=bash]./make_local_repo.sh[/code]
运行这个脚本之前,确保安装了reprepro,否则会提示找不到命令,这时,需要将chromiumos/repo目录删除才可以重新执行make_local_repro.sh脚本,汗~这个搞了好久Orz。
[code=bash]./make_chroot.sh[/code]
创建chroot编译环境后,需要下载chrome浏览器,改名为chrome-chromeos.zip并放到~/chromiumos/src/build/x86/local_assets,这个目录需要自己依次创建。
然后进入chroot环境:
[code=bash]./enter_chroot.sh[/code]
这时,可以创建一个脱机用户,为了防止没有网络链接的情况下无法登录:
[code=bash]cd ../platform/pam_google && ./enable_localaccount.sh USERNAME[/code]
再依次编译软件包和内核,创建磁盘镜像:
[code=bash]./build_platform_packages.sh
./build_kernel.sh
./build_image.sh[/code]
脚本执行完毕后,会如下提示:
Done. Image created in /home/yang/trunk/src/build/images/999.999.32809.061105-a1
然后会生成rootfs.image磁盘镜像,可以将该镜像转为虚拟机磁盘(vmdk):
[code=bash]./image_to_vmware.sh --from=~/Downloads/chromiumos/chromiumos.git/src/build/images/999.999.32809.061105-a1 --to=~/Downloads/chromiumos/chromiumos.git/src/build/images/999.999.32809.061105-a1/rootfs.vmdk[/code]
截图:
chromeos_on_vmware
编译好的镜像:
rootfs_image
在vmware没有体验到好处,看来要用到我的wind U100上网本了^^

更新(11.30):如果使用src/scripts/image_to_usb这个脚本来写入的U盘的话,U盘必须要大于1G(否则出现错误),而编译生成的镜像大小却小于1G。下面的方法可以将chromeOS镜像写入1G的U盘:

生成rootfs.vmdk虚拟机磁盘文件,然后用虚拟机加载vmdk镜像并启动ubuntu的livecd。目的是为了使用gparted来修改vmdk分区的大小。因为默认的vmdk里面有三个950Mb的分区,分别为C-STATE、SWAP、C-ROOT。先将中间的交换分区删掉,然后依次调整分区到下面的样子:

screenshot085

之后,退出虚拟机,在windows下用DGen(diskgen)打开vmdk文件,修改硬盘参数(终止柱面)为C-ROOT分区的终止柱面,如下:

修改前:

screenshot086

修改后:

screenshot088

然后右键点击vmdk磁盘,复制磁盘,选择源磁盘和目的磁盘拷贝即可。

更新(11.30晚),把wind U100从丁丁那里拿来,启动chromeOS很成功,系统性能很赞!但有个很大的弊端:因为某些因素(大家都清楚),部分google服务无法登陆。上图:
113020090341

登陆界面:

11302009037

在netbook中比虚拟机运行起来爽多了,很快速!哎~郁闷的某个墙啊~估计在chromeOS上市后该墙还不倒的话,chromeOS在中国发展看是够呛了。

更新(12.01):

默认chromeOS的网络为dhcp模式,若要自己修改IP的话,则需要挂载U盘,并修改/etc/network/interfaces,按照debian修改网络的方式即可。因为在U盘启动chromeOS后,根目录是只读的(home目录当然可写),所以不能修改任何文件,只能重启进入linux挂载U盘修改。还有就是,无法挂载NTFS文件系统,应该是编译内核的时候没有写入支持吧。这篇更新就是在台式机上使用chromeOS来写的,输入法为搜狗云输入法(输入有些迟缓),截图一张:

chromeos

截图工具为scort,chromeOS当然没有预装,这是我在linux下用chroot方式安装到chromeOS中的。

chromeos2

星期三, 十一月 11, 2009

ubuntu启动选项

做个记录:
[code=bash]
menuentry "Ubuntu, Linux 2.6.31-15-generic" {
insmod ntfs
set root=(hd0,2)
search --no-floppy --fs-uuid --set 863c1b013c1aec45
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.31-15-generic root=/dev/sda2 loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.31-15-generic
}
[/code]

星期二, 十月 27, 2009

不能容易的获取ubuntu的免费CD了

可以在canonical官方blog看到声明,像我这样的普通用户,已经不能够再次免费获取ubuntu的光盘了。

官方说的原因,一个是费用问题,5年内,canonical公司已经免费派送了数百万张CD(这得多少钱?汗!);另外一个原因是,不需要光盘就可以在线升级到最新版本的ubuntu。

这不是件坏事,因为每次派送来最新的ubuntu光盘后就想重装系统,安装最新版本,这完全没必要的。另外,多数的免费CD用户,大多是ubuntu光盘收藏家(甚至只是觉得好玩,贪小便宜),我曾经看到过一个用户收到的免费光盘有一大箱子(在06年的时候,可以一次派送10张光盘,而其中有for mac的,这些对大多数人来说根本就没用)。

现如今,我也收到了不少ubuntu免费光盘,最后一张是Kubuntu9.04,蓝色的封面,很好看,还有贴纸^^。

现在,免费获取光盘仅限于ubuntu团队,成员,已经刚刚认识ubuntu的人(重新注册ship账户?Orz)。

我们国人往往会贪图一些小便宜

淘宝这里竟然有卖ubuntu免费CD的!

感谢ubuntu的免费光盘,让我掌握了很多linux基础知识。

星期一, 十月 19, 2009

在ubuntu9.10 beta上安装vmware Server

可以先看看这篇howto,我在安装过程中出现了几个问题。
运行vmware-install.pl出现错误提示:Unable to build the vmmon module.
我的内核版本是2.6.31,可以到这里下载vmware-update-2.6.31-5.5.9.tar.bz2
运行其中的runme.pl,运行的时候又报错了:
insmod: error inserting ‘/tmp/vmware-config0/vmmon.o’: -1 Unknown symbol in module.
出现这样的错误,就需要重新编译内核,打补丁了。
下载内核,解包,在方才下载的vmware-update-2.6.31-5.5.9.tar.bz2中有个2.6.31-export-init_mm.patch的补丁,打这个补丁的时候报错了,看了一下里面的内容,就是修改个内核源码中文件:
arch/x86/kernel/init_task.c
然后添加下面这一段:
EXPORT_UNUSED_SYMBOL(init_mm);
然后根据这个howto来编译内核,我编译出来的内核怎么350多MB?而且安装的时候出现了错误,但是并不影响使用,-_-!。

grub2认出并添加了内核选项,重启进入新内核中,重新运行runme.pl,编译安装就非常顺利了。

有用的链接:kernel_compilation_ubuntuhow-to-install-vmware-server-2-on-ubuntu-9.04在ubuntu 9.04下安装vmware的成功经验vmware-specific-specific-5-5-x-and-kernel-2-6-31

创建/dev/null

不小心把/dev/null给删除了,可以这样恢复:
[code=bash]mknod -m 666 /dev/null c 1 3[/code]
顺便提一下,/dev/zero可以这样恢复:
[code=bash]mknod -m 666 /dev/zero c 1 5[/code]

创建完毕后,还要修改权限:
[code=bash]chown root:root /dev/null /dev/zero[/code]

ps:回归ubuntu了。

drivel-fix

星期日, 十月 11, 2009

android模拟器试用手记

ScreenShot072

测试了一下android,用起来,感觉比较混乱,或许是因为没有实机测试的缘故。

下载android的SDK,打开其中的tools目录,里面有个emulator文件,需要下面一步才能启动emulator:

进入CMD,进入tools目录,创建一个android虚拟设备,

android create avd -t 2 -n g1

//avd意思为android virtual device,-t 2为target参数,-n g1指随便填写的设备名称

//关于target id,具体可以使用命令android list targets来查看。

可以虚拟一个内存卡,插入到avd中,同上,使用命令,

mksdcard 1024M E:\android\sdcard.img  //创建一个1G的内存卡

启动emulator,

emulator -avd g1 -sdcard E:\android\sdcard.img

启动后,便能使用其中的浏览器来上网,测试软件等。

要在模拟器中安装软件(apk),可以使用adbWin

下载adbWin后,进入CMD,执行adb install package.apk就可以将软件包安装到模拟器中。另附几个adb命令:

adb devices  //查看设备

adb install <apk文件路径>  //安装软件

adb uninstall <软件名>  //卸载软件

adb uninstall -k <软件名>   //卸载软件但是保留配置和缓存文件

adb shell  //登录设备shell

adb shell <command命令>  //直接运行设备命令, 相当于执行远程命令

adb push <本地路径> <远程路径>  //从电脑上发送文件到设备

adb pull <远程路径> <本地路径>  //从设备上下载文件到电脑

附注:SDK1.6r1自带了谷歌拼音输入法,使用方法就是在输入框中,光标长按3秒钟,调出菜单选择。先汗一个-_-#,复杂。

另外模拟器旋转屏幕快捷键为Ctrl+F11。

本来打算让丁丁买HTC Dream的,不过经测试了一般,发现我们国内用户基本是用不了,因为android是基于linux系统的,而飞信,QQ,等我们常用的软件都没有官方版。我测试了一个叫做anFetion的飞信客户端,功能太单薄了,而且要命的是接入点不支持wap,只能使用NET和wifi。而android操作系统,在国内,相对于软件丰富的Symbian或winMobile等是非常受限制使用的。

不过丁丁没法使用,我还是非常喜欢的,因为android是基于linux系统的,非常容易开发,且最重要的是它是google的产品^^。

星期二, 十月 06, 2009

MySQL修改密码

一:修改密码:
格式:mysqladmin -u用户名 -p旧密码 password 新密码
实例:mysqladmin -uroot -p123456 password 123abc
上面将root 密码修改123abc,原密码为123456,   -u,和-p后面是没有空格的
root如果开始密码为空则可以省略就密码:
mysqladmin -uroot -password ab12
二:MySQL(root用户)密码忘记重置
1、首先停止正在运行的MySQL进程
Linux下,运行 killall -TERM mysqld
Windows下:net stop mysql.或在任务管理器中结束mysql进程 。
2、以安全模式启动MySQL
Linux下,运行 /usr/local/mysql/bin/mysqld_safe –skip-grant-tables &
Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe –skip-grant-tables
3、完成以后就可以不用密码进入MySQL了
Linux下,运行 /usr/local/mysql/bin/mysql -u root -p 进入
Windows下,运行 X:/MySQL/bin/mysql -u root -p 进入
4、更改密码
>use mysql
>update user set password=password(”新密码”) where user=”root”;
>flush privileges;
三:连接远程mysql
mysql -h124.238.116.123 -uroot -p123456
连接ip为124.238.116.123的mysql,用root登录,密码:123456
mysql -uroot -p123456
连接本地mysql
四:备份数据库:
mysqldump -uroot -p123456 –opt database_name>path/backup_name
database_name:要备份的数据库名
path/backup_name:备份文件的路径,如/home/database_name.sql

recover grub2 use liveCD

The linux partition is /dev/sda6.
first,boot the liveCD.
then,open the terminal,and type this line:


sudo mount /dev/sda6 /mnt
sudo mount --bind /dev/ /mnt/dev
sudo chroot /mnt
update-grub
grub-install --recheck /dev/sda
sudo umount /mnt
sudo umount /mnt/dev

星期二, 九月 15, 2009

install squid on debian

squid是一个小型的代理服务器。

apt安装squid,配置文件在/etc/squid/squid.conf。下面是简单的修改默认配置文件:

http_port 1234 #端口

#允许的网段
acl our_networks src 192.168.0.1/24

#设置our_networks访问权限
http_access allow our_networks

#设置访问密码
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
acl auth proxy_auth sdau
http_access allow auth

可以利用htpasswd来生成一个密码文件:
htpasswd -cb /etc/squid/passwd user password

星期二, 八月 04, 2009

非常好用的ssh客户端(4win)

如题,xshell
putty强大的多。
xshell

星期一, 七月 27, 2009

opera for linux的QT4版。 Link...

opera for linux的QT4版。
Link

星期三, 七月 22, 2009

获取apt密钥

gpg --keyserver wwwkeys.pgp.net --recv 0624A220
gpg --export --armor 0624A220 | sudo apt-key add -

星期三, 七月 15, 2009

NFS备份方案

使用NFS来备份web服务器。
以下的操作都是在root下进行。
NFS Server端:192.168.2.2
Web Client端:192.168.2.1

NFS Server端安装NFS服务:
apt-get install nfs-kernel-server nfs-common portmap
Web Client安装NFS 客户端:
apt-get install nfs-common portmap

在NFS Server端创建需要共享的NFS目录,并更改目录权限,如下:
mkdir /var/www_nfs
chown nobody:nogroup /var/www_nfs

修改/etc/exports,指定客户端IP和目录权限。
/var/www_nfs 192.168.2.1(rw,sync,no_root_squash,no_subtree_check)
然后运行命令exportfs -a,使之生效。

在Web Client端创建NFS挂载目录:
mkdir /var/www_nfs_client
挂载NFS服务器的共享目录:
mount 192.168.2.2:/var/www_nfs /var/www_nfs_client
添加到fstab中,以便自动挂载:
[code=bash]192.168.2.2:/var/www_nfs /var/www_nfs_client nfs rw,sync,hard,intr[/code]

使用rsync来同步所要备份的文件夹到NFS中,如下(增量备份):
rsync -avlR --delete /var/www /var/www_nfs_client

添加到crontab即可。

需要注意的是,挂载的nfs目录的权限,取决于/etc/exports文件,可以通过man 5 exports来查看帮助。

文件夹增量备份 rsync -avlR --delete A B

文件夹增量备份
rsync -avlR --delete A B

移动硬盘引导moblin2.0

没有一个较大的U盘,而且笔记本也没有光驱,所以引导moblin只能用手头仅有的移动硬盘了。
引导工具为grub。
先创建一个空闲的ext3分区,然后挂载下载的moblin光盘镜像,拷贝镜像中的俩文件夹(isolinux,LiveOS)到新建的ext3分区中。
填写menu.lst如下字段:
title MOBLIN 2.0 Beta
root (hd1,1)
kernel /isolinux/vmlinuz0 root=CDLABEL=moblin rootfstype=ext3 ro liveimg quiet
initrd /isolinux/initrd0.img

注意的是,CDLABEL后面的“moblin”是新建ext3分区的卷标。
然后启动就ok了。
顺便发送几张截图:
样子很好看,X性能貌似不错,启动速度很快,桌面应用尽是gnome程序。
浏览器:
Screenshot_1
文件管理器:nautilus
Screenshot_2
终端:
Screenshot_3

摄像头,wifi,均可驱动,另外蓝牙没有尝试,应该没问题。

有个128(不到)MB的U盘,我打算弄个linux系统进去。装哪个版本好呢? U...

有个128(不到)MB的U盘,我打算弄个linux系统进去。装哪个版本好呢?
U盘容量忑小了。

星期一, 七月 13, 2009

chrome OS是基于linux的。 linux上面没法使用工行的网银。 li...

chrome OS是基于linux的。
linux上面没法使用工行的网银。
linux上面没法使用QQ来视频聊天。
linux上面没法使用很多windows下的东西。
所以,chrome OS固然非常期待,但是还是少不了windows。windows还是托拉斯。

星期一, 五月 18, 2009

解决Gmail中Delivery Status Notification问题

cron每次执行一个任务后,会给你发送一个执行成功或失败的邮件,从而提醒你任务执行状况。

但是每每发送邮件均失败,然后在gmail中就有一封 “Delivery Status Notification ”的邮件,累计下来,数量惊人。

发送失败的原因很简单,因为debian中设置的mail账户不对。可以直接用crontab -e来添加你的mail账户如下:

MAILTO=yoyoliyang@gmail.com

如上,即可,从此gmail中清净了。

星期五, 五月 15, 2009

Crontab注意事项

m h dom mon dow分别代表了:
# m------------ minute (0 - 59)
# h------------ hour (0 - 23)
# dom------------day of month (1 - 31)
# mon----------- month (1 - 12) OR jan,feb,mar,apr ...
# dow------------ day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#
# * * * * * command to be executed
时间调度表格















































EntryDescriptionEquivalent To
@rebootRun once, at startup.None
@yearlyRun once a year0 0 1 1 *
@annually(same as @yearly)0 0 1 1 *
@monthlyRun once a month0 0 1 * *
@weeklyRun once a week0 0 * * 0
@dailyRun once a day0 0 * * *
@midnight(same as @daily)0 0 * * *
@hourlyRun once an hour0 * * * *

在crontab中直接执行二进制命令,需要在后面添加>/dev/null 2>&1