Linux 的.bashrc

使用man bash命令查看到的联机帮助文件中的相关解释如下:
.bashrc - The individual per-interactive-shell startup file.

这个文件主要保存个人的一些个性化设置,如命令别名、路径等。下面是个例子:
# User specific aliases and functions
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
LANG=zh_CN.GBK
export PATH LANG

alias rm='rm -i'
alias ls='/bin/ls -F --color=tty --show-control-chars'

例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。
每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/.bashrc)就可以立刻加载修改后的设置,使之生效。

一般会在.bash_profile文件中显式调用.bashrc。登陆linux启动bash时首先会去读取~/.bash_profile文件,这样~/.bashrc也就得到执行了,你的个性化设置也就生效了

 

fedora9安装交叉编译环境arm-linux-gcc

检查arm-linux-gcc 是否安装好命令:arm-linux-gcc -v

Step1:将光盘目录linux/中的 arm-linux-gcc-4.3.2.tgz复制到某个目录下如tmp/,然后
进入到该目录,执行解压命令:
#cd /tmp
#tar xvzf arm-linux-gcc-4.3.2.tgz  –C /  
注意:C后面有个空格,并且 C是大写的,它是英文单词“Change”的第一个字母,
在此是改变目录的意思。
执行该命令,将把 arm-linux-gcc安装到/usr/loca/arm/4.3.2目录。

Step2:把编译器路径加入系统环境变量,运行命令
#gedit /root/.bashrc
编辑/root/.bashrc文件,在最后一行  export PATH=$PATH:/usr/local/arm/4.3.2/bin

PATH=$PATH  “=”两边不能有空
保存退出

注销,重新登录检查是否按照成功

 

 

 

Fedora 9 samba

在线安装samba:

# yum install samba

在防火墙中设置开发samba:

#setup

修改samba配置文件

#cd /etc/samba/ 

#cp smb.conf smb.conf.back(备份配置文件)

#vim smb.conf

 Share Definitions 处添加

[root]
        comment = Root Directories
        browseable = yes
        writable = yes
        path = /
        valid users = root

添加用户到samba用户数据库,用户必须是系统已经存在的用户

#smbpasswd -a root(输入密码 ,可以与系统密码不一样,用于登录samba)

开启smb和nmb服务

# chkconfig smb on   设置 Samba 自启动
# chkconfig --list smb  确认 Samba 启动标签,确认 2-5 为 on 的状态

smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# chkconfig nmb on  设置 nmb 自启动
# chkconfig --list nmb   确认 nmb 启动标签,确认 2-5 为 on 的状态
nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# /etc/rc.d/init.d/smb start   启动 Samba 服务
Starting SMB services:       [ OK ]
# /etc/rc.d/init.d/nmb start  启动 nmb 服务
Starting NMB services:       [ OK ]

最后:

[root@localhost ~]# setsebool -P samba_export_all_ro on
[root@localhost ~]# setsebool -P samba_export_all_rw on

(查看#getsebool -a | grep samba)

 

 


GCC

.c  C语言源代码

.a  由目标文件构成的库文件

.C  或者.cc或者  .cxx    C++源代码

 .h  头文件

.i   预处理过的c源代码

.ii  预处理过的c++源代码

.O  编译后的目标代码

.s  汇编语言源代码

.S  经过预编译的汇编语言源代码

 

gcc [options] [filename]

              # gcc hello.c  -o hello 

等价于  #gcc -o hello  hello.c 

-o:output_filename 确定可执行文件的名字为output_filename  不给出output_filename的话,默认名字为a.out

-c:只编译,不连接成可执行文件

-g:产生调试工具所必须的符号信息,要对编译出的程进行调试,必须加此选项

       #gcc -g hello.c -o hello

-O: 对程序进行优化处理、链接

       比较:

           #gcc hello.c -o hello

           #gcc -O hello.c -o hello

-O2:更多的优化处理、链接

(优化比较可以用执行时间比较  #time . /hello)

(头文件的包含:<xxx.h>到系统默认目录/usr/include加载头文件、<xxx.lib>系统默认目录/usr/lib)

("  " 现在当前源文件目录找,再到系统默认目录)

-I dirname(第一字母大写i):讲dirname所指目录加入到程序头文件目录列表(优先于系统默认目录)

   #gcc -I /home/ezhong hello.c -o hello

-L dirname:讲dirname所指目录加入到库文件的目录列表中

-static :静态链接  (默认链接为动态链接)

   #gcc -static hello.c -o hello

-Wall :生成所有的警告信息

-w :不生成任何的警告信息

-D:宏定义,相当于#difine

 

 

Hello,world


编写驱动程序必须建立内核树,应该是进行内核编程之前必须建立内核树。

建立内核数和编译内核的关系?(编译内核会生成内核树?)

编译内核:

1.下载源码网址:www.kernel.org

         # cd /usr/src   (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
         # rm –rf linux   (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
         # tar jvxf linux-2.6.25.14.tar.bz2   (解压解压)
         # ln -s linux-2.6.25.14linux   (重新生成linux文件夹)

   两种版本:xxx.tar.gz(tgz)  解压命令#tar -xzvf linux-2.6.33.1.tar.gz

                      xxx.bz2            解压命令#bzip2 -d linux2.6.33.1.tar.bz2

                                                              #tar  -xvf linux2.6.33.1.tar

 

2.内核的配置

  Linux当前支持的CPU类型包括x86、ARM、DECAlpha、SUNSparc、M68000、MIPS、PowerPC等,应该说上述类型已经包括绝大多数用户使用的CPU型号。在安装与配置过程中,Linux会自动识别这些型号。

  通常要运行的第一个命令是:#cd/usr/src/linux;makemrproper。确保源代码目录下没有不正确的.o文件以及文件的互相依赖。

  接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置

  2.6内核配置包括:

  #make config(基于文本的最为传统的配置界面)

  #make menuconfig(基于文本选单的配置界面)

  #make xconfig(基于图形窗口模式的配置界面)

  #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去)

  #ALSA:{从2.4版本到2.6版本的升级,这就要使用到ALSA(Advanced Linux SoundArchitecture即:新的 Linux 音频体系结构)。它取代了OSS(Open SoundSystem)。配置内核时,选定ALSA的OSSAPI效法选项(SND_OSSEMUL、SND_MIXER_OSS和SND_PCM_OSS)和适当的声音驱动(PCI驱动)。最后,下载和安装最新的alsa-lib和alsa-utils。}

  进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。

  选择相应的配置时,有三种选择,它们分别代表的含义如下:

  “Y”-将该功能编译进内核

  “N”-不将该功能编译进内核

  “M”-将该功能编译成可以在需要时动态插入到内核中的模块。

  将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。

 我的虚拟机装的Linux fc9 2.6.25.14   只能选make oldconfig ,看不太懂,一路yes ,一路回车。

3.编译内核

 在 /usr/src/linux 下

# make dep   (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean   (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage   (注意大小写。这一步才是真正编译内核)
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make   zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译,所以我直接用make bzImage来编译。
# make modules   (编译可加载模块)

# make modules_install   (安装可加载模块)

   安装成功后,系统会在/lib/modules目录下生成一个2.6.25.14子目录,里面存放着新内核的所有可加载模块。
# make install   (安装新内核)

  现在只是想把书上的hello world例子演示一遍,是不是可以把上面的两步:make modules 和make modules-install 去掉,节省时间?

             整个编译步骤只要: make bzlmage和 make install

#vi /boot/grub/grub.conf
     个人认为,grub.conf中已经有新内核的信息,不用再手动修改。

#boot=/dev/sda
default=0 (默认开机选项)
timeout=10 (等待选择时间)
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.33.1)   (新内核)
        root (hd0,0)
        kernel /vmlinuz-2.6.33.1 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.33.1.img
title Fedora (2.6.25-14.fc9.i686)
        root (hd0,0)
        kernel /vmlinuz-2.6.25-14.fc9.i686 ro root=UUID=b101fd74-30dc-42d6-9218-d341f2366fae rhgb quiet
        initrd /initrd-2.6.25-14.fc9.i686.img

将default=1修改为default=0 (默认开机选项)开机后自动进入新内核

在用户目录下创建hello.c和Makefile

hello.c

#include
#include
//MODULE_LICENCE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello World linux driver/n Love 云云!go,go!/n");
return 0;
}

static void hello_exit(void)
{
printk(KERN_ALERT "Goodbey linux driver/n Love 云云!go,go!/n");
}
module_init(hello_init);
module_exit(hello_exit);

Makefile

obj-m := hello.o

编译hello.c

[root@localhost ~]# make -C /lib/modules/`uname -r`/build M=$(pwd) modules

加载模块:[root@localhost ~]# insmod hello.ko

查看模块:[root@localhost ~]# lsmod

卸载模块:[root@localhost ~]# rmmod hello

在虚拟终端加载的,内核打印的信息不会显示,而是写进了/proc/kmsg,要想看那个Hello,World的话,终端运行:
[root@localhost ~]# dmesg
Ubuntu系统的话貌似在 /var/log/syslog  用cat命令

 

 

 

2011-03-1611:34:07CSDN让我郁闷了,改个字体大小颜色这么难?