Linux学习-软件(1) - 图文

更新时间:2024-04-20 22:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

LINUX菜鸟学习笔记

Linux学习

前言 ............................................................................................................................................................................... 1 一、 软件环境搭建: ........................................................................................................................................... 2

1.1 软件、硬件准备: ........................................................................................................................................ 2 1.2 超级终端的设置: ........................................................................................................................................ 4 虚拟机下安装LINUX系统注意点 ..................................................................................................................... 5 VMware 6.5下安装VMWARE TOOL: .......................................................................................................... 10 在FC6下安装“右键添加终端”功能: .......................................................................................................... 11 查看GCC版本: ................................................................................................................................................ 11 查看内核版本 ..................................................................................................................................................... 12 虚拟机下LINUX网络的设置 ........................................................................................................................... 12 LINUX下VI编辑器的使用: .......................................................................................................................... 16 LINUX下tftp的安装: .................................................................................................................................... 19 硬件板PING主机和LINUX: ......................................................................................................................... 22 VMware中的FC6和windows 共享的另一种方法 ........................................................................................ 22 LINUX允许访问还是限制访问设置 ................................................................................................................ 24 主机下安装TFTPServer ..................................................................................................................................... 24 方法1: ...................................................................................................................................................... 24

方法2: ...................................................................................................................................................... 25

二、 常用命令介绍: ......................................................................................................................................... 25

查系统是否中有安装samba/http等: .............................................................................................................. 25 查系统路径: ..................................................................................................................................................... 26 chmod命令详细用法 .......................................................................................................................................... 26 windows与虚拟机间界面及各软件界面切换: .............................................................................................. 27 Linux内核编译过程详解(kernel2.6.7) .............................................................................................................. 27 linux内核编译过程的最终总结版 ........................................................................................................... 31

常见问题处理: ......................................................................................................................................................... 41

1、程序编译能通过,死活都不运行,是怎么回事?程序在电脑上能运行,下到电路板就不行。 ........ 41 2、修改LINUX下主机名:(永久修改) ....................................................................................................... 42 3、宿主机能ping虚拟机,虚拟机不能ping主机?...................................................................................... 42 4、Linux如何设置一个目录下全部文件的权限/单个文件的权限 ................................................................ 43 5、linux下重启网络服务和samba服务 .......................................................................................................... 43

根文件系统的制作 ..................................................................................................................................... 43

前言

本笔记是记录学习LINUX的,从零开始的。多数资料来自网络,相关的版权归原作者所有,在此表示对原作者表示感谢。

先安装虚拟机(我的是VMware Workstation 6.5.2),再在虚拟机的基础上安装LINUX(我的是FEDORA CORE 6 LINUX,FC6)。

第 1 页 共 50 页 arefeng 1

LINUX菜鸟学习笔记

上面这个红圈最好不要勾,主要跟程序判断是否在虚拟机中运行的,一般硬件调试开发就不管它了。

一、 软件环境搭建:

1.1 软件、硬件准备:

PC主机,主机——指LINUX安装的宿主机,普通电脑。以下可能直接说主机,PC。 虚拟机,LINUX系统——在VMWARE下安装的LINUX,以下可能直接说“LINUX下”、“LINUX”、“FC6”。 PC的硬件CPU要快一点,内存最好2G及以上,在虚拟机中设置虚拟机的内存为512M,比256M快很多。 在瑞星防火墙下设置:下面红圈不勾,否则硬件调试的时候会PING不通TFTP。

,选“编辑”,

第 2 页 共 50 页 arefeng 2

LINUX菜鸟学习笔记

关掉WINDOWS自带的防火墙:

第 3 页 共 50 页 arefeng 3

LINUX菜鸟学习笔记

1.2 超级终端的设置:

关超级终端的时候,选择保存:

第 4 页 共 50 页 arefeng 4

LINUX菜鸟学习笔记

脑才能正常使用超级终端。

,有时候好象要重启电

虚拟机下安装LINUX系统注意点

在安装之前,先还是介绍一下最重要的快捷键,Ctrl+Alt,将鼠标从虚拟机切换回WINDOWS。 F11是“虚拟机”与“主机界面”最大化切换的乒乓键。

第 5 页 共 50 页 arefeng 5

LINUX菜鸟学习笔记

第 6 页 共 50 页 arefeng 6

LINUX菜鸟学习笔记

再到虚拟机下,重新点LINUX安装错误提示页面的“OK”。

不选UTC时间(正规是UTC时间,比北京时间晚8小时,不太习惯),

第 7 页 共 50 页 arefeng 7

LINUX菜鸟学习笔记

当然要选开发类的工具了:

后面好象就是一路OK、NEXT了。

安装完,重启,

第 8 页 共 50 页 arefeng 8

LINUX菜鸟学习笔记

防火墙“使用”(后面的内容全选,也可以在后面的相关项设置),SELinux“允许”。

,再点几个OK,FINISH就好了。

LINUX界面下的防火墙,SELinux设置:

第 9 页 共 50 页 arefeng 9

LINUX菜鸟学习笔记

VMware 6.5下安装VMWARE TOOL:

登录的时候以root登录,选择VM-->install VMware Tools

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]#mount /dev/cdrom /mnt/cdrom/ 挂载CDROM [root@localhost ~]# cd /mnt/cdrom/ [root@localhost cdrom]# ls

VMwareTools-6.5.0-118166.i386.rpm //新版VM对应的这两个文件是升级的版本 VMwareTools-6.5.0-118166.tar.gz 在这选第二种安装 (中间时间有点长)

[root@localhost cdrom]# cp VMwareTools-6.5.0-118166.tar.gz /tmp //拷贝到/tmp下 [root@localhost cdrom]# cd /tmp/

[root@localhost tmp]# tar zxvf VMwareTools-6.5.0-118166.tar.gz //解包文件 [root@localhost tmp]# cd vmware-tools-distrib/

[root@localhost vmware-tools-distrib]# ./vmware-install.pl //安装开始

有YES选Y+回车,没有直接回车,OK!

选择合适的显示屏幕,我选择800X600,比主机的1280X800小点:

第 10 页 共 50 页 arefeng

10

LINUX菜鸟学习笔记

umount /dev/cdrom /mnt/cdrom/ 卸载CDROM reboot ——OK!

在FC6下安装“右键添加终端”功能:

将WINDOWS下的nautilus-open-terminal-0.7-3.fc6.i386.rpm文件拷贝,到linux下去粘贴(CTRL+C,CTRL+V): [root@bogon jk]# rpm -i nautilus-open-terminal-0.7-3.fc6.i386.rpm

warning: nautilus-open-terminal-0.7-3.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 [root@bogon jk]# reboot

查看GCC版本:

[root@bogon /]# gcc -v 使用内建 specs。

目标:i386-redhat-linux

配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-libgcj-multifile --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --enable-plugin --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre --with-cpu=generic --host=i386-redhat-linux

第 11 页 共 50 页 arefeng

11

LINUX菜鸟学习笔记

线程模型:posix

gcc 版本 4.1.1 20061011 (Red Hat 4.1.1-30)

查看内核版本

[root@bogon nautilus-open-terminal-0.13]# uname -r 2.6.18-1.2798.fc6

[root@bogon nautilus-open-terminal-0.13]# uname -a

Linux bogon 2.6.18-1.2798.fc6 #1 SMP Mon Oct 16 14:37:32 EDT 2006 i686 i686 i386 GNU/Linux

虚拟机下LINUX网络的设置

设置好主机的网关:

关闭虚拟机的网关(VNet1,VNet8都关了):

VMware虚拟机下LINUX系统的网络设置,使用“桥接方式”:

第 12 页 共 50 页 arefeng 12

LINUX菜鸟学习笔记

Replicate physical network connection state,虚拟

机网卡的ip地址会自动更新,不需要重新设置。这个不打勾。

[root@localhost ~]# ifconfig eth0

先点上面一个圈,然后再双击下面的一个红圈,填写静态地址等等。然后激活:

第 13 页 共 50 页 arefeng 13

LINUX菜鸟学习笔记

接下来的OK,等待就不提了。 [root@localhost ~]# ifconfig eth0

eth0 Link encap:Ethernet HWaddr 00:0C:29:02:5C:4B

inet addr:192.168.0.151 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe02:5c4b/64 Scope:Link

UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:116 errors:0 dropped:0 overruns:0 frame:0 TX packets:58 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000

RX bytes:7512 (7.3 KiB) TX bytes:7469 (7.2 KiB) Interrupt:67 Base address:0x2024 在FC6下,PING 主机:

[root@localhost ~]# ping 192.168.0.156

PING 192.168.0.156 (192.168.0.156) 56(84) bytes of data.

64 bytes from 192.168.0.156: icmp_seq=1 ttl=128 time=4.01 ms 64 bytes from 192.168.0.156: icmp_seq=2 ttl=128 time=0.139 ms

--- 192.168.0.156 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.139/2.078/4.018/1.940 ms [root@localhost ~]# 在主机下ping FC6:

第 14 页 共 50 页 arefeng 14

LINUX菜鸟学习笔记

下面就设置,不管是什么,都设置了算了(设置了LINUX下才能上网):

第 15 页 共 50 页 arefeng

15

LINUX菜鸟学习笔记

[root@localhost ~]#reboot

[root@localhost ~]# ping www.163.com

PING 163.xdwscache.glb0.lxdns.com (121.14.35.168) 56(84) bytes of data. 64 bytes from 121.14.35.168: icmp_seq=1 ttl=56 time=13.2 ms 64 bytes from 121.14.35.168: icmp_seq=2 ttl=56 time=12.8 ms

--- 163.xdwscache.glb0.lxdns.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 12.894/13.088/13.283/0.225 ms

能ping www.163.com了,还不能直接在LINUX下上网,可能是HTTP呀之类的驱动没有安装/允许/启用。

LINUX下VI编辑器的使用:

光标控制命令

命令 光标移动 h或^h 向左移一个字符 j或^j或^n 向下移一行 k或^p 向上移一行 l或空格 向右移一个字符 G 移到文件的最后一行 nG 移到文件的第n行 w 移到下一个字的开头

W 移到下一个字的开头,忽略标点符号 b 移到前一个字的开头

B 移到前一个字的开头,忽略标点符号 L 移到屏幕的最后一行 M 移到屏幕的中间一行 H 移到屏幕的第一行 e 移到下一个字的结尾

E 移到下一个字的结尾,忽略标点符号 ( 移到句子的开头 ) 移到句子的结尾 { 移到段落的开头 } 移到下一个段落的开头 0或| 移到当前行的第一列 n| 移到当前行的第n列 ^ 移到当前行的第一个非空字符 $ 移到当前行的最后一个字符 +或return 移到下一行的第一个字符

第 16 页 共 50 页 arefeng

16

LINUX菜鸟学习笔记

- 移到前一行的第一个非空字符

在vi中添加文本

命令 插入动作 a 在光标后插入文本 A 在当前行插入文本 i 在光标前插入文本 I 在当前行前插入文本 o 在当前行的下边插入新行 O 在当前行的上边插入新行

:r file 读入文件file内容,并插在当前行后 :nr file 读入文件file内容,并插在第n行后 escape(esc键) 回到命令模式

^v char 插入时忽略char的指定意义,这是为了插入特殊字符

在vi中删除文本

命令 删除操作

x 删除光标处的字符,可以在x前加上需要删除的字符数目 nx 从当前光标处往后删除n个字符

X 删除光标前的字符,可以在X前加上需要删除的字符数目 nX 从当前光标处往前删除n个字符 dw 删至下一个字的开头

ndw 从当前光标处往后删除n个字 dG 删除行,直到文件结束 dd 删除整行

ndd 从当前行开始往后删除 db 删除光标前面的字

ndb 从当前行开始往前删除n字 :n,md 从第m行开始往前删除n行 d或d$ 从光标处删除到行尾

dcursor_command 删除至光标命令处,如dG将从当产胆行删除至文件的末尾 ^h或backspace 插入时,删除前面的字符 ^w 插入时,删除前面的字

修改vi文本

每个命令前面的数字表示该命令重复的次数 命令 替换操作

rchar 用char替换当前字符

R text escape 用text替换当前字符直到换下Esc键 stext escape 用text代替当前字符 S或cctext escape 用text代替整行 cwtext escape 将当前字改为text Ctext escape 将当前行余下的改为text

第 17 页 共 50 页 arefeng

17

LINUX菜鸟学习笔记

cG escape 修改至文件的末尾

ccursor_cmd text escape 从当前位置处到光标命令位置处都改为text

在vi中查找与替换

命令 查找与替换操作 /text 在文件中向前查找text ?text 在文件中向后查找text n 在同一方向重复查找 N 在相反方向重复查找 ftext 在当前行向前查找text Ftext 在当前行向后查找text

ttext 在当前行向前查找text,并将光标定位在text的第一个字符 Ttext 在当前行向后查找text,并将光标定位在text的第一个字符 :set ic 查找时忽略大小写 :set noic 查找时对大小写敏感 :s/oldtext/newtext 用newtext替换oldtext

:m,ns/oldtext/newtext 在m行通过n,用newtext替换oldtext & 重复最后的:s命令

:g/text1/s/text2/text3 查找包含text1的行,用text3替换text2

:g/text/command 在所有包含text的行运行command所表示的命令 :v/text/command 在所有不包含text的行运行command所表示的命令

在vi中复制文本

命令 复制操作

yy 将当前行的内容放入临时缓冲区 nyy 将n行的内容放入临时缓冲区 p 将临时缓冲区中的文本放入光标后 P 将临时缓冲区中的文本放入光标前

\ 复制n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 \ 删除n行放入名字为圆括号内的可命名缓冲区,省略n表示当前行 \ 将名字为圆括号的可命名缓冲区的内容放入当前行后 \ 将名字为圆括号的可命名缓冲区的内容放入当前行前

在vi中撤消与重复

命令 撤消操作 u 撤消最后一次修改 U 撤消当前行的所有修改 . 重复最后一次修改

, 以相反的方向重复前面的f、F、t或T查找命令 ; 重复前面的f、F、t或T查找命令

\ 取回最后第n次的删除(缓冲区中存有一定次数的删除内容,一般为9) n 重复前面的/或?查找命令 N 以相反方向重复前面的/或?命令

第 18 页 共 50 页 arefeng

18

LINUX菜鸟学习笔记

保存文本和退出vi

命令 保存和/或退出操作 :w 保存文件但不退出vi

:w file 将修改保存在file中但不退出vi :wq或ZZ或:x 保存文件并退出vi :q! 不保存文件,退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

下面马上就要用到了:

从命令行模式到编辑模式,按小写i:

命令行模式 编辑模式 在这里,鼠标是没有用的了,光标要用光标键移动,修改完了,按“ESC”键回到命令行模式下,再输入“:wq” ,回车即保存退出了,如果不要保存,则是输入 “:q! ”。在编辑模式下,Backspace,Delete键都可以用。

LINUX下tftp的安装:

安装TFTP,当然要下包了。

http://rpm.pbone.net/index.php3/stat/4/idpl/5394541/com/tftp-0.42-3.1.i386.rpm.html 拷贝文件到自己的目录下:

第 19 页 共 50 页 arefeng

19

LINUX菜鸟学习笔记

[root@localhost tools]# pwd /home/chen/tools

[root@localhost tools]# ls

nautilus-open-terminal-0.7-3.fc6.i386.rpm VMwareTools-7.8.5-156735.i386.rpm tftp-0.42-3.1.i386.rpm VMwareTools-7.8.5-156735.tar.gz tftp-server-0.42-3.1.i386.rpm xinetd-2.3.14-8.i386.rpm [root@localhost tools]# rpm -ivh xinetd-2.3.14-8.i386.rpm

warning: xinetd-2.3.14-8.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:xinetd ########################################### [100%] [root@localhost tools]# rpm -ivh tftp-server-0.42-3.1.i386.rpm

warning: tftp-server-0.42-3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:tftp-server ########################################### [100%] [root@localhost tools]# rpm -ivh tftp-0.42-3.1.i386.rpm

warning: tftp-0.42-3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2

Preparing... ########################################### [100%] 1:tftp ########################################### [100%] [root@localhost tools]# chmod o+w /tftpboot

[root@localhost tools]# cd / [root@localhost /]# ls

bin dev home lost+found misc net proc sbin srv tftpboot usr boot etc lib media mnt opt root selinux sys tmp var [root@localhost /]# cd tftpboot/ [root@localhost tftpboot]#

[root@localhost tftpboot]# vi /etc/xinetd.d/tftp [root@localhost tftpboot]#

将文件修改成这样:disable = no 如:

# default: off

# description: The tftp server serves files using the trivial file transfer \\ # protocol. The tftp protocol is often used to boot diskless \\

# workstations, download configuration files to network-aware printers, \\ # and to start the installation process for some operating systems. service tftp {

第 20 页 共 50 页 arefeng

20

LINUX菜鸟学习笔记

socket_type = dgram protocol = udp wait = yes user = root

server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }

:wq!

设置防火墙\禁用\,SELinux\允许\。

安装好了以后,把代码放LINUX下的root/tftpboot/

[root@localhost /]# system-config-securitylevel 或是在图形界面下操作即可。

注意哦,需要把电脑的放火墙设置好(见前面设置的描述),如果有路由器的,也不可以启动PING的检查,要允许所有的PING都通过。(前面准备和安装部分有描述)。 [root@localhost /]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth0

BOOTPROTO=none

HWADDR=00:0C:29:02:5C:4B ONBOOT=yes TYPE=Ethernet

NETMASK=255.255.255.0 IPADDR=192.168.0.151 GATEWAY=192.168.0.1

第 21 页 共 50 页 arefeng

21

LINUX菜鸟学习笔记

USERCTL=no IPV6INIT=no PEERDNS=yes

硬件板PING主机和LINUX:

硬件的串口连接超级终端,网口跟主机连在同一局域网中,都启动了,在超级终端下,可以测试TFTP是否连接好。(好些硬件平台是不支持被PING的,只支持主动PING别的IP)。 hilinux # ping 192.168.0.156 MAC: 00-10-85-12-23-96 host 192.168.0.156 is alive

hilinux # ping 192.168.0.151 MAC: 00-10-85-12-23-96 host 192.168.0.151 is alive

VMware中的FC6和windows 共享的另一种方法

这两天来为VMware中的FC6和windows共享问题叫“苦”了。如果用redHat 9.0的话,安装Vmware-tools,再点VM-->settings-->Options-->shareFolders,再点Add,加入要共享的文件侠。再回去linux下的mnt目录就能看到hgfs文件,再进入hgfs文件侠就可以看共享的windows文件了。

可是在FC6中,这样做只能看到hgfs文件,而hgfs文件是空的。这种方法我在网上找了很久,可是还是不能解决。所以今天我只能用samba了,这样好像是杀鸡用牛刀了。可是我没有办法了。大家有什么好办法告诉小弟一声。 现在先说说用samba吧。 1、安装samba

首先看看您的机器中是否已经安装samba [root@localhost ~]# rpm -qa|grep samba 如果出现:

samba-common-3.0.23c-2 samba-3.0.23c-2 samba-client-3.0.23c-2

那么说明您已经安装了samba了。如果没有看到以上的东西,那就要安装了。

我用的是DVD版的镜像。先把VMware的虚拟光驱设置到镜像文件中,再用mount命令挂起。到Fedora/RPMS目录下就能看到: samba-3.0.23c-2.i386.rpm samba-client-3.0.23c-2.i386.rpm samba-common-3.0.23c-2.i386.rpm samba-swat-3.0.23c-2.i386.rpm 输入

#rpm -ivh samba-common-3.0.23c-2.i386.rpm #rpm -ivh samba-3.0.23c-2.i386.rpm #rpm -ivh samba-client-3.0.23c-2.i386.rpm samba-swat-3.0.23c-2.i386.rpm可以不装。

第 22 页 共 50 页 arefeng 22

LINUX菜鸟学习笔记

安装好后,配置/etc/samba下的ssmb.conf文件,只要把 [global]

workgroup=WORKGROUP(改成windows下同一个组)

[root@localhost ~]# cd / [root@localhost /]# pwd /

[root@localhost /]# cd etc/samba/ [root@localhost samba]# ls

lmhosts secrets.tdb smb.conf smbpasswd smbusers [root@localhost samba]# vi smb.conf

在文件的最后增加下面的(兰色部分),然后加用户和密码,重启系统:

# The following two entries demonstrate how to share a directory so that two # users can place files there that will be owned by the specific users. In this # setup, the directory should be writable by both users and should have the # sticky bit set on it to prevent abuse. Obviously this could be extended to # as many users as required. ;[myshare]

; comment = Mary's and Fred's stuff ; path = /usr/somewhere/shared ; valid users = mary fred ; public = no ; writable = yes ; printable = no ; create mask = 0765

[myshare]

comment = myshare dir browseable=yes writeable=yes path=/home/chen valid users=smb

//共享的目录在/home/smb/

[root@localhost samba]# useradd smb//增加SMB用户

[root@localhost samba]# smbpasswd -a smb//设置SMB用户密码,smb New SMB password: Retype new SMB password: Added user smb1.

[root@localhost samba]# reboot [root]

comment =rootdir browseable=yes

第 23 页 共 50 页 arefeng 23

LINUX菜鸟学习笔记

writeable=yes

path=/root/home/chen/ hosts allow = 192.168.0. valid users=smb

[root@localhost samba]# useradd smb//增加SMB用户

[root@localhost samba]# smbpasswd -a smb//设置SMB用户密码,1234 New SMB password: Retype new SMB password: Added user smb.

[root@localhost samba]# reboot

LINUX允许访问还是限制访问设置

我来说一下host.allow和host.deny的用处。

对于能过xinetd程序启动的网络服务,比如ftp telnet,我们就可以修改/etc/hosts.allow和/etc/hosts.deny的配制,来许可或者拒绝哪些IP、主机、用户可以访问。 比如我们在/etc/hosts.allow中加入 all:218.24.129.

这样就会允许来自218.24.129.*域的所有的客户来访问。这只是举个例子,实际上,系统默认状态 下,都是能用这些网络服的

如果我们在/etc/hosts.deny中加入,就限制了来自218.24.129.*域的所有的所有的IP。 all:218.24.129.

如果我们在/etc/hosts.deny中加入

all:218.24.129.134,这样就限制了所有在218.24.129.134中的所有的用户的访问。 当hosts.allow和 host.deny相冲突时,以hosts.allow设置优化。 设置好后,要重新启动

# /etc/rc.d/init.d/xinetd restart # /etc/rc.d/init.d/network restart

主机下安装TFTPServer 方法1:

在网上下一个软件CiscoTFTPServer,解压,运行软件,让瑞星放行,设置好路径:(这是个好办法,不需要设置防火墙等,麻烦就是每次要把更新的文件放在这个F:\\Softi\\tftpboot目录下,当然,之前安装了VMWARE TOOL,具体操作就是从LINUX下拷贝文件到WINDOWS下了):

第 24 页 共 50 页 arefeng 24

LINUX菜鸟学习笔记

方法2:

,这个指定好路径就好了。

二、 常用命令介绍:

查系统是否中有安装samba/http等:

[root@localhost ~]# rpm -qa|grep samba

rpm -qa|grep vncserver

tar cvzf root0.tar.gz root

第 25 页 共 50 页 arefeng 25

LINUX菜鸟学习笔记

查系统路径:

[root@localhost ~]# $PATH bash:

/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin: No such file or directory

[root@localhost ~]#export $PATH bash: export: `/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin': not a valid identifier 增加系统默认路径的办法: vi /etc/profile

chmod命令详细用法

指令名称 : chmod

使用权限 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。 参数 :

mode : 权限设定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中

u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

-c : 若该档案权限确实已经更改,才显示其更改动作 -f : 若该档案权限无法被更改也不要显示错误讯息 -v : 显示权限变更的详细资料

-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) --help : 显示辅助说明 --version : 显示版本

范例 :将档案 file1.txt 设为所有人皆可读取 : chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 : chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 : chmod u+x ex1.py

第 26 页 共 50 页 arefeng

26

LINUX菜鸟学习笔记

将目前目录下的所有档案与子目录皆设为任何人可读取 : chmod -R a+r *

此外chmod也可以用数字来表示权限如 chmod 777 file 语法为:chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。 r=4,w=2,x=1

若要rwx属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x属性则4+1=5。 范例:

chmod a=rwx file 和

chmod 777 file 效果相同

chmod ug=rwx,o=x file 和

chmod 771 file 效果相同

若用chmod 4755 filename可使此程序具有root的权限

chmod –R 777 dir//修改整个目录下的所有文件和目录的属性

windows与虚拟机间界面及各软件界面切换:

1、VMWARE与WINDOWS之间切换的问题,用什么快捷键的?比如在IE下怎么按几个键,就进入VMWARE下的LINUX了?

答:先用Alt+Tab切换到VMWare进程,再按下Ctrl+Alt+Enter进入全屏模式。

Linux内核编译过程详解(kernel2.6.7)

花了几天才编译成功kernel2.6.7,其过程真可谓艰辛.古语有云:\苦尽甘来!\现在终于可以乐上一阵了.由于许多朋友对操作的顺序及某些重要的配置知之甚少或知之不详,往往病急乱投医.加之网上的信息多且烦杂,使得编译内核成功率不高,甚至造成原来的系统崩溃的也不在少数.我就是其中一个。

其实,编译内核并不是一件难事.如果能按照正确的方法来操作,最多花上一个半小时就能搞定.是不是很受鼓舞呀! 废话少说,现在我们马上开始.我原来的系统是redhat9.0,内核2.4.20-8,编译的内核2.6.7,仅供参考. 共分为四部分:编译前准备->编译配置->编译过程->运行内核的常见问题 一 编译前准备

第 27 页 共 50 页 arefeng

27

LINUX菜鸟学习笔记

1)下载一份内核源代码,我下的是linux-2.6.7.tar.bz2,你可在如下地址下载它或者是更新的版本. http://kernel.org/pub/linux/kernel/v2.6/

2) 下载最新版本的module-init-tools( \and \ http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz http://www.kernel.org/pub/linux/kernel/people/rusty/modules/modutils-2.4.21-23.src.rpm 3)安装module-init-tools. 它会替代depmod [/sbin/depmod]和其他工具. [root@arefeng chen]# tar -zxvf module-init-tools-3.16.tar.gz [root@arefeng chen]# cd module-init-tools-3.16

[root@arefeng module-init-tools-3.16]# ./configure --prefix=/sbin

tar -zxvf module-init-tools-3.0.tar.gz cd module-init-tools-3.0 ./configure --prefix=/sbin make make install

./generate-modprobe.conf /etc/modprobe.conf

4)安装modutils-2.4.21-23.src.rpm. 你可能会看到\rusty and group rusty not existing\的警告. 没关系,你只需强制安装就是了.如果你不对Redhat 9和Redhat 8做这几步, 你将会在\modules_install\这一步时出现问题. rpm -i modutils-2.4.21-23.src.rpm

rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec

rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.21-23.i386.rpm 5)解压缩内核源代码.把下载的源代码包放到目录/usr/src下,然后 cd /usr/src

tar xvfj linux-2.6.7.tar.bz2 cd linux-2.6.7 二 编译配置

在这一部分涉及几个重要模块的配置请,特别注意.一般用\menuconfig\命令来配置内核. 输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置 1)文件系统

请务必要选中ext3文件系统, File systems--->

[*] Ext3 journalling file system support [*] Ext3 Security Labels

[*] JBD (ext3) debugging support

以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有\第 28 页 共 50 页 arefeng

28

LINUX菜鸟学习笔记

FS=y\这一项. 如果不是\而是\你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed 2)网卡驱动

请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考 Device Drivers---> Networking support---> Ethernet (10 or 100Mbit) --->

<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL) <*> RealTek RTL-8139 PCI Fast Ethernet Adapter support 3)声卡驱动

也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考 Device Drivers ---> Sound --->

<*> Sound card support

Advanced Linux Sound Architecture ---> <*> Advanced Linux Sound Architecture <*> Sequencer support < > Sequencer dummy client <*> OSS Mixer API

<*> OSS PCM (digital audio) API[*] OSS Sequencer API <*> RTC Timer support PCI devices --->

<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111 Open Sound System --->

< > Open Sound System (DEPRECATED)

以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择. 三 编译

按如下命令编译,大概需要一个多小时,大可以好好放松一下 make bzImage make modules make modules_install make install

运行新内核之前,请检查一下/boot/grub/grub.conf的内容,下面的配置可作参考 # grub.conf generated by anaconda #

第 29 页 共 50 页 arefeng

29

LINUX菜鸟学习笔记

# Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/hdc3 # initrd /initrd-version.img #boot=/dev/hdc default=1 timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.6.7) root (hd0,0)

kernel /vmlinuz-2.6.7 ro root=LABEL=/ initrd /initrd-2.6.7.img title Red Hat Linux root (hd0,0)

kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ initrd /initrd-2.4.20-8.img 四 运行内核的常见问题 1)RPM问题

进入编译好的内核后,与RPM相关的命令有些不能使用,并出现下列错误: rpmdb: unable to join the environment

error: db4 error(11) from dbenv->open: Resource temporarily unavailable

error: cannot open Packages index using db3 - Resource temporarily unavailable (11) error: cannot open Packages database in /var/lib/rpm no packages

解决方法是执行“export LD_ASSUME_KERNEL =2.2.25”命令,也可以将其写入/etc/bashrc。 2)Sound问题

声音部分的模块名也改变了。我的笔记本原来的声卡驱动是i810_audio,现在已改为snd-intel8x0。因此需要把下面的内容添加到/etc/modprobe.conf中: alias char-major-14 soundcore alias sound snd-intel8x0 alias sound-slot-0 snd-intel8x0 alias snd-card-0 snd-intel8x0

alias sound-service-0-0 snd-mixer-oss

第 30 页 共 50 页 arefeng

30

LINUX菜鸟学习笔记

alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss

install snd-intel8x0 /sbin/modprobe --ignore-install sound-slot-0 && { /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1; /bin/true; } remove snd-intel8x0

{ /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1; /bin/true; }; /sbin/modprobe -r --ignore-remove sound-slot-0

然后执行“modprobe sound”加载声音模块,并使用下列命令检验声卡驱动: #cat /proc/asound/cards 显示结果如下:

0 [SI7012]: ICH - SiS SI7012 SiS SI7012 at 0xdc00, irq 11 3)VMware问题 解决方法是:

◆ 将/usr/bin/vmware-config.pl中所有的“/proc/ksyms”替换为“/proc/kallsyms”。使用“sed”命令可以达到这个目的。 ◆ 重新运行该脚本,使用内核头文件编译新的内核模块。在编译过程中如发生错误,应该进入/usr/lib/vmware/modules/source,使用下面的命令将vmnet.tar解包: #tar xvf vmnet.tar

◆ 进入vmnet-only目录修改bridge.c文件。将“atomic_add(skb->truesize, &sk->wmem_alloc);”修改为“atomic_add(skb->truesize, &sk->sk_wmem_alloc);”,并用类似的方式将“protinfo”改为“sk_protinfo”。 ◆ 再次把vmnet-only目录用下面的命令重新打包为vmmon.tar: #tar cvf vmmon.tar v

linux内核编译过程的最终总结版(网络拷贝)

参考了linuxsir和水母的linux版的精华区,本人不保留任何版权。

经过归纳整理,看看上面的就可以了,包括补丁如何打。具体的一些选项可以往下看,一些一看就懂的白痴选项,并没有选进来,因此适合对电脑软硬件都有所了解的人参考。

基本以2.6.5内核为例,虽然2.6的内核编译有更为方便的过程,但这里还是按照最经典的方式,这样最保险。一些过程说明经过了本人的精简,相关的疑问请自行用网络搜索答案,只保证本人看的懂;)一些设置按照自己的情况调整,不要完全照搬。对于编译内核造成的损失(比如LP跑了,再也不回来),本人不负任何责任:)仅供参考。

1.download linux-2.6.5.tar.gz 2.cp linux-2.6.5.tar.gz /usr/src

第 31 页 共 50 页 arefeng 31

LINUX菜鸟学习笔记

3.cd /usr/src 4.mv linux linux_old 5.tar xvzf linux-2.6.5.tar.gz bzip2 -d linux-2.6.5.tar.bz2 tar -xvf linux-2.6.5.tar

或者tar jxvf linux-2.6.5.tar.bz2 6.cd /usr/include rm -rf asm linux scsi

ln -s /usr/src/linux/include/asm-i386 asm ln -s /usr/src/linux/include/linux linux ln -s /usr/src/linux/include/scsi scsi 7.cd /usr/src/linux

make mrproper (检查有无不正确的.o文件和依赖关系,使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。 ) 8.make config 或

make menuconfig (推荐) 或 make xconfig

选择完返回MainMenu,选择save and exit,退出配置窗口并关闭超级用户终端。现在可以退出xwindows了,回到文本环境(这样做可以加快内核编译速度)执行最后操作 9.make dep 10.make zImage

若想做成启动盘的形式可 make zdisk,若kernel大于512K,应用make bzImage (推荐) 11.make modules make modules_install depmod -a

12.cp /usr/src/linux/arch/i386/boot/zImage /boot (用的是make zImage) 或cp /usr/src/linux/arch/i386/boot/bzImage /boot (用的是make bzImage)

13.修改lilo.conf 或grub.conf(添加) image=/boot/zImage(或bzImage) label=new root=... 14. lilo & grub

lilo -v 使改动生效。建议保留旧内核的项目,避免编译失败。通常 grub 配置文件在下面三个地方(根据发行版的不同): /etc/grub.conf /boot/grub/menu.lst /boot/grub/grub.conf 15. shutdown -r now

如果你的 kernel 支持内存镜像,就用 mkinitrd 命令制作一个镜像文件,然后拷贝到 /boot 路径下。要这么做,也要记得在 make menu 的时候记得选择内核镜像 ram image,并且不能安装为模块,否则 initrd 就不会运作。生成映像文件,否则有时系统启动时会找不到/根分区。 mkinitrd /boot/initrd-.2.4.20-8.img 2.4.20-8 initrd.img就是initrd-2.4.20-8.img文件的链接 #ln -s initrd-2.4.20-8.img initrd.img

有的时候 mkinitrd 失败,只要加上:--without-scsi-module 就可以通过了。

把旧内核源文件下的.config文件拷贝到新内核源文件下, 如cp /usr/src/linux-2.4.22/.config /usr/src/linux-2.6.5/ 然后在新内核目录下运行make oldconfig,如果想改动什么,可以

第 32 页 共 50 页 arefeng 32

LINUX菜鸟学习笔记

make menuconfig,但是一定要先make oldconfig。然后就编译内核,很容易:make bzImage make modules make modules_install make install

然后到/boot 看看是不是已经有新内核文件了,再看/boot/grub/grub.conf是否已经加载了新内核。shutdown -r now

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.5(新内核的bzImage的位置也有可能在/usr/src/linux/i386/下) cp /usr/src/linux/System.map /boot/System.map-2.6.5 make clean

没有 make clean 之前,如果增加了新的模块,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新来过。如果你以后还要利用这次编译的成果,也可以省略这一步,如果你想直接删除源代码目录,也可以省略这一步。

一些升级内核前的备份过程: cd /boot/

mv System.map System.map.old mv vmlinuz vmlinuz.old cd /usr/src/

ln -s linux-2.6.5 linux

进入/usr/include目录下,将asm、scsi、linux三个目录改名 [root@localhost /usr/include]# mv asm asm.OFF [root@localhost /usr/include]# mv scsi scsi.OFF [root@localhost /usr/include]# mv linux linux.OFF 建立指向新内核的位置到第三步中被改名的原目录

[root@localhost /usr/include]# ln -s /usr/src/linux/include/asm-i386 asm [root@localhost /usr/include]# ln -s /usr/src/linux/include/scsi scsi [root@localhost /usr/include]# ln -s /usr/src/linux/include/linux linux 检验 # ls /boot

如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你,成功了! 如果你是用 make install 安装的,还会看到个 config-2.6.0 文件 cd /boot/

ln -s vmlinuz-2.6.5 vmlinuz

ln -s System.map-2.6.5 System.map

(上面的两步的作用是保护真正的内核镜像不受损坏)

vmlinuz是压缩的内核二进制可执行文件

#du -sh vmlinuz-2.6.5 用来查看新的内核有多大

如果你的Kernel 配置支持Modules的话,解决那些问题是比较简单的 只要编译那些.o文件就可以啦.

比如我的声卡经常Irq 和 IO 不对, 我就到 /usr/src/linux/drivers/sound目录下 gcc -o configure configure.c ./configure 选好IO,IRQ 等等, make

cp sound.o /lib/modules/2.0.34/misc rmmod sound

insmod sound init_trace=1

测试一下.直到成功为止.比在 /usr/src/linux 下, make menuconfig ;

第 33 页 共 50 页 arefeng 33

LINUX菜鸟学习笔记

make dep;make clean;make zImage;.... 好多了.

怎么给内核打补丁? # cd /usr/src/linux

# bzip2 -dc patch-xxx.bz2 | patch PATCH文件拷贝到/usr/src下: #patch -p0 < patch-2.2.16

#gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 源码目录 可以使用这种方式来安装任何补丁,而不用管它的文件名了

用lsmod看当前装入的module, insmod/rmmod增删module. 对于fs,network方面的module, kernel是可以自动动态装载的(通过kerneld, 要用时自动insmod) 而对于与硬件相关的module(如网卡,SCSI卡等), 则需自己手工加入, 或用RedHat Control Panel中的kernelcfg来选择module(写于/etc/conf.modules(?), 那样则boot kernel时会自动加入

自己定制编译的内核运行更快(具有更少的代码)

系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

查看swap有没有打开(用free指令)。此外,最好不要超频,不然很有可能会发生signal 11的错误,使得编到一半的核心停了下来

1. Code maturity level options

代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。

2. Loadable module support

Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。 Set version inFORMation on all module symbols:可以不选它。

Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。

3. Processor type and features

High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。 Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。

MTTR (memory type range register)support------选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。同时用来启动pentinum pro和pentinum II 的特殊功能,如果你用的不是这类CPU就选N,否则也仅仅是使内核变大而已。 Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。

4. General setup 一般使用缺省设置就可以了。

Networking support:网络支持。必须,没有网卡也建议你选上。 PCI support:PCI支持。如果使用了PCI的卡,当然必选。

PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。 Support for hot-pluggabel devices:热插拔设备支持。 PCMCIA/CardBus support:PCMCIA/CardBus支持。 System V IPC

BSD Process Accounting

Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。

第 34 页 共 50 页 arefeng 34

LINUX菜鸟学习笔记

Power Management support:电源管理支持。

Advanced Power Management BIOS support:高级电源管理BIOS支持。

5. Memory Technology Device(MTD) MTD设备支持。可不选。

6. Parallel port support

并口支持。如果不打算使用串口,就别选了。

7. Plug and Play configuration

还是选上吧,可以拔下鼠标之类的体验一下Linux下即插即用的感觉。

8. Block devices

Normal PC floppy disk support:普通PC软盘支持。这个应该必选。 Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。

Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。

10. Telephony Support

Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。

11. ATA/IDE/MFM/RLL support

这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

12. SCSI support

13. Fusion MPT device support 14. I2O device support

需要I2O接口适配器支持,在智能Input/Output(I2O)体系接口中使用。

15. Network device support

网络设备支持。编译到内核里面好了,不选M了,选Y。

16. Amateur Radio support 配置业余无线广播。

17. IrDA(infrared)support 红外线支持。

18. ISDN subsystem

如果你使用ISDN上网,这个就必不可少了。

19. Old CD-ROM drivers(not SCSI、not IDE)

做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,用IDE的CD-ROM不用选。

20. Character devices

字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:

I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux,该项必选。

第 35 页 共 50 页 arefeng 35

LINUX菜鸟学习笔记

Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根据需要选择。

Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。

21. File systems 22. Console drivers

控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。

23. Sound

声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。

24. USB supprot 25. Kernel hacking

配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。 配置完后,存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。 接下来是编译。 #make dep #make clean

#make bzImage或make zImage #make modules #make modules_install #depmod -a

make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;在回答Enable loadable module support (CONFIG_MODULES)时选了\才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。 #cp /usr/src/linux/System.map /boot/System.map-2.4.18 #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18 #cd /boot;rm -f System.map vmlinuz #ln -s vmlinuz-2.4.18 vmlinuz

#ln -s System.map-2.4.18 System.map 如果用LILO,修改/etc/lilo.conf,添加以下项: image=/boot/vmlinuz-2.4.18 label=linux240 read-only root=/dev/hda2

其中root=/dev/hda2一行要根据需要自行加以修改。 #/sbin/lilo -v #shutdown -r now

用Grub启动管理器,则添加如下几项即可。 title Red Hat Linux (2.4.18) root (hd0,0)

kernel /vmlinuz-2.4.18 ro root=/dev/hda2

装过显卡驱动,比如Nvidia的话,你可以这样办

rpm -e NVIDIA_GLX_XXX(XXX为你的显卡驱动对应的版本号,比如我的是NVIDIA_GLX-1.0-3123)

第 36 页 共 50 页 arefeng 36

LINUX菜鸟学习笔记

rpm -e NVIDIA_kernel_XXXX(同上) 把以前安装的驱动删去。

rpmbuild --rebuild NVIDIA_kernel_XXXX,重新编译你的显卡驱动。编译好的放在/usr/src/redhat/RPMS/i386/下 然后安装就是了、、、

rpm -Uvh NVIDIA_kernel_XXXX.i386.rpm rpm -Uvh NVIDIA_GLX_XXXX.i386.rpm 搞定,重起。

将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。

核心在保护空间运行,但模块并不是。这么说,并不经常使用我的设备,把它编译成只支持ext2,ide和elf。而一直使用的网卡,把其它的编译成模块:如a.out, java, floppy, iso9960, msdos, minix, vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。它们许多只是在这或那用上那么几分钟。在需要用的时候才用insmod这个指令加入核心,不用的时候也能rmmod把它从核心移除,或是用lsmod察看目前所载入的模块。这里面有三项:

#Set version information on all module symbols------通常,我们更新核心版本之后,模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。可以不选它。但如果您选y,则按照它的说明,您必须有genksyms这个程序(可用whereis指令查看有无此程序)。

#Kernel module loader------让内核在启动时有自己装入必需模块的能力,建议选上。注意:在开机就会 mount 上来的 partition 的 FS 、device driver 记得要 compiler 进 kernel,不能把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。

#System V IPC 如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是一个让各个程序(process)同步且能彼此交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。

#Sysctl support------除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。

#Kernel support for A.OUT binaries ------a.out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上。Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代a.out格式的可执行码。但目前由于沿有许多的程序还没有取代过来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉。

#Kernel support for Linux/Intel ELF binaries ------由上所述,这个当然y哩,因为目前gcc-2.7.0以上的都有支持ELF了,如果没有选择这一项,可能会使用相当多的程序因此无法执行。为大多机器制作一张紧急启动盘,最好在386下编译,而386并不能运行在Pentium下编译的核心。不能同时把 a.out 和 ELF 支援编译成 modules,否则当你为了能够使用 insmod 而用 insmod 来载入 a.out/ELF modules 时会有 Catch/22 状况发生。如果你的系统主要是 ELF 而你偶尔会需要用到a.out,你可以把 a.out 支援编译为modules,否则你最好把它直接放入 kernel 之中。如果你还没进入 ELF 的世纪,在 compiler kernel 时可以直接把 ELF 支援去掉。

##Advanced Power Management BIOS support------高级电源管理BIOS支持。这通常是用在笔记本电脑上的东西,如果您有APM的BIOS,支持省电的设备的(有电池的那种),那么您可以选上这项,一般人这一项是选n,以避免一些可能会发生的问题。后有8个选项。

#CMD640 chipset bugfix/support------ 很多 486和 586的主机板都是用 CMD640的芯片,它是Neptune芯片和 SIS芯片的结合。不过,这种芯片有它的缺点,在许多的情形下,它会造成数据的流失和错误。如果您选了这一项,则Linux核心会为您小心的寻找这些 错误并修正它。而且,它会打开对二个IDE界面的支持。不过,在它的说明文件中提到,如果您的主机板没有PCI界面只有VESA总线界面却希望有这项功能的话,则您必须传一些 参数给核心(ideo=cmd640_vlb)。如果不确定上面所说的,选择Y。

#CMD640 enhanced support------一般来说,对于硬盘的存取速度来说,有所谓的 PIO MODES值设定,现今的 IDE界面及 BIOS应该都能侦

第 37 页 共 50 页 arefeng 37

LINUX菜鸟学习笔记

测到正确的硬盘PIO MODE值了。此值愈高表示硬盘的存取的速度愈快。可是,有些主机板的B10S还是旧式的,不能抓到比较高的 PIO MODE值,如此一来,便不能发挥整台硬盘的效率。这个设定告诉读者说:如果您的IDE界面是CMD640为基础*1*7和586的主机板都在使用它。可以查查主机板的说明书或是 IDE接口卡的说明书做确定。文件上提到,选择这个将会降低一些速度,但是数据能百分之百的正确。

#Intel 82371 PIIX(Triton I/II) DMA support------对于586的Pentium电脑来说,有相当多的主机板都是用Intel的Triton芯片,使用这种芯片的最大好处是支持直接内存存取DMA,而节省您的CPU时间。必须您的硬盘和主机板有同时支持 DMA的 IDE界面的芯片,直接与它们做沟通而节省了大量的 CPU时间。

#Loopback device support------大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y。这个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz这个程序。注意:此处与网络无关。

#Multlnle devices driver support------这个选项可以让把整个硬盘分区变成一个单独的区块设备,您必须有md035.tgz这个程序。而且在做这件事之前请将您的硬盘备份,因为它尚在测试阶段。一般人对这个选项是选N。

#Packet socket ------ 选择“Y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。

#Kernel/User Network link driver------这个是在测试中的程序码,一般人不需要用。依它的说明,它允许在核心、模块或程序间的某些部分间,彼此做双向的沟通。如果想使用arpd,则这个程序码就要加进核心里。

#TCP/IP networking------选择“Y”,内核将支持TCP/IP协议。这个选项无论如何请您选择Y,即使没有网络卡,或是没有连到网络上的设备,在linux上仍有所谓的lookback设备而且有些程序需要这个选项。在说明文件中提到,如果您没有打开这个设定,则X-window system可能会有问题(回为它也需要 TCP/IP)。

#Network firewalls------选择“Y”,内核将支持防火墙。等一下有个IP firewalling的选项也要选y;但下面的forwarding/gatewaying要选n,如此才能让它正常动作。大部分的人这个选项选N。

#Network alasing------允许有多个IP地址。

#IP:forwarding/gatewaying ------ 和 Firewall相反,这个选项是用来疏导网络的。一个gateway(也就是router),要帮忙疏导两个网络间的数据传送。这台机器必须要有两张网络卡,连接两个个同的网络,做疏导网络的工作。如果选择了这个选项,则表示想让这台负责做router。那么,就必须有两张网络卡了。另外有一种情形是,如果您有MODEM(通过串列界面以 SLIP和 PPP协议)和网络卡,并用它们来连上Internet。这时您也一样可以执行IP-routing服务,也需把这个选项打开。

#IP:multicasting------所谓的multicasting是群组广播,它是用在视频会议上的协议,如果想送一个网络封包(网络的数据),同样的一份数据将送往十部机器上。您可以连续送十次给十台机器(点对点的传送),也可以同时送一次,然后让十台机器同时接收到。当然后者比前者好,由于视频会议要求是最好每个人都能同时收到同一份信息,所以如果您有类似的需要,这个选项就要打开。同时您还必须去找相关的软件。

#IP: accounting------如果您打开这个选项,您就可以在/proc/net下看到系统对于整个网络状况的纪录。所以一般的人这个选项都是选y。而且,如果您设计把这台Linux机器当router用,那么读者可以因为这个选项而获得许多有关于网络lP控制的信息和它的输送情形。

#IP:aliasing support------经由这个设定,您可以拥有数个IP地址。假设您已经有一个lP地址了,您还想再加入其他的IP地址,这时,您可以依下面的程序来做。

在 shell下键入:

#ifconfig eth0:0其他的IP地址(这个IP地址不能与其他机器重复)

第 38 页 共 50 页 arefeng 38

LINUX菜鸟学习笔记

# route-add-host其他的IP地址 dev eth0:0

#Probe a11 LUNs on each SCSI device------通常这个选项大部分的人都不会选。我们举个例子来说,如果您的SCSI光驱是那种多片装的,就是一台光驱,但可以一次放好几片光盘片的那种。这种我们叫做Lun。

#Dummy net driver support------如果有SLIP或PPP的传输协议,那么要把这一项打开。因为一来它不会让您的Linux核心增大。二来,对某些应用程序来说,它可以让我们模拟出来的TCP/IP环境更像TCP/IP环境。如果您没有SLIP或PPP协议,就不用打开了。

#EQL(serial line load balancing) support------如果有两个MODEM,两条电话线,而且用SLIP或PPP协议,可以用这个Driver以便让您的MODEM有两倍的速度。当然,在网络的另一端也要有同样的设备。

#PLIP(parallel port) support------依字面上看,它是一种利用打印机的接口(平行接口),然后利用点对点来模拟TCP/IP的环境。它和 SLIP/PPP全都属于点对点通讯,您可以把两台电脑利用打印机的连接接口串联起来,然后,加入此通讯协议。如此一来,这两部电脑就等于一个小小的网络了。不过,如果电脑有提供打印服务的话,这个选项最好不要打开,不然可能会有问题(因为都是用平行接口)。

#PPP(point-to-point)support------点对点协议,近年来,PPP协议已经慢慢的取代SLIP的规定了,原因是PPP协议可以获取相同的IP地址,而SLIP则一直在改变IP地址,在许多的方面,PPP都胜过SLIP协议。

#SLIP(serial line) support------这是MODEM族常用的一种通讯协议,必须通过一台Server(叫ISP)获取一个IP地址,然后利用这个IP地址,可以模拟以太网络,使用有关TCP/IP的程序。

# EISA, VLB, PCI and on board controllers ------选择网络卡,包括直接附在主机板上的那种。如果选择y,则底下会列出其他的网络卡让您做选择,这些卡对于一般人来说很少会去用到。所以大部分的人这项是选N的。

#Pocket and portable adaptors------通常用在可携式的电脑上,这类型的网络卡(口袋型的),由于体积很小在安装和取下方面很方便,因此笔记本相关电脑上便常常采用这种网络卡。

#Token Ring driver support------Token Ring是 IBM电脑上的网络。它叫令牌环网络,和以太网络是很类似的东西。如果您希望使用的Token Ring网络卡以便连接到这种网络,那么选Y,一般人都选N。

12. Amateur Radio support 业余无线广播

可以用来启动无线网络的基本支持,目前的无线网络可以通过公众频率传输数据,如果你有此类设备就可以启用,具体请参考AX25和HAM HOWTO 文档。

#Standard/generic (dumb) serial support-------选择“y”,内核将支持串行口。标准序列接口的选定。如果您是用serial的鼠标(大部分的人都是用这个),或是MODEM的话,则这一项一定要选。大部分的人这一项都选y。

#Support for console on serial port------选择“y”,内核可将一个串行口用作系统控制台。

##I2C support------I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux,该项必选。 #Mice鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad------根据需要选择。非串行的鼠标,支持象PS/2。看一看你鼠标的键。许多双键鼠标是PS/2,即使它们的连接看起来象串行的.。

#Digiboard PC/Xx Support------这是一张叫 Digiboard PC/XX卡的 driver,这种卡上面有很多个 serial port的插槽(一般来说只有两个),可以用来连接很多个MODEM,在民间的BBS站很常用到,如果您有这样的东西,您必须选这项为y。有兴趣的读者可以读读Documentation/digiboard.txt的内容。

#Cyclades async mux support------同上,这也是一种能接很多个serial port插槽的卡的驱动程序。

第 39 页 共 50 页 arefeng 39

LINUX菜鸟学习笔记

#Stallion multlport serial support------同上,这也是其中一种卡。

#SDL RISCom/8 card support------这也是其中的一个支持muti-serial卡的driver。

#Parallel printer support------有打印机的或是使用到并行接口的人这一项一定要选。除非是用serial的打印机。还有如果您有使用PLIP,那么这项也请选上。

#Mouse support------大部分的人这一项并不用选y。因为大部分的人是用serial的鼠标,除非有些人是用一种附有接口卡的鼠标,这时这个选项才要选上,如果您选y,则底下会列出您的BUS鼠标所用的接口卡。

#support for user misc device modules------除非您有所谓的触摸式显示器或是光笔等东西,否则这一项选n。

#Watchdog Timer support------一般人不需要这个选项,如果您选上这个选项,则您要用mknod在/dev下建一个watchdog的文件。请看Documentation/watchlog.txt的解释。

#Enhanced Real Time Clock Support------关于系统上Clock的东西,您必须自己用mknod在/dev/下建立一个文件叫rtc。如此一来,在/proc/下将可以看到rtc的信息。有关于rtc的内容请看Documentation/rtc.txt。一般是选n。

#Kernel automounter support------选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。

#Standard( minix )------新的套件不再建立 minix 文件系统,而且很多人不使用它,但是把它配置在核心里仍然是个好主意。某些″rescue-disk ″ 程序会用到它,而且仍然有许多磁片可能用 minix 文件系统,因为 minix 文件系统对于处理磁片方面是最好的。Minix文件系统通常用在磁盘上,有时会用到它。

#Extended fs ------ 这是扩充文件系统的第一版,现在已经不再使用。

#Second extented fs------这是现在新发行的套件所广泛采用的文件系统,你可能会有其中一种。这个是linux文件系统,请务必选y。

#xiafs filesystem-----这个文件系统曾经一度很普遍,但是在写这份文件时,我已经不知道有任何人在使用它了。

#umsdos: UNIX like fs on top of std MSDOS FAT fs ------ 如果把Linux装进DOS的一个目录下那么您则要选择这一项。不建议这样做,因为如此一来,就不能看到长文件名了。而且效率上,井不是很好。

#ums-dos------相当 slick 的文件系统,它能使 MS-DOS 文件系统拥有更多的特性,像是长档名等等。这对那些不使用 MS-DOS 的人(像我)并不是很有用。

#System V and Coherent------这是为 System V 以及 Coherent 的分割区而设的。如果希望支持System V或Xenix的相关UNIX系统的FS并读取它们的数据,那么才有必要选这个,否则一般来说这个选项是选n的。

#Mandatory lock support------有些很特殊的database应用软件会用到它,一般人这个选项是选n。而且,如果选y的话,必须有最新版的NFS软件,最新版的samba软件等。

#NCP filesystem support------NCP是一种网络的通讯协议,用在跑IPX协议上,它可以利用IPX协议让两台电脑之间的文件共享,并做沟通。如果您想挂上有关Novell的Netware文件系统,那么这个选项就选上去吧。

#/dev/dsp and/dev/audio support------ 这个选项通常是必要的。因此大部分的人选y,如果没有这选项,则很多的游戏将没有声音效果。

#MIDI interface support------支持MIDI界面。

#I/O base for SB Check from manual of the card------声卡的I/O地址。括号是常用的选项。 #Sound Blaster IRQ Check from manual of the card-----声卡的IRQ,通常是1或5。 #Sound Blaster DMA 0,1 for 3-----声卡的DMA,通常是1。

#Sound Blaster 16 bit DMA 5, 6 or 7(usel for 8 bitcards)(SB.DMA2)-----5

##Additional low level drivers------如有其他种类的声卡,则这项要选上去,以下会列出其他的声卡供选择。

kernel profiling support(v1.3)

第 40 页 共 50 页 arefeng 40

LINUX菜鸟学习笔记

这个选项可以开启内核做效率统计的功能,并且会提供其他在为 系统侦错时有用的信息。这些功能会需要付出一些代价并造成系 统执行得较为缓慢,除非你正在研究内核的某个问题,否则你应 该回答N。

21. Kernel hacking安全模式

通俗的说,这是windows安全模式,找不到明确解释,就引用这个说法。>这是从 Linus的README里摘录的:″kernel hacking ″配置的细节通常会产生一个更大或是更慢的核心(或者是又大又慢),而且可能因为将一些常式配置成很活跃地去尝试中断一些不良的程序码以便找出核心里的问题,而使得核心变得比较不稳定。所以要产生一个核心″产品 ″的话,你在这

#shutdown -r now

不建议使用热启动或ctrl+Alt+del键。在一些情况下,文件系统不完全卸栽会损坏打开的文件。如果你没看见启动提示,你可以试用shift或ctrl键,这样启动提示就出现了。一旦出现,按tab看核心标签。输入标签和可选参数启动。在机器重启后出现LILO时按TAB键,输入linux2.6.5,新内核发挥作用了。

以太网的默认值是PCI的以太网卡,对ne2000的默认支持方式是build-in,即没有设成模块,所以如果你的网卡是ISA的,那么务必要选择其中的other ISA card,最好把PCI intel pro选项去掉,另外把ne2000 support选项改成module。 另外,bzImage和initrd做的img文件在2.4的grub的menu.lst都没有设置就能启动

title Debian GNU/Linux root (hd1,0)

kernel /boot/vmlinuz ro root=/dev/hdb1

常见问题处理:

1、程序编译能通过,死活都不运行,是怎么回事?程序在电脑上能运行,下到电路板就不行。

解决办法:

A、arm-linux-readeelf –a filename //查看生成文件的特性(运行环境ARM/X86,大小端模式)

第 41 页 共 50 页 arefeng 41

LINUX菜鸟学习笔记

如果这两个类型不对,肯定不能运行。

B、arm-linux-readeelf –d filename //查看需要的动态库 解决办法:

可以在编译的时候加上- static

arm-linux-gcc –static hello.c –o hello

2、修改LINUX下主机名:(永久修改)

[root@arefeng ~]# vi /etc/sysconfig//network

NETWORKING=yes

NETWORKING_IPV6=yes HOSTNAME=arefeng

[root@arefeng ~]# vi /etc/hosts

# Do not remove the following line, or various programs # that require network functionality will fail. ::1 localhost.localdomain localhost 192.168.1.152 arefeng

[root@arefeng ~]# hostname –i //查看本机对应的IP

3、宿主机能ping虚拟机,虚拟机不能ping主机?电脑的设置不对,

第 42 页 共 50 页 arefeng 42

LINUX菜鸟学习笔记

4、Linux如何设置一个目录下全部文件的权限/单个文件的权限

首先,切换到root身份 $su - 然后运行

#chmod -R 777 目录名

这样就可以了,单个文件就不用-R了。

5、linux下重启网络服务和samba服务

重启网络服务的命令是service network restart 或者/etc/init.d/network restart

重启samba服务器的命令是service smb restart

根文件系统的制作(网络拷贝)

今天学的真是天昏地暗,小乖来电了我都不知道,不过相当有收获。一想到自己的未来,就不断的给自己鼓气,感觉这样活着才有意义,其实我也挺喜欢忙碌,只要一忙碌起来我就钻进自身的世界里,探索未知的事

第 43 页 共 50 页 arefeng 43

LINUX菜鸟学习笔记

物,真的会让人很惬意,每个人的追求真的不一样,不过自己选的路当然要坚持走下去,但是我能感觉到前方道路的光明,突然间好想和小乖说声谢谢,谢谢小乖!

先来区别一些在根文件系统烧写或调试上出来的一些问题:

1调试时用NFS网络共享进行调试(此时不需要制作根文件系统)

代码如下:

setenv serverip 192.168.1.*** //PC机IP地址,这里指的是Vmware的IP setenv ipaddr 192.168.1.*** //开发板的IP地址,自己设定 setenv gatewayip 192.168.1.1 //网关

setenv ethaddr 11:22:33:44:55:66 //PC机的网卡MAC地址 setenv bootcmd tftp 30008000 zImage\\; go 30008000

setenv bootargs root=nfs nfsroot=192.168.1.23:/source/rootfs ip=192.168.1.134 console=ttySAC0,115200 init=/linuxrc devfs=mount display=sam240

这种模式用于调试时使用,此时的根文件系统格式,我就把它称为NFS文件格式以示区别

如果开发已经完毕,现在就需要自己制作一个文件系统,需要将这个文件系统烧写到Nandflash中,而不可能用NFS网络进行下载了,以下两个方面主要用于烧写Cramfs文件系统格式和Ramdisk文件系统格式(具体制作过程稍后再作说明)

2烧写Cramfs文件系统格式(只读格式)

第 44 页 共 50 页 arefeng 44

LINUX菜鸟学习笔记

tftp 30008000 zImage //将zImage内核镜像下载至开发板内存0x30008000地址处 nand erase 100000 400000 //擦除nand flash 地址0x100000处(4M大小)(根据mtd分区)

nand write 30008000 100000 400000 //将内存起始地址0x30008000中的zImage镜像写入Nand Flash //中,起始地址:0x100000,大小为:0x400000(4M)

tftp 30008000 rootfs.cramfs //将cramfs文件系统镜像下载至开发板内存0x30008000地址处 nand erase 500000 2000000 //将mtdblock2删除,起始地址为0x500000,大小为32M

nand write 30008000 500000 2000000 //将内存起始地址0x30008000中的cramfs文件镜像烧写到 //Nand flash中(起始地址0x500000,大小32M)

nand read 30008000 100000 400000 //从Nand Flash的0x100000读内核镜像至内存0x30008000 go 30008000 //从0x30008000处执行

setenv bootargs root=1f02 init=/linuxrc console=ttySAC0,115200 devfs=mount display=sam240

简单解析上面一条语句:当系统从0x30008000启动内核之后,bootargs的参数就传到内核中,内核将从1f02(=mtdblock2处执行init),执行linuxrc启动脚本,由此便可加载一个根文件系统。

3烧写Ramdisk文件系统格式(RW格式)

tftp 30008000 zImage nand erase 100000 400000

nand write 30008000 100000 400000 tftp 30800000 initrd.img.gz nand erase 500000 2000000

第 45 页 共 50 页 arefeng

45

LINUX菜鸟学习笔记

nand write 30800000 500000 2000000 nand read 30008000 100000 400000 nand read 30800000 500000 2000000 go 30008000

setenv bootargs root=/dev/ram rw init=/linuxrc initrd=0x30800000,8M console=ttySAC0,115200 devfs=mount display=sam240

下面来回顾下制作根文件系统的一些过程 1 下载并配置busybox源码

将源码包解压后进入其目录执行:#make menuconfig,会有许多菜单,可以对其进行相关的配置(与内核配置有点类似,具体配置过程略)

配置完成后保存退出,然后编译:#make 2 安装建立busybox文件系统 执行:#make install

运行此命令,会在busybox目录中生成_install目录,里面存放的就是busybox生成的工具。但是它并不完美,不符合根文件系统的相关标准,一些细节还需我们人工去完成,如建立某些文件夹,编写执行脚本。

建立文件夹:#mkdir dev etc lib mnt proc var tmp

建立编立可执行脚本文件:

进入_install/etc目录,建立inittab文件,编写脚本内容如下:

第 46 页 共 50 页 arefeng

46

LINUX菜鸟学习笔记

#This is run first excep when booting in single-user mode. ::sysinit:/etc/init.d/rcS

#/bin/sh invocatioins on selected ttys

#Start an \ ::askfirst:-/bin/sh

#Stuff to do when restarting the init process ::restart:/sbin/init

#Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot

进入_install/etc目录,建立init.d目录,进入init.d目录,建立rcS文件,内容如下: #!/bin/sh

#This is the first script called by init process /bin/mount -a exec /usr/etc/rc.local 保存退出,运行

#chmod 777 rcS //改变文件权限

进入_install/etc目录, 建立fstab文件,内容如下:

第 47 页 共 50 页 arefeng 47

LINUX菜鸟学习笔记

none /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0

进入_install/etc目录, 建立profile文件,文件内容如下: #/etc/profile

PATH=/bin:/sbin:/usr/bin:/usr/sbin

LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH export PATH LD_LIBRARY_PATH

注:profile用于设置shell的环境变量,shell启动时会读取/etc/profile来设置环境变量

进入_install/usr目录, 建立etc目录

进入_install/usr/etc目录,建立rc.local文件,内容哪下: #!/bin/sh

#add user specified script cd /dev

ln -s /dev/fb/0 fb0 ln -s vc/0 tty0 ln -s vc/1 tty1 ln -s vc/2 tty2

第 48 页 共 50 页 arefeng 48

LINUX菜鸟学习笔记

mknod -m 660 mtd0 c 90 0 #标红色的偶数0/2/4表示可读可写,mtd0/1/2代表了1f00/01/02,对 mknod -m 660 mtd1 c 90 2 #mtd0/1/2的操作==对1f00/01/02的操作 mknod -m 660 mtd2 c 90 4 mknod -m 660 1f00 b 31 0 mknod -m 660 1f01 b 31 1 mknod -m 660 1f02 b 31 2

(具体还得根据对Nandflash的分区情况进行)

保存退出,运行#chmod 777 rc.local //改变文件的执行权限

建立嵌入式系统库:

#cp /home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/arm-softfloat- linux-gnu/lib _install/ -a #cd _install/lib

删除所有的目录以及静态库(.a文件) 减肥减小库的体积,运行: #arm=softfloat-linux-gnu-strip *.so

3 NFS文件测试

第 49 页 共 50 页 arefeng 49

LINUX菜鸟学习笔记

配置/etc/exports设置共享NFS文件目录,看能否正常挂载,测试直到正常为止 4 制作ramdisk文件系统镜像,具体制作过程如下:

#dd if=/dev/zero of=initrd.img bs=1K count=8192 //创建一个内存分区 #mkfs.ext2 -F initrd.img //将一个内存空间格式化成ext2文件系统格式 #mkdir /mnt/initrd //建立一个挂载点

#mount -t ext2 -o loop initrd.img /mnt/initrd //将一个指定大小的文件系统格式挂载到一个 //文件夹中

#cp /source/rootfs/* /mnt/initrd -a //将根文件系统的目录结构拷贝至挂载点 #unmount /mnt/initrd //取消挂载

#gzip --best -c initrd.img > initrd.img.gz //将根文件系统打包成镜像文件 制作完成后需要对内核进行相应的配置使其支持ramdisk作为启动文件系统 . 最后,将完成的根文件系统镜像烧写至Nand flash中(烧写过程详见文章开始地方)

——————————————————文件结束—————————————— 2009.11.10

第 50 页 共 50 页 arefeng 50

本文来源:https://www.bwwdw.com/article/dl5p.html

Top