新年伊始

Posted on

喜迎2013年,希望自己有个新的开始!

在U盘上用GRUB安装Archlinux

Posted on

这个可不是官方wiki上的USB安装,那是用iso文件覆盖掉整个U盘的。下面这种方法是不用毁掉U盘上的文件的方法。好,进入正题。

准备工作

我在U盘上装了GRUB,正好用GRUB来引导安装。硬盘同理。GRUB2我没用过,但同理。

什么解压archiso.img和vmlinuz之类的wiki上都有说,我还是简单写一下,备忘。重点在后面的30秒错误

下载最新的安装iso,本文写作时最新的是archlinux-2012.12.01-dual.iso。之前从也有8月份的包,11年的包,同理!

设置启动环境

解压其中的两个文件(64位的把下面的i686换成x86_64就可以了):

archlinux-2012.12.01-dual.iso/arch/boot/i686/archiso.img
archlinux-2012.12.01-dual.iso/arch/boot/i686/vmlinuz

放到你喜欢的目录,我的是U盘根目录下的/iso/Arch。同时把iso也复制到这里来。下面都以这个目录为例进行说明,请各位看官根据自己的情况做替换。

然后编辑menu.lst文件(GRUB专用,GRUB2的配置文件是grub.cfg,语法也不一样,这里不多说了,请参阅其它资料)。

title Install Archlinux
find --set-root /iso/Arch/archlinux-2012.12.01-dual.iso
kernel /iso/Arch/vmlinuz archisolabel=ARCH_201212
initrd /iso/Arch/archiso.img

注意给内核传的参数:archisolabel=ARCH_201212

跟据文件名来,你很聪明,应该一下就找出数字的规律了,修改成对应的就行了。如果archisolabel参数不正确,下面一步也通不过。

然后就开始启动哇,很顺利,然后就挂在著名的30秒错误那里了,得到一个fallback的shell。

手工解决30秒错误

下面我们就来在这个shell里手工解决。

mkdir /mnt #这个/mnt是在内存的根文件系统上,和后面安装环境的/mnt不冲突,是两个东西。你可以换成你喜欢的目录
mkdir /mnt/iso
mkdir /mnt/usb
modprobe loop
mount /dev/sdb1 /mnt/usb # /dev/sdb1是我的U盘,你的看情况
mount -o loop /mnt/usb/iso/arch/archlinux-2012.12.01-dual.iso /mnt/iso #其实挂U盘就是为了挂iso文件

好了,这个时候你可以用ls检查一下,应该有/dev/disk/by-label/ARCH_201212了。注意哦,这个东西就是刚刚内核里传的。

继续完成安装

然后Ctrl+d,退出shell,又继续了。现在就来到了真实的安装shell下面了,你可以跟着wiki走了。这里有新手安装向导的直达电梯,点击免费乘坐:Beginners' Guide(英文) Beginners' Guide (简体中文)

祝你在Archlinux的世界里愉快。

解决Archlinux安装软件时签名错误(signature error)

Posted on

最近新装了一个Archlinux在家里面当下载服务器用。

装amule的时候总是报错:

error: libxml2: signature from "Jan de Groot <jgc@archlinux.org>" is invalid

同样,之前装php apache mysql的时候也有类似的错误:

error: libmysqlclient: signature from "Andrea Scarpino (Arch Linux) <andrea@archlinux.org>" is invalid
error: mysql-clients: signature from "Andrea Scarpino (Arch Linux) <andrea@archlinux.org>" is invalid
error: apr: signature from "Jan de Groot <jgc@archlinux.org>" is invalid
error: apr-util: signature from "Jan de Groot <jgc@archlinux.org>" is invalid

archlinux官方wiki一看,嗯,似乎是PGP key的问题,那照wiki来吧。

先删除旧的东西:

# rm -rf /etc/pacman.d/gnupg/

再初始化:

#pacman-key --init

这一步要多长时间?我等了半个小时还是这样,后面看wiki才知道是系统的熵不够。那我们来产生一点熵吧,随便按键盘鼠标就行了,不过这样要按好久去了。。。。

wiki上有说明:

The haveged solution is not just for use over SSH: it's a great way to get some entropy quickly. If you're having problems with pacman-key --init taking ages then you should try this solution.

所以强烈建议你在上一步删除gnupg目录之前把haveged包安装好。

然后再在运行pacman-key --init之前,运行:

# haveged -w 1024

这样就有足够的熵了。用完了就可以把这家伙扔了,一般用不到要那么多熵的:

# pacman -Rs haveged

如果你已经因为签名问题装不上haveged了,也没关系,不用乱按键盘鼠标,这样一点不优雅。。。。

跟我来,切换到tty2(Ctrl+Alt+F2)登陆进去(什么用户都可以),运行一些命令:

ls -R /

du /

看你系统文件的多少了。如果不是root的话,这些命令可能会报一些文件没有权限,不用管。如果这些命令都运行完了pacman-key --init还没有退出的话,再来一次吧。最多两三次就可以让初始化完成。反正我只装了base和base-devel包,两个命令没跑完就初始化完成了。

然后再来:

# pacman-key --populate archlinux

很可能会问你如下类似的问题:

Are you sure that you want to sign this key with your
key "Pacman Keychain Master Key <pacman@localhost>" (7E299F5A)

The signature will be marked as non-exportable.

Really sign? (y/N)

注意,默认是N,一定要回答y,大概有五个吧。完成后继续:

# pacman-key --refresh-keys

就把gnupg下的key都弄成最新的啦。

然后继续安装amule,X,和刚才那个问题一点没变,还是签名有问题!!

再一顿wiki,发现一段话:

Removing stale packages

If the same packages keep failing and you are sure you did all the pacman-key stuff right, try removing them like so rm /var/cache/pacman/pkg/badpackage* so that they are freshly downloaded.

This might actually be the solution if you get a message like error: linux: signature from "Some Person <Some.Person@example.com>" is invalid or similar when upgrading (ie. you might not be the victim of a MITM
attack after all, your downloaded file was simply corrupt).

原来。。。是要“rm /var/cache/pacman/pkg/badpackage*”之后重新下载,那我们来吧,看看报错的是什么软件包就删什么:

# rm /var/cache/pacman/pkg/libxml2-2.8.0-1-i686.pkg.tar.xz

连上面装php的时候的东西一起搞了:

# rm libmysqlclient-5.5.28-1-i686.pkg.tar.xz
# rm mysql-clients-5.5.28-1-i686.pkg.tar.xz
# rm apr-1.4.6-1-i686.pkg.tar.xz
# rm apr-util-1.5.1-1-i686.pkg.tar.xz

好了,再来安装就顺利通过。

设置在Ubuntu 12.04下面使用VGA连接显示器的分辨率

Posted on

显示器连接主机一直都是使用的DVI线,倒也省心,无论是windows下还是linux下面都可以自动识别最佳分辨率。

可是最近入手了树莓派(raspberry pi),上面只有HDMI和RCA video接口。

想接在同一台显示器上用,这可难到我了,DELL U2311H这个显示器只有VGA,DVI和DP这三种接口,没有HDMI。鉴于目前的技术原因,显卡的DP输出倒是能轻松地转为HDMI,但是你要让显卡输出的HDMI转为DP口就不那么容易了,即使有设备也是很贵的。

好吧,方案出来了,只有让VGA连接到主机了,然后买一个DVI到HDMI的双向转接头。转接头上的DVI是公头,HDMI是母头。这样就把转接头接到显示器上的DVI接口上,然后用一根HDMI线就可以连接了。开机很顺利,两个都使用正常。

用VGA接主机,进入windows下面需要重新设置一下分辨率,毕竟是模拟接口,取不到显示器的信息。

到Linux下,分辨率和windows一样,变成了1024x768。本以为像Windows一样设置一下就行了。打开gnome3的系统设置,在显示选项里一下傻眼了,什么!只有1024x768和800x600两个选项????

那就直接设置吧:

$ xrandr --output VGA1 --mode 1920x1080 --rate 60
xrandr: cannot find mode 1920x1080

SH1T,竟然告诉我没有这个模式。马上一顿google,找出来的全是修改xorg.conf之类的配置文件。可是ubuntu12.04下面哪去找个这文件啊!!!!作罢。

继续找。。。。找到一个文章:VMware 8安装Ubuntu 12.04分辨率没有1920*1080如何解决

貌似很对我胃口。开整。

首先确定自己显示器的接口是什么,使用强大的xrandr命令,设置双显示器啊什么的就靠它。

$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
VGA1 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0*
   800x600        60.3     56.2 
   848x480        60.0 
   640x480        59.9 
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)

好,看到了吧,VGA1 connected。叫VGA1。只支持列出的几种模式。

那我们来查一下1920x1080的信息,使用cvt命令。

$ cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

好,不错,我们来新建一个模式吧:

$ sudo xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

注意参数--newmode后面跟的就是上一条命令输出的Modeline后面的所有字符串,复制过来就可以了。

然后添加进去:

$ sudo xrandr --addmode VBOX0 "1920x1080_60.00"

完成,再去看看显示里是不是多了一个你想要的分辨率了?

也可以直接手工设定了:

$ xrandr --output VGA1 --mode 1920x1080 --rate 60

心情舒畅了。

干掉Ubuntu下面Gnome3的重复图标

Posted on

Gnome3我比较喜欢,虽然它还有不少的Bug,但依然不能阻挡我的热情。

可惜,在Ubuntu上装的Gnome3有个超大的Bug,就是应用程序列表里的图标一般有两套,一个清晰的,一个模糊的,然后还有一些命令行的程序,太丑太难看了,这个问题纠结我很久了,一直没找到解决方法,今天得到高人指点,删除menu-xdg软件包就是了。就一条命令:

$sudo apt-get remove --purge menu-xdg

再看看程序列表,是不是整个世界清爽了?

PS,关于menu-xdg,在Archlinux的wiki上有介绍:

xdg-menu - generates menus for

  • twm
  • ion3
  • WindowMaker
  • fvwm2
  • icewm
  • blackbox
  • fluxbox
  • openbox
  • awesome

嗯,学习了。