由于要测试一些代码,其运行结果会受到多核并行的影响,所以希望能够调整使用的 CPU 数量。网络上之前看到的方法是在内核的启动参数上添加一个 maxcpus,但是如果这样的话每切换一次都要重启一次,是在太麻烦了。想想 Linux 应该是很强大的,所以可以动态修改 CPU 数量才对。
无意中看到 Linux 代码的 Documentation 文件夹下有个文件叫做 cpu-hotplug.txt,于是就看了一下,发现可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夹按照 cpuX 的命名方式,如 cpu0、cpu1、cpu2 等。这些文件夹里面有一个 online 文件,如果其值为0则禁用该 CPU,如果为1则启用该 CPU。注意,这里需要 root 权限哦。
因为我只要在单核和多核之间切换,所以我写了两个脚本放在 /usr/local/sbin 里面:
singlecore
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash
cpus_dir="/sys/devices/system/cpu"
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
cpu_online="$cpus_dir/$cpu/online"
if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]]
then
echo 0 > "$cpu_online"
fi
done |
multicore
1
2
3
4
5
6
7
8
9
10
11
12
| #!/bin/bash
cpus_dir="/sys/devices/system/cpu"
for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')
do
cpu_online="$cpus_dir/$cpu/online"
if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]]
then
echo 1 > "$cpu_online"
fi
done |
之后需要切换的时候,只要运行 sudo singlecore 或者 sudo multicore 就可以了~
顺便说一句,我当时在想,如果我禁用了所有的 CPU 会怎么样呢?结果发现 cpu0 是没有 online 文件的,也就是 Linux 至少保证一个 CPU 处于可用状态。
< CPU,Linux,多核 >
专业课学习操作系统,满心欢喜地以为可以是 Linux 代码导读,结果选用了一本八十年代的教材,介绍 UNIX v6 的。于是自己从图书馆借来了内核开发的入门读物《Linux 内核设计与实现》。既然是介绍内核的书,自然少不了代码,但是书中又不可能将每个提到的代码的相关信息全部写出来,这时就得自己去查看代码。查看代码的话,虽然 Linux 的代码可以很容易地得到,但那来看终归有些麻烦,各种调用需要查找半天。于是想起了很有名的一个网站 LXR:http://lxr.linux.no,Linux 交叉引用。这个网站好是好,就是网络原因速度太慢,于是就想自己装一个。
先说一句,下面的安装环境都是64位 Gentoo。
最开始找到了 LXR Cross Referencer 这个项目,一看最后更新时间还挺新,看起来是一直都还在维护的。然后在 Gentoo 的网站上查到 LXR 是可以直接用 portage 安装的,于是安装,安装相关的包,最后放弃了。出于什么原因我也不记得了,最后一个原因肯定是不好看,肯定达不到上面那个网站的效果,所以就放弃了,到那个网站上去下载 LXR 分出来的版本 LXRng。(话说这个 ng 不会是表示 next generation 吧?)
Read the rest of this entry »
< Linux,LXR >
我曾经很早以前就在想,能不能将U盘作为登入我系统的验证机制。当时的想法是,这样比较有趣~不过后来发现另外一个重要的用途就是,防止在众目睽睽之下输入密码……
这个问题提出后,邮件列表里很快就有人告诉我,Linux 已经有一个现成的机制了,这就是 pam_usb。不过我在网上搜了半晌都没搜到相关的中文资料,前几天弄成了,就写出来供大家参考~
其实来说,是很简单的。首先,当然,要准备一个U盘~(废话),然后安装 pam_usb。在 Ubuntu 下的话,源里就有,可以输入命令
1
| sudo apt-get install pamusb-tools |
直接安装。当然如果你连终端也懒得打开,可以直接点击这里:安装 pamusb-tools。当然,在后面的步骤中你终归还是要打开终端的,所以还是先开了吧~这个东西目前暂时还没什么图形界面的样子(当然做一个相信也不难)。
另外,Fedora 源里有 pam_usb 包,Arch Linux 似乎在 AUR 里有,在 Gentoo 中似乎是被默认屏蔽的,可以通过下面指令安装:
1
2
| echo "sys-auth/pam_usb" >> /etc/portage/package.keywords
emerge -av ">=sys-auth/pam_usb-0.4.1" |
其他的发行版也可以直接从他们的项目主页下载源码包编译安装~
安装好了以后,首先插入你作为钥匙的U盘,然后在终端中运行
1
| sudo pamusb-conf --add-device MyUSBDevice |
其中的 MyUSBDevice 可以任意修改,只是一个标识符而已。接下来根据提示操作即可。如果你的电脑此时连接着超过一个U盘、移动硬盘,或者某个U盘、移动硬盘包含超过一个分区(就像我给U盘分了2个区),就会提示选择安装到哪里。设置完确认保存到配置文件即可。
下面添加认证用户,下面的命令是添加我为认证用户的:
1
| sudo pamusb-conf --add-user upsuper |
原教程里面写的是添加 root 我认为是没有必要的,添加 sudoer 应该是已经足够了的。这条命令几乎不问什么问题,直接就完成了……这样以后在使用这把钥匙的时候就可以不需要输入相应用户的密码了。
最后最重要的一步,是编辑认证系统的配置文件。打开 /etc/pam.d/common-auth (对于 Gentoo 来说是 /etc/pam.d/system-auth),将下面这行插入到所有条目的前面:
1
| auth sufficient pam_usb.so |
现在你的 USB 钥匙已经可以用了!现在,另外再打开一个终端,随便 sudo 点什么,然后你应该不会再看到输入密码的画面,取而代之的是下面的东西:
1
2
3
4
5
| * pam_usb v0.4.2
* Authentication request for user "upsuper" (sudo)
* Device "MyUSBDevice" is connected (good).
* Performing one time pad verification...
* Access granted. |
然后运行成功了!不仅 sudo 可以验证,包括 gksu 和登入框等等都已经可以使用这把钥匙直接略过不需要输入密码了。
现在你已经成功的制作了一个属于自己的 USB 钥匙!
Read the rest of this entry »
< Linux,U盘,验证 >
虽然说现在在澳洲度假,应该写的是游记,不过免不了还是胡思乱想一番,于是一早起来来写这篇文章。题目看起来很技术,其实这篇文章我一点也不准备讲技术。
我觉得,Windows 就像毒品,而 Mac 和 Linux 则是两种不同的信仰。
Mac 为什么是信仰其实并不需要多说。苹果的东西做得确实非常好,无论是外表、用户体验还是科技创新。不过果粉们选择 Mac 的理由和这些都没有关系,反倒更像某个讽刺果粉买 iPhone 的短片里说的那样,因为这是苹果。这就是一种宗教般的狂热。
而 Linux 则代表了软件界中一种开放和自由的精神,追捧它的人们所怀有的是一种乌托邦式的梦想和希望。这种精神是极有号召力的,且不说默默无闻的第二大软件公司 Oracle,也不说妇孺皆知的 IBM、Intel 和 nVIDIA,就连把 Linux 视作最大敌人之一的微软,都曾经想要为 Linux 贡献代码。
反观 Windows,虽然有无数的人离不开它,依赖它,但是同时听到的,也是种种的抱怨和不满伴随着 Windows 的成长。人们知道 Windows 有种种麻烦,而且今后可能需要为此付出许多额外的开销,但是仍然义无反顾地选择 Windows,而离开它却需要经历一个痛苦的过程,这完全与毒品无异。
可,这就是现实。绝大多数游戏除了家用机的版本外,基本只有 Windows 版;许许多多精巧有趣的小程序和专业性较强的软件,也并非全都有 Mac 和 Linux 版。这就是现实,现实和狂热的信仰,和梦想和希望之间总有那么些距离。因此有时我们不得不向现实妥协。wine (可视为 Mac 和 Linux 下的 Windows 模拟器) 就是一种妥协,Parallels (Mac 下的 Windows 虚拟机) 就是一种妥协。
但是,存在现实并不代表我们不能像 Martin Luther King 那样拥有梦想,并不代表我们不能拥有狂热的信仰。向现实的妥协有时不过是为了更好的追求我们所追求的那些东西。
毕竟,构成这个世界的,虽然有90%的现实,但也有9%的狂热和1%的理想;
毕竟,hope is a good thing, and maybe the best of things.
< Linux,Windows,信仰,理想,自由软件,苹果 >
前一段由于收了某个 zip 文件,用 Ubuntu 自带的归档管理器打开,哎呦,那真不是一般的蛋疼……因为里面全是中文文件名,那个乱码啊……
于是我就下决心要解决这个问题。
虽然我的系统还在 9.10,但看到网上一篇文章教人如何在 10.04 中解决这个问题,我就了解了,这个问题至今没有解决。那么什么叫做“半完美”呢?大概意思就是说,对我来说差不多完美了,不过还是很可能出问题的……
Read the rest of this entry »
< Linux,patch,Ubuntu,zip,乱码 >
每当感觉到系统卡的时候,最好的方法无外乎进入 tty,登入,打开一个 top 监视。可是每次到了需要的时候才去开,打开的效率自然不敢恭维。于是便想,每次开机的时候,记起来就跑到 tty 下面去先开起来。不过这件事情总归是麻烦的,于是才有了现在的方案。
既然 tty 那么多,那我们就把他利用一下吧~让他开机自动在某个 tty 里面启动 top 无疑最方便了~
Read the rest of this entry »
< Linux,tty,Ubuntu >
过去的一段时间里看到很多关于 Arch Linux 的文章,我也对此有那么一点感兴趣了。据说这个是比 Ubuntu 要难折腾一些的,我想,这也正好测试一下我的 Linux 水平,扩充一下关于 Linux 的见识嗯~(其实说白了就是装一下13嗯……)
准备工作肯定是要有的。由于我这次又准备对硬盘分区做一番大动作,资料备份是必不可少的了。整理了一下移动硬盘里的东西,然后把 /home/upsuper 里面的大量资料和部分配置文件移入了移动硬盘,费了大概一个多小时的时间。接下去打开了我的上网本,打开当时在 LinuxToy 刊登的 Arch Linux 安装指南,这是非常必要的。对于一个用惯了 Ubuntu 这样几乎纯图形界面配置的人来说,一个更接近于 LFS 的系统没有参考自然是不敢随便动手的。
Read the rest of this entry »
< Arch Linux,Linux >
众所周知,Windows 下的中文程序使用的是 GBK 或 GB18030 编码,而 Linux 下则默认是 UTF-8 编码。对于图形界面的程序,wine 对中文的处理似乎已经做的不错了,但对于文字界面就无能为力了……
在网上找了找,发现很多人的方法是改 .profile 或者 .bashrc,在里面把 LANG 和 LC_ALL 设置为 zh_CN.gbk 或 zh_CN.gb18030。这种方法对于只在 Windows 下用终端连接 Linux 的用户当然没问题,可是对于像我这样惯用 Linux 的人怎么办?
Read the rest of this entry »
< Linux,Windows,Wine,编码 >
文章最前面,先祝各位在新的一年里天天开心哈~
昨天用 BT 下载了 Linux Deepin。记得当年装 XP 就一定要装 Deepin 的,觉得 Deepin 做的最好,做的最清楚。现如今 Deepin 也转投 Linux 的怀抱,是在不能不说是一件令人高兴的事情。
下面来说说 LD 吧。
我用 UNetBootin 将 LD 弄进了 U 盘里,然后通过 LiveUSB 进入了 LD。LD 给我的第一印象就是那个漂亮的时明时暗的 LD 的 Logo,接着看到了 Ubuntu 9.10 引入的 Xsplash,也很不错~由于是 LiveUSB 启动,因此启动速度不好做评述,不过感觉还是比较满意的。
Read the rest of this entry »
< Linux,Linux Deepin >
昨天晚上我第一次看到 Linux 真正的死机:连 SysRq 都无效了……这实在不能不说是一种讽刺:我写过的被转载最多的莫过于那篇 Linux 死机了该怎么办?我却自己遇到了一次真正的,无法处理的死机……
无图无真相,以下是我的 Tattoo 拍摄下的死机后的屏幕显示,那些是 Linux 在死机前垂死挣扎输出的信息:
Read the rest of this entry »
< Linux,死机 >
Comments