LiveLinux系列(2)–使用Grub2启动不同媒介

  • Post author:
  • Post category:Ubuntu
  • Post comments:2评论

上一篇文章介绍了如何在U盘上安装grub2,这篇讲解一下如何编写grub.cfg文件来启动不同的启动媒介,包括启动安装好的操作系统,Linux光盘镜像,PE光盘镜像等。

1.启动已安装的WinXP/Vista/Win7系统

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
	insmod part_msdos
	insmod ntfs
	set root='(/dev/sda,msdos1)'
	chainloader +1
}

核心的部分是

	set root='(/dev/sda,msdos1)'
	chainloader +1

set root 语句是设置安装Windows系统的分区,'(/dev/sda,msdos1)’等价于(hd0,1)。

2.启动已安装的Linux系统

menuentry 'Ubuntu, with Linux 2.6.38-11-generic' --class ubuntu --class gnu-linux --class gnu --class os {
	insmod part_msdos
	insmod ext2
	set root='(/dev/sda,msdos3)'
	linux	/boot/vmlinuz-2.6.38-11-generic root=UUID=9fbd205b-1151-41c8-b48f-c8e0887f8d60 ro   quiet splash vt.handoff=7
	initrd	/boot/initrd.img-2.6.38-11-generic
}

上述给出的比较详细的写法,实际上可以写的更加简单一些:

insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos3)'
linux /boot/vmlinuz-2.6.38-11-generic root=UUID=9fbd205b-1151-41c8-b48f-c8e0887f8d60 ro
initrd /boot/initrd.img-2.6.38-11-generic

linux是代替grub中的kernel指令,该指令后面的root参数必不可少,root参数后面要给出linux系统安装分区的位置,可以用uuid表示,如给出的例子所示,也可以用(hd0,3)这种传统的方法表示。

3.启动WinPE文件

menuentry 'Win7PE' --class windows --class os {
        set root='(/dev/sda,msdos4)'
        ntldr /boot/win7pe.bin
}

直接使用使用ntldr启动即可。

4.启动Dos镜像文件

Dos镜像文件一般为img格式,需要通过memdisk来启动,一般img会带上对应的memdisk文件。对于大于1.44Mb
的img文件,还需要添加c h s参数。实例如下:

menuentry 'DTSTool' --class dos --class os {
        set root='(/dev/sda,msdos4)'
        linux16  /boot/isolinux/memdisk  c=147 h=5 s=36 floppy
        initrd16 /boot/imgs/DTStool.IMA
}

使用linux16和initrd16来启动Dos镜像,c,h,s参数的设置方法可以参考:
http://www.syslinux.org/wiki/index.php/MEMDISK

继续阅读LiveLinux系列(2)–使用Grub2启动不同媒介

Ubuntu下APK文件反汇编

最近想研究一下qtadb,所以想得到qtadb.apk的源码,可惜网上没有给现成的,好在是java写的,反汇编一下可以凑合。具体方法如下:

1.解压APK文件

7z qtadb.apk -oqtadb

可以得到一个叫 classes.dex的文件,这个文件中就是油java文件编译成的class文件的合集了

2.生成jar文件

使用dex2jar生成包含class文件的jar。

dex2jar.sh qtadb/classes.dex

dex2jar下载地址:http://code.google.com/p/dex2jar/

3.使用jd-gui获得源码

jd-gui是个图形化的将jar中的class文件转化为java代码的程序。

直接打开由dex2jar生成的jar文件,然后保存源代码即可。

继续阅读Ubuntu下APK文件反汇编

更换驱动解决Ubuntu 11.10下Adobe Flash Player崩溃

  • Post author:
  • Post category:Ubuntu
  • Post comments:3评论

最近更新到Ubuntu11.10后adobe flash player开始不断崩溃,根据一些表现推断是硬件加速除了问题,正好碰上捣鼓Nvidia GT240的驱动,终于发现通过更换驱动能解决问题,下面的方法就简单了。

1.切换到tty1

Ctrl+Alt+F1

2.登录
输入用户名+“回车”+密码登录

3.停止X server

sudo services ligthdm stop

4.安装Nvidia驱动
可以安装软件源中的nvidia-current驱动

sudo apt-get install nvidia-current

也可以去Nividia 官网下载二进制驱动包NVIDIA-Linux-x86-290.10.run安装。目前测试只有这个版本的驱动工作的比较好,NVIDIA- Linux-x86-295.20的驱动会导致屏幕分裂,而其他几个版本的驱动会导致flash player崩溃。更早的版本没有测试。另外主要的是内核版本也会有影响,我现在用的的3.0.0.16的内核,ppa上3.2的版本和二进制驱动不兼 容。
安装方法:

sudo ./NVIDIA-Linux-x86-290.10.run

5.重新启动X server

sudo services ligthdm start

6.切换回GUI

Ctrl+Alt+F7
继续阅读更换驱动解决Ubuntu 11.10下Adobe Flash Player崩溃

Ubuntu 11.10 启动美化

一、安装burg系统引导器

1.从PPA源安装burgs

sudo add-apt-repository ppa:n-muench/burg
sudo apt-get update
sudo apt-get install burg burg-themes

安装burg引导

sudo burg-install "(hd0)"

或者

sudo burg-install /dev/sda

更新burg配置文件

sudo update-burg

2.隐藏启动提示“grub loading”

burg启动时会提示“grub loading”,是在是太碍眼,要去掉这个稍微有点麻烦,需要重新编译burg。

需要修改的源代码详见:

http://code.google.com/p/burg/issues/detail?id=29&q=grub%20loading

可使用

sudo apt-get source burg

来获取burg源代码。注意代码中可能有bug……

3.修复plymouth主题

burg和plymouth主题兼容不是很好,需要使用以下方法修复:

二、配置plymouth主题

配置plymouth方法较为简单,主要替换相应的默认plymouth主题文件即可。

sudo update-alternatives --config default.plymouth

sudo update-initramfs -u

三、ligtm配置

自ubuntu11.10中,ligtm配置在/etc/lightdm文件夹下,主要修改unity-greeter.conf,里面内容非常简单,看着说明修改就行了,主要是修改背景和logo文件。

继续阅读Ubuntu 11.10 启动美化

ssh代理配置

首先需要ssh一枚,免费收费皆可。

1.创建ssh代理守护进程


ssh -N -v [email protected] -D 127.0.0.1:7070

之后就可以在本机的7070端口使用stocks代理来XXXX了。

2.配置密钥认证

默认情况下,ssh代理在每次登录的时候都需要使用密码认证,每次输入密码十分繁琐,可以使用rsa密钥认证方法来解决这个问题。 首先在本机生成密钥:


ssh-keygen -t rsa

直接按三次回车,不必理会其中出现的密码输入提示。生成密钥一般在~/.ssh目录下面。 将生成的密钥上传到服务器:


cd ~/.ssh

ssh-copy-id -i id_rsa.pub [email protected]

最后,为ssh-agent进程添加密钥,否则无法通过认证


ssh-add

3.使用plink指定密码登录

如果服务器不支持rsa认证的时候,可以使用plink指定密码登录ssh。


sudo apt-get install putty-tools

plink -N -v username@hostip -D 127.0.0.1:7070 -pw password

继续阅读ssh代理配置

解决XBMC运行时提示 undefined symbol

  • Post author:
  • Post category:Ubuntu
  • Post comments:0评论

安装了最新的XBMC后,发现无法播放任何视频文件。表现为点击视频文件后没有反应,或者提示无法播放视频。查看在~/.xbmc目录下的log文件发现问题出在这一部分:

Unable to load /usr/lib/xbmc/system/players/dvdplayer/avformat-52-i486-linux.so, reason: /usr/lib/xbmc/system/players/dvdplayer/avformat-52-i486-linux.so: undefined symbol: BZ2_bzDecompressInit

即avformat-52-i486-linux.so动态链接库无法找到符号BZ2_bzDecompressInit,而BZ2_bzDecompressInit是另外一个动态链接库libbz2.so中的一个函数。熟悉gcc的人可能就明白了,这是由于xbmc无法加载到libbz2.so库引起的,所以我们需要手动指定xbmc加载这个动态库。 首先找到本机中libbz2.so的位置(可能需要安装相应的软件包:libbz2)。在我的Ubuntu11.10中,libbz2.so位于/lib目录下面,其文件名为libbz2.so.1.0.4,因而在xbmc运行前使用export LD_PRELOAD=”/lib/libbz2.so.1.0.4″指定该库的位置即可。可以编辑/usr/bin/xbmc文件,将export LD_PRELOAD=”/lib/libbz2.so.1.0.4″加入该文件头部。

#  File:/usr/bin/xbmc
#  This Program is distributed in the hope that it will be useful,
......

SAVED_ARGS="$@"
prefix="/usr"
exec_prefix="${prefix}"
datarootdir="${prefix}/share"
LIBDIR="${exec_prefix}/lib"

#add libbz2 here
export LD_PRELOAD="/lib/libbz2.so.1.0.4"
# Check for some options used by this script
.......

继续阅读解决XBMC运行时提示 undefined symbol

SQLite指南-Ubuntu篇

SQLite是一个轻量级数据库系统,SQLite基于纯C实现,具有良好的跨平台特性。SQLite使用简单,能够应付小型的软件开发应用。在开发中使用SQLite,你需要从SQLite官方网站下载源码和库文件,当然,也可以自己编译库文件。

一、下载SQLite源码

这里获得SQLite源码,解压到任意目录。

二、编译静态库文件

首先生成目标文件

gcc -c sqlite3.cc -o sqlite3.o 

从目标文件生成静态库

ar cvr libsqlite3.a sqlite3.o 

使用静态库文件生成目标 假设在SQLiteDBTest.cpp文件中使用了sqlite的相应接口,静态编译的方法如下:

gcc SQLiteDBTest.cpp libsqlite3.a -lpthread -ldl -lstdc++ -o SQLiteDBTest

其中,-lpthread -ldl参数指定了sqlite使用的线程库和dl库(参见http://www.sqlite.org/howto compile.html),lstdc++指定使用标准C++库。

三、编译动态库文件

生成动态库文件

gcc -shared -fPCI -o libsqlite3.so sqlite3.o -ldl -lpthread 

注意链接参数-ldl和-lpthread 使用动态库文件生成目标

gcc SQLiteDBTest.cpp -lsqlite3 -L. -lstdc++ -o SQLiteDBTest 

其中-L.参数指定gcc优先从当前目录搜索库文件,如果不加该行,则优先从系统目录搜索库文件。 一般开发过程中,如系统中自带sqlite库,一般不需要自行编译相应库文件。如若要使用自行编译的库文件,最好安装时将其拷贝到系统库目录中。不然的话,对于自行编译的动态库,需要指出其位置,程序才能正常运行,使用如下命令添加查找库文件位置。

export LD_LIBRARY_PATH=$(pwd)

REF:

1.How To Compile SQLite

2.gcc详解以及静态,动态库的生成 1

3.gcc详解以及静态,动态库的生成 2

继续阅读SQLite指南-Ubuntu篇

写在Ubuntu Oneiric Ocelot之后

  • Post author:
  • Post category:Ubuntu
  • Post comments:1评论

昨天纠结的升级了Ubuntu Oneiric Ocelot,其中过程又是一次坑爹之旅,我现在只好建议玩Ubuntu的同学一定要做好使用光盘镜像升级的万全的准备啦。像我的Ubuntu在升级后就无法进入控制台了,一直卡在配置网络的命令行上,我在想是哪个脑残设计的启动服务顺序,敢情网络不配置好就不让用操作系统的不是,你起码让我进入tty1修改设置啊……使用update-manger -d 升级失败后还好有留着一个启动U盘,果断从镜像启动全新安装了。

Ubuntu Oneiric Ocelot的正式版已经比测试版本好多了,基本上以前存在的一些小问题都解决了,Unity的易用性又得到了一次提升,各种系统整合也好多了,相比WIn8哪个坑爹的想在
PC上运行平板界面的货好多了。

从8.10开始玩Ubuntu,那时候Ubuntu基本处于无法使用的状态,基本多少任何杀手级应用,没有多少硬件厂商支持(哈哈,没有A卡和N卡的厂商驱动,真是悲催……),那时候的FF卡的我都不想打开,Ooo也很残废(现在它快终于彻底费了,其实我听高兴的,毕竟libre系的前景要比它好多了),各种上网不能……

现在,Ubuntu Oneiric Ocelot尽管还不够用,但是,无论是底层还是应用上,都有了很大的改进,Gnome3和Unity的变革,总算说明那群Greek们懂得了“系统是给人用的”这个简单的道理了,新版的SoftCenter也算开始了Linux 最开始想做到的软件管理方式了。其实相什么Win App Store,App Store说创新之类一对Linux发行商都可以在后面笑了,Linux系很早就开始了集中式的软件包分发体系,只不过没有像Apple那样会做销售,也没有什么利润分成之类(Linux天生如此),没引起人们的关注。对于Ubuntu,官方源+PPA+googlecode/github基本构成了从正式到非正式的软件包分发体系,基本上避免了人们去一些下载网站下载软件的习惯。当然,国内某些XXXX学的很像,对用户来说是件好事。

对于Ubuntu的前景来说,我知道它会越来越好,但怕它的差距会越来越大。这些差距纯粹应用方面的,一个成功的系统,应该是对开发商友好的,甚至它某些时候需要去讨好开发商,显然Liunx没这个习惯,Linux内核还好些,开发的慢,比较稳定,那些做桌面环境简直就是大爷……想要一个程序在几十个不太开发理念的桌面环境中生存的确太痛苦了。而在中国,盗版windows对所有操作系统厂商来说都是毒瘤一般的存在,在加上QQ,Thunder,网银(你妹的IE Only)这些Windows Only的应用影响,由Windows向Ubuntu的迁移难度太大了。Thunder是典型的业界毒瘤,建议所有BT软件在代码级别把它Ban掉,反正每回开BT,只看到Xunlei下载的,没看到Thunder上传的。另外一个杀手级的应用是游戏了,这个就不多说了,推荐一下S2game的HoN,喜欢Dota的可以试试,其实游戏算是所有应用中最容易移植到Linux中的了,只要有相应的引擎,涉及到系统层面的问题游戏引擎应该可以处理掉大部分,可惜利润问题让这个想法难以实现。

好吧,就吐槽到这里了,愿Ubuntu越来越好~~~

继续阅读写在Ubuntu Oneiric Ocelot之后