Ubuntu/Mint Linux无线网络WIFI 启用

Ubuntu/Mint Linux无线网络WIFI 启用

Ubuntu/Mint Linux 安装好通常可以直接连接到网络,但有的设备可能连接WIFI是出现问题。在Desktop环境下根本看不到无线连接图标和选项,简单几步,试试能不能解决:

1.Mint/Ubuntu 12下首先需要连接一个有线网络,安装无线网卡驱动;在桌面环境下,进入菜单—系统(偏好)设置—系统中的“驱动管理”(Driver Manager),看到下面界面:

driver

ubuntu 13 .10 在软件更新界面里:

abc_ubuntu

选择设备驱动,应用更改,将自动安装该驱动。

2.安装完成后,会发现,无线WIFI网络出现在菜单中,但是是灰体显示 WIFI disabled,无法更改:

~ $ iwconfig
vmnet8    no wireless extensions.
eth0      no wireless extensions.
eth1      IEEE 802.11abg  ESSID:off/any
Mode:Managed  Access Point: Not-Associated
Retry  long limit:7   RTS thr:off   Fragment thr:off
Power Management:off

发现已经出现了eth1这个无线网卡,只是Network is down。

3.重启网络管理程序,sudo service network-manager restart 即可应用更改,无线网络可以搜索连接。

~ $ sudo service network-manager restart
network-manager stop/waiting
network-manager start/running, process 30359

VMware 中Linux 调整分区大小

VMware 中Linux 调整分区大小

Fedora_logo

Precondition :VMware Player 中安装的Fedora 17 Linux 32bit,个人较久远的测试环境,安装时没有进行磁盘规划,默认20G空间(动态调整),安装在根/下。
Background :在上述环境中安装IBM DB2 Express-C 10.5(v10.5fp1_linuxia32_expc.tar.gz),安装时/tmp空间不足,无法安装。
Plan:需要进行磁盘扩容。考虑到使用VMware Player虚拟机。

1.首先调整虚拟机大小:player_vm_fedora

2.虚拟机开机,使用fdisk 命令新建新区 fdisk  /dev/sda 添加 /dev/sda3

3.接下来就贴代码了:

Fedora release 17 (Beefy Miracle)
Kernel 3.4.0-1.fc17.i686 on an i686 (0)

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 6.5G 6.0G 529M 92% /
devtmpfs 494M 0 494M 0% /dev
tmpfs 502M 0 502M 0% /dev/shm
tmpfs 502M 940K 502M 1% /run
/dev/mapper/vg-lv_root 6.5G 6.0G 529M 92% /
tmpfs 502M 0 502M 0% /sys/fs/cgroup
tmpfs 502M 0 502M 0% /media
/dev/sda1 497M 81M 392M 17% /boot

[root@localhost ~]# # fdisk /dev/sda

[root@localhost ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders, total 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00002255

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 16777215 7875584 8e Linux LVM
/dev/sda3 16777216 62914559 23068672 83 Linux

Disk /dev/mapper/vg-lv_swap: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders, total 2097152 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/mapper/vg-lv_root: 6979 MB, 6979321856 bytes
255 heads, 63 sectors/track, 848 cylinders, total 13631488 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@localhost ~]# pvcreate /dev/sda3
Writing physical volume data to disk "/dev/sda3"
Physical volume "/dev/sda3" successfully created

[root@localhost ~]# vgextend /dev/mapper/vg /dev/sda3 
Volume group "vg" successfully extended
[root@localhost ~]# lvextend -L +20G /dev/mapper/vg-lv_root
Extending logical volume lv_root to 26.50 GiB
Logical volume lv_root successfully resized

[root@localhost ~]# resize2fs /dev/mapper/vg-lv_root 
resize2fs 1.42 (29-Nov-2011)
Filesystem at /dev/mapper/vg-lv_root is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/vg-lv_root is now 6946816 blocks long.

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 27G 6.2G 21G 24% /
devtmpfs 494M 0 494M 0% /dev
tmpfs 502M 0 502M 0% /dev/shm
tmpfs 502M 956K 502M 1% /run
/dev/mapper/vg-lv_root 27G 6.2G 21G 24% /
tmpfs 502M 0 502M 0% /sys/fs/cgroup
tmpfs 502M 0 502M 0% /media
/dev/sda1 497M 81M 392M 17% /boot
[root@localhost ~]#

至此,操作结束,空间调整为30GB,满足使用需求。当然,此方案针对虚拟机中已安装的没有采用LVM的linux分区大小调整,其它不必参考此方案。

可恶的乱码!:pluma和gedit汉字乱码解决

可恶的乱码!:pluma和gedit汉字乱码解决

一个破设备:Dell V2420,2G内存预装32位Windows 7.卡得不能用。于是升级内存4G,更换x64位windows 7操作系统。可恶的UEFIGPT各种不好装这里就不唠叨了总之比较不爽,还好win 7 x64装好了;接下来装个ubuntu 12.04 做为自己日常开发测试环境。问题来了,又是装不了,32位无法启动引导,64位安装中要么Time out..要么fata error..实在搞不定,换了Linux Mint 16 Mate 64位,毫无压力的装好了……好蛋疼……

配置好dev环境,安装VMware player…一切OK。不急,问题又来了。可恶的乱码!

由于Linux mint Mate 16 默认的是Pluma文本编辑器,中文显示乱码,goolge之,说的挺好,但没有解决问题,通过探索,下为解决方案:

Linux Mint中Pluma:

1. 安装dconf-tools :

sudo apt-get install dconf-tools

2. 配置pluma. 打开系统Menu–System Tools–dconf Editor. 在工具菜单中展开 org—mate—pluma 。将auto-detected-encodings 修改为:

[‘GB2312’, ‘UTF-8’, ‘CURRENT’, ‘ISO-8859-15’, ‘UTF-16’, ‘GBK’, ‘GB18030’],

Warnning:将GB2312 或者GBK 放在最前,否则依然无效..

重新 打开中文的文件,看是否OK。

mate

Ubuntu中gedit:

方法同上,

1. 安装dconf-tools :

sudo apt-get install dconf-tools

2. 搜索dconf Editor. 在工具菜单中展开 org—gnome—gedit–preferences 中的Encodings中auto-detected-encodings 修改为:

[‘GB2312’, ‘UTF-8’, ‘CURRENT’, ‘ISO-8859-15’, ‘UTF-16’, ‘GBK’, ‘GB18030’],

ff_ins

 

Fedora 20正式发布,带来哪些更新呢?

Fedora 20正式发布,带来哪些更新呢?

Fedora 20 已于2013年12月17日正式发布。正如我们大家所知,Fedora 是一款 基于 Linux 的操作系统,一个红帽赞助的社区项目 。The four foundations of freedom, features, friends, and first are the core values of the Fedora community.历经十余年的发展,Fedora已成为最具知名度的发行版之一。

value_fedoraFedora 20 带来了那些更新呢?看官方 Fedora 20 发​行​注​记​中的介绍,更新内容包括了针对系统管理员,桌面应用,开发者,特定爱好者的若干更新。

Fedora_logo

其中,主要是一些应用工具的升级,以及增加更多应用资源。
对于开发者,增加了Developer Assistant,Perl升级到5.18,更新了 python-setuptools ,Gcc以及一些Web开发资源。
对于桌面使用者,桌面很炫,说实话没有太大的更新,过多的Linux的桌面本身就有些鸡肋了..管理方面改变不大。3D打印,这个玩意儿,不大懂..言多必失..
其它的还需要补充…

更多阅读:

Fedora :http://fedoraproject.org/
Ubuntu  :http://www.ubuntu.com/
Linux   Mint  :http://www.linuxmint.com/

服务器日志备份的一点小问题

服务器日志备份的一点小问题

前两天一个朋友打电话聊到他遇到的问题:自己动手写的日志备份脚本有问题,当移走日志文件后,应用程序不再写日志到新的文件中,kill 掉应用后才可以..

他的脚本可能是这样的:

mv /log/a_log.trace /log_bak/a_log.trace_xyz 
touch  /log/a_log.trace

相信各位大拿肯定已经知道原因,但是我还在这里说说,为那些可能想知道原因的小童鞋。

 

那么,弄清楚open函数或者sys_open系统调用,知道文件描述符,即使你没有写过C代码,也知道原因了吧!

文件已经被你mv走了,可以原应用还在运行,仍旧保留着原文件的文件描述符,可是文件其实已经不存在了…

解决办法:不要删除或者移走日志文件,清空这个文件就可以了!

cp -p /log/a_log.trace /log_bak/a_log.trace_xyz 
cp /dev/null /log/a_log.trace

再来深入一下吧:

什么是虚拟文件系统?

    VFS(Virtual File System)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat 提供接口机制。在其下是实体的文件系统。虚拟文件系统的主要功用,在于让上层的软件,能够用单一的方式,来跟底层不同的文件系统沟通。在操作系统与之下的各种文件系统之间,虚拟文件系统提供了标准的操作接口,让操作系统能够很快的支持新的文件系统。

一切皆是文件!

  一组在逻辑上具有完整意义的信息项的系列。除了普通文件,其他诸如目录、设备、套接字等 也以文件被对待。总之,“一切皆文件”。

文件对象

文件对象是已打开的文件在内存中的表示,主要用于建立进程和磁盘上的文件的对应关系。它由sys_open() 现场创建,由sys_close()销毁。文件对象和物理文件的关系有点像进程和程序的关系一样。当我们站在用户空间来看 待VFS,我们像是只需与文件对象打交道,而无须关心超级块,索引节点或目录项。因为多个进程可以同时打开和操作 同一个文件,所以同一个文件也可能存在多个对应的文件对象。文件对象仅仅在进程观点上代表已经打开的文件,它 反过来指向目录项对象(反过来指向索引节点)。一个文件对应的文件对象可能不是惟一的,但是其对应的索引节点和 目录项对象无疑是惟一的。

 struct file {
    ……
    struct list_head        f_list;        /*文件对象链表*/
    struct dentry          *f_dentry;       /*相关目录项对象*/
    struct vfsmount        *f_vfsmnt;       /*相关的安装文件系统*/
    struct file_operations  *f_op;           /*文件操作表*/
    ……
};

文件I/O

sys_open()系统调用打开或创建一个文件,成功返回该文件的文件描述符。sys_read()系统调用用于从已打开的文件读取数据。如read成功,则返回读到的字节数。如已到达文件的尾端,则返回0。

sys_open

 

更多,请再进一步探索..

VMware Player免费虚拟机软件-VMware Tools篇..

VMware Player免费虚拟机软件-VMware Tools篇..

之前已经写过文章“Why not VMware Player[为什么不选择VM-Player呢]?”一直很感叹,作为一名IT工程师,一名程序员,或者IT民工,为什么自己的电脑充斥着那么多的盗版软件,且不说操作系统,就是起码的应用开发工具,一律的免费拿来,如果真是经济原因不打算支付费用,哪有那么多开源的软件,或者免费的,为什么不去搜索使用呢,随随便便上网下载那些破解的,序列号…真心为这种行为不齿…也不想多说,大环境…一直不喜欢那些同事遇到问题:百度一下。我的观点:一名程序员,如果Google都不用,那只有呵呵了…

偏题太多,也过于激动了,总之,还是希望不要使用盗版软件进行开发创作,支持正版,支持开源!

vmware

VMware Player 是个好软件!

但是在×××,可能遇到无法下载更新Vmware tools 的情形,那么只有手动下载安装,官网并没有给出直接的下载地址,通过发掘,搜索,在这里,以安装的版本号为目录:

http://softwareupdate.vmware.com/cds/vmw-desktop/player/

层级目录以windows版本为例如player/6.0.1/1379776/windows/packages/

下载之后进行解压,通过U盘或者共享的方式上传至虚拟机中,安装即可。可能需要msiexec 解压出msiexec /a  tools-windows.msi ,具体方法就请Google了..

 

Ubuntu12 一步步安装配置(系统,FTP,TELNET..设置)

Ubuntu12 一步步安装配置(系统,FTP,TELNET..设置)

最近重新安装了Linux 操作系统,发现一些常用的配置又忘记了,需要一个个的重新google查阅进行设置,今天把我个人的操作记录下来.

这是我的几个步骤,由于记录时简单用E文写的,就粘上来了:

  1. install ubuntu linux os using U-DISK beside Widows 7 ,Warning: choose  the place where  grub.cfg  should  locate in.
  2. wlan drivers, maybe you need to connect to an available wried network, download and install the driver,and then active it.

  3. Disable the guest session.

  4. Setting the ftp and telnet server.

  5. Set up Root account.

linux logo

具体描述一下:

1.使用U盘安装,首先制作好USB启动盘,由于PC比较老(2008年的机器),设置还小麻烦;如果安装windows 7 和linux双系统,首先需要装Windows ,否则需要修复BCD,挺麻烦。不要把Boot选择到你的U盘分区,否则..,每次要进Ubuntu还需要那个U盘。

2.安装好了,没有无线网卡驱动,还需要联网获取,如果有线网也不能用,那就要手工找了,电脑也该换了,因为太老了..

3.登录系统,禁用客人会话( guest session),具体方法很简单,在etc/lightdm/lightdm.conf 添加

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
allow-guest=false

Ubuntu14.04禁用客人会话 更改配置  /usr/share/lightdm/lightdm.conf.d /50-unity-greeter.conf

[SeatDefaults]
greeter-session=unity-greeter

以前我写过这个方法:https://www.gigiwangs.com/archives/564。有些网站明明从这里复制的,还..算了,毕竟自己太菜…

4.安装Telnet和Ftp服务端程序

sudo apt-get install telnetd
sudo apt-get install vsftpd

这个在Ubuntu下安装太简单,几乎不需要任何设置就可用,Fedora就不一样,Selinux,防火墙都要设置,这里也没有了..

5.启用Root用户,Ubuntu 12是默认禁止root登录的,把它启用吧..这个也很简单:

sudo passwd root

6.安装一些常用软件和库…..

AIX db2嵌入式SQL(sqc)编译

AIX db2嵌入式SQL(sqc)编译

编译SQC

使用C语言编写嵌入式SQL以访问DB2的程序,DB2预编译器可以将SQL语法直接转换为DB2行时服务应用程序编程接口(API)调用。

bind的主要作用是根据SQC中的SQL语句使用的表和操作指定访问时DB要使用的策略,是一种优化作用,以加快数据访问的速度。

aix_sqc 编译

 

预编译命令:

db2 prep *.sqc bindfile

bindfile参数作用是生成和sqc文件同名的.bnd文件。

接下来就和一般的C程序一样进行编译了,来看看这个简单的Makefile,AIX 编译64位的应用。

CHMOD =chmod 755
RM =rm -f
#export OBJECT_MODE=64
DB2_HOME=/opt/IBM/db2/V9.1
CFLAGS=  -q64 -qchars=signed -I.  -g -I$(DB2_HOME)/include
LDFLAGS = -b64 -g -L $(DB2_HOME)/lib64 -ldb2
DB2 =db2
BINHOME=$(HOME)/batch/bin

CC= xlc_r

#DB CONFIGURE
DBNAME = db2name
USEID = db2user
PASWD = db2pswd

ALL =$(BINHOME)/ApsBatchWS
all:$(ALL)
.SUFFIXES:
.SUFFIXES:.sqc .cpp .c .o
OBJS = dbcons.o serv.o util.o log.o flow.o

.sqc.o:
        $(DB2)  connect to $(DBNAME) user $(USEID) using $(PASWD)
        @$(RM)   *.bnd $*.c
        @$(DB2)  prep $< bindfile
        @$(DB2)  bind $*.bnd
        @$(DB2)  connect reset
        @$(DB2)  terminate
        @$(CC)  $(CFLAGS) -s -c  $*.c
.c.o:
        $(CC) -c $(CFLAGS)  $<
.cpp.o:
        $(CC) -c  $(CFLAGS)  $<

$(ALL) : $(OBJS)
        $(CC) $(CFLAGS)  $(OBJS) $(LDFLAGS) -o  $@
        $(CHMOD)  $@

clean:
        $(RM) *.o dbcon.c dbcons.bnd $(ALL)

看这里还有好多的例子:点击这里查看

sqc的编写方法这里就不再赘述,相关的文章已经太多了。

 

Nexus s ROOT for Jelly Bean4.1教程整理(Latest)

Nexus s ROOT for Jelly Bean4.1教程整理(Latest)

昨天手机Nexus s已经升级至4.1,更新安装完之后,root权限又没了,又要重新root!教程网上很多,这里从网上收集整理而来,并且通过了验证。

首先做好准备工作:PC,Nexus S,数据线,工具和驱动,以及上面提到的Recovery.img和Superuser文件…下面给出下载地址:

驱动,adb,fastboot,运行脚本:

来这里下载安装:立即下载下载完成后解压,解压后会看到一个miui_ns的目录,该目录有分别为drivers和fastboot两个子目录。
但是目录下的recovery不要用,可以直接删除掉也可将Bat脚本删除,参照下面的命令一步一步来。

  Recovery:

下载最新版本recovery-clockwork-6.0.0.7-crespo.img,在这里来找到对应neuxs s 机型下载:http://www.clockworkmod.com/rommanager ;目前Nexus的版本已经是6.0.0.7.为了操作方便,将文件名改为recovery.img,当然这随意了。

Superuser:

下载最新的superuser文件Superuser-3.1.3-arm-signed.zip,在这里:http://downloads.noshufou.netdna-cdn.com/superuser/Superuser-3.1.3-arm-signed.zip将附件Superuser-3.1.3-arm-signed.zip通过USB储存直接拷到手机里(不要解压缩)。*到官方网站获取最新版本:http://androidsu.com/superuser/ 注意找到与自己手机系统版本号对应的正确版本下载。

好了,准备工作基本做好。开始了:共三步走:BOOTLOADER→RECOVERY→ROOT。

1.设置和安装驱动:

手机:设置为USB调试模式(usb debugging)–即设置-开发者选项-USB调试;关机,
电脑:安装手机USB驱动,刚刚下载的解压后的miui_ns/drivers目录下。
*即:手机连上电脑之后(不打开大容量储存)提示安装驱动失败,那么就打开电脑控制面板中的“设备管理器”,找到对应的有问题的USB设备,点右键更新驱动程序软件。手动浏览到你解压到的目录,勾选“包含子文件夹”确认,即可安装驱动。

2.解锁bootloader

需要解锁设备,如果机器bootloader还没有解锁,那么首先要解锁;已经解锁就可跳过。进行bootloader解锁(即使解锁,再上锁),会清除你手机上的【所有】数据(包括内部的16G SD 存储),包括但不限于应用、设置、联系人和账户等,请做好数据备份!
–>连接数据线;
–>重启手机按手机音量向上同时按开机电源键进入fastboot模式;
–> 进入windows命令提示行 ,cd到刚才下载的调试工具miui_ns/fastboot目录下:

fastboot oem unlock

按照手机提示,按住电源键确认,直到完成。

3.刷Recovery

同样按手机音量向上同时按开机电源键进入fastboot模式.刷入第三方recovery,也就是刚下载的recovery-clockwork-6.0.0.7-crespo.img

fastboot flash recovery recovery-clockwork-6.0.0.7-crespo.img

不要重启手机,否则重复这一步。

4.刷入Superuser,Root

进入Recovery,这是进入已经不是Google原生recovery,而是Clockwork-Recovery.

install zip from sdcard
– choose zip from sdcard
找到放的附件
– Superuser-3.1.3-arm-signed.zip
– Yes – Install Superuser-3.1.3-arm-signed.zip
然后修正权限:
– +++++Go Back+++++
– advanced
– Fix Permissions
这时候Recovery会在最下面用灰色字提示“Fixing permissions”。这一步可能会花上两三分钟时间,请耐心等待。
完成了之后:
– +++++Go Back+++++
– reboot system now
然后手机会自动重启。然后……然后大功告成。

升级信息如下:

Phone:Google Nexus S(I9023)
OS: Android Jelly Bean 4.1.1
Recovery:recovery-clockwork-6.0.0.7-crespo.img(6.0.0.7)
Superuser:Arm-Device 3.1.3

 

Linux下编译Python/C API问题

Linux下编译Python/C API问题

在Linux下编译python c api时遇到 类似下面的错误:

 undefined reference to `Py_Initialize

当然,如果你在windows平台下,使用IDE可能不会遇到这样问题。但是在linux,unix下呢,要自己动手写Makefile呢?
猜测这可能是缺少某些库,Google一下可以找到答案,这里文章会给出原因和解决方案,但是在多一下废话给刚刚接触python C API 的童鞋们,这不是所谓的技术文章,只是希望众多刚刚步入python大门遇到此类问题的一个参考。当然我也是菜鸟…

Linux下安装python,当前的发行版通常已经安装了python,但是可能版本等原因,如果需要安装,建议源码编译安装:

到这里下载所对应的版本:http://python.org/解压,cd到解压后的python(X.X.X).

# ./configure
#  make
#  make install

这样编译安装完成,在Terminal下敲python:

Python 2.7.3 (default, Jul  3 2012, 18:01:45) 
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

OK,现在来试试Python/C API.网上的例子很多,随便拿来一个最简单的,假设保存为main.c:

//This is A sample.
#include "Python.h"

int main()
{
        Py_Initialize();
        printf("This is a C-Python Program.\n");
        PyRun_SimpleString("print(\"Hello,Python\")");
        Py_Finalize();
        return 0;
}

 

写一个Makefile,因为python的安装目录都采取了默认:

ALL	= ./tc
CC	= gcc
RM	= rm
LIBS	=  -lpthread -lm -ldl -lutil 
INCL	= /usr/local/include/python2.7

OBJ	= main.o
all:$(ALL)

./tc : $(OBJ) 
	$(CC)  $(OBJ) -I$(INCL) -L$(LIBS) -L/usr/localb/ -lpython2.7 -o $@

clean:
	$(RM) $(OBJ) 
	$(RM) $(ALL)

好了,编译,运行:

This is a C-Python Program
Hello,Python

那么,文章开头提到的问题呢,没忘记呢。是因为在编译时忘记链接这些库:

-lpthread -lm -ldl -lutil
不要忘了,还有,注意Python.h的路径,P是大写!