Linux — 操作系统课程设计笔记
来源:互联网 发布:手机贴纸淘宝 编辑:程序博客网 时间:2024/05/01 02:02
Linux — 操作系统课程设计笔记
笔记(一)
adderuser dr
su dr 切换用户
ls /bin/sh
/bin/bash /bin/dash /bin/rbash /bin/rzsh /bin/sh /bin/sh.distrib /bin/static-sh /bin/zsh /bin/zsh5
cat /etc/passwd
超级用户 root 0
1~499
普通用户 500~
ls -l 或ll
d目录 l 链接 c字符 b 块 —普通
windows linux 的3个区别
隐藏文件 attrib (windows) , . (linux)
文件不区分大小写 8.3主名副名 file + 文件名 看属性
/目录下
bin 外部命令 sbin 内部(内核)
whereis cd
cd:
whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
home 其他用户
dev 设备
proc 进程 (pid 和 硬件信息)
boot 引导系统(16位) grub windows(32 64位 没16位)不要引导系统,16位也不要,自己引导自己
etc 配置
usr 游戏
opt 外部
var
init 0 关机
笔记(二)
git add –all
linux 内核 3-5兆
文件夹命令
文件命令
mv A B 文件 文件夹;移动,改名
cp A B (文件,文件夹 -r 递归)复制
rm A (-f 强制)删除
find path -name lib (* 可以是0个; ?;查文件名) find /root -name hell
mkdir -p 1/2
文件内容命令
cat 显示 cat d/1/2/hello.c
grep key file (文件里的内容)
权限命令
chomd u(u/g/o)+x(r/w/x) batman
chomd 550 batman (1和3不能用)
chown:属主 owner
chgrp:group
ls -l (用户 组 )
rwx rwx rwx
user group(组内权限) other(组外权限)
u g o
vi 命令(: w q wq w! q! wq!) 插入
归档压缩
tar -xzvf
环境
gcc nihao.c -O3 -o hello (-O3 3级优化)
env
PATH 路径
echo
/root/.bash_pro
帮助
command –help
man command (q 退出)
笔记(三)
gcc -c hello.c -o hell0.o
gcc hello.o -o hello
-g 调试
-O
-L /lib file path
-I /include file path
make xconfig
make menuconfig
/root/ncurse
/sl
./menu
curse.h
floopy
cd /mnt/floppy
mount source target
dev/fd0 /mnt/floopy
A B ruanqu
C yingpan
卸载
umount /dev/fd0
umount /mnt/floopy
cd /root/Ti
DB AB CB M
DOS 16 20 1M
32位系统 32 32
mke2fs /dev/fd0 geshihua
笔记(四)
make
make clean
makefile 知识
target:source 目标从源得到(除all外,target~make target)
(tab)command 执行语句 tab
cd /user/src/linux-2.4
make clean
make menuconfig
make dep
make bzImage
makefile 优先级>Makefile
笔记(5)
bootloader 引导系统
grub等
grub
vmlinuz
kernel :kernel space 内核空间 OS本身
rootfs :user space
/proc /dev 做成结点,文件化
kill -9 +pid 有破坏性
1.44M 软盘
4M linux内核
bios(软件 )放在cmos(硬件)里
U-linux 从U盘启动 ,mount HD
job 由一个或多个进程组成
一个进程包括0个或多个线程
id 线程号
pthread_create(pid, null, func, null) 有限函数
pthread_exit(pid, null) 被动退出
pthread_join(pid, null) 等待这个线程自动结束
gcc -lpthread 附加线程库
线程 实现同步 无序
互斥锁
mutex_lock
mutex_unlock
条件变量
conditions_signal
conditions_wait
pro
mutex_lock
conditions_wait(no full)
pro
conditions_signal(not empty)
mutex_unlock
consumer
lock
wait(no empty)
con(m)
signal(not full)
unlock
书 62页
其它
ubuntu linux 连接vpn服务器
ubuntu linux 连接vpn服务器(pptpd)
下载客户端
sudo apt-get install pptp-linux network-manager-pptp
你可以把它理解为network-manager的一个插件。network-manager就是上面板右边“任务栏”里的那个用显示器图标。
下载完后,单击这个图标,会出现“VPN连接”这一项。创建VPN连接
点击“VPN连接”,新建一个连接。连接类型为“pptp“。如果你没有安装其它vpn协议的客户端,应该只会有这一个选项。
接下来的配置就很简单了。“网关”是vpn服务器的IP,“用户名”和“密码”就是你的vpn用户名和密码。
在“Advanced…“里可以配置加密方式。一般用默认就可以了。如果连接失败,注意”MSCHAP-v2”和”MPPE”两个选项。
选上 MPPE
linux的mount(挂载)命令详解
linux的mount(挂载)命令详解
挂载U盘
和USB接口的移动硬盘一样对linux系统而言U盘也是当作SCSI设备对待的。使用方法和移动硬盘完全一样。
插入U盘之前,应先用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
> * [root at pldyrouter root]# fdisk -l
插入U盘后,再用fdisk –l 或 more /proc/partitions查看系统的硬盘和硬盘分区情况。
> * [root at pldyrouter root]# fdisk -l
系统多了一个SCSI硬盘/dev/sdd和一个磁盘分区/dev/sdd1,/dev/sdd1就是我们要挂接的U盘。
> * mkdir -p /mnt/usb
注:建立一个目录用来作挂接点(mount point)
> * mount -t vfat /dev/sdd1 /mnt/usb
注:现在可以通过/mnt/usb来访问U盘了, 若汉字文件名显示为乱码或不显示,可以使用下面的命令。
> * mount -t vfat -o iocharset=cp936 /dev/sdd1 /mnt/usb
cd
mount /dev/cdrom /mnt/cdrom
linux 内核
内核版本号
- uname –a或者cat /proc/version 查看系统内核版本号,如图3-3。
Linux学习:Linux内核版本号格式
major.minor.patch-build.desc
1、major:表示主版本号,有结构性变化时才变更。
2、minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版。
3、patch:表示对次版本的修订次数或补丁包数。
4、build:表示编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
5、desc:用来描述当前的版本特殊信息;其信息由编译时指定,具有较大的随意性,但也有一些描述标识是常用的,比如:
<1>rc(有时也用一个字母r),表示候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。
<2>smp,表示对称多处理器(Symmetric MultiProcessing)。
<3>pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
<4>EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。
<5>mm,表示专门用来测试新的技术或新功能的版本。
<6>fc,在Red Hat Linux中表示Fedora Core。
Alpha版本是内部测试版,是比Beta版还早的测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。
Beta版本是测试版,这个阶段的版本会一直加入新的功能。
RC版本(Release Candidate) 是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。 RTM版本(Release to Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的。 OEM版本是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。如果买笔记型计算机或品牌计算机就会有随机版软件。包装不像零售版精美,通常只有一面CD和说明书(授权书)。 RTL版本(Retail)是真正的正式版,正式上架零售版。
内核源码目录
Linux的源代码被组织成树形结构,以Linux为根。一般放在/usr/src/linux目录下。内核源码目录说明如表3-1所示。
表3-1 内核源码目录
目录名称 目录功能
arch 包括了所有和体系结构相关的核心代码。下面每一个子目录都代表一种体系结构。
crypto 一些常用的加密和散列算法等等
include 包括编译内核所需要的大部分头文件。
init 包含内核的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。
mm 包含所有的内存管理代码。
drivers 包含系统中所有的设备驱动程序。
ipc 包含核心进程间的通信代码。
fs 存放Linux支持的文件系统代码。不同的文件系统有不同的子目录
kernel 包含内核管理的核心代码。
net 内核的网络部分代码,其每个子目录对应于网络的一个方面。
lib 包含核心的库代码。
scripts 包含用于配置核心的脚本文件。
Documentation 一些文档,是对每个目录作用的具体说明。
一般在每个目录下都有一个.depend文件和一个Makefile文件,这两个文件都是编译时使用的辅助文件。另外,有的目录下还有readme文件,它是对该目录下文件的一些说明。
配置文件和配置工具
一.配置文件
配置文件名 功能
各级Makefile和.depend文件 各级目录的make文件和依赖工具
.config 内核配置文件,保存配置结果
Rules.make 规则文件
二.配置工具
- make config //基于字符的界面
- make menuconfig //基于Ncurses的文本模式图形用户界面
- make xconfig // 基于Xwindows图形界面的用户配置界面
内核的源码、编译和安装
源码解压
将系统源码安装到操作系统之中不仅可以方便学习内核的相应内容,而且具有可以帮助编译驱动程序等功能。完整的内核一般都比较大,可以从官方网站http://www.kernel.org下载。下载的内核一般是一般是 tar.gz或者是.bz2压缩文件,使用时需要解压,并且在编译内核注意需要root权限。一般需要如下几个步骤:
1)需要升级的内核拷贝到/usr/src/下:
#cp linux-2.4.24.tar.gz /usr/src
2)现在解压下载的源程序文件。如下所示:
#tar -zxvf linux-2.4.24.tar.gz
3)文件将解压到/usr/src/linux目录中,建立链接:
#ln -s linux-2.4.24 linux
之后进入源码文件夹。编译选择
在该级目录下的Config.in中添加对该模块的编译条件,该变量可以设置为三种状态:(如图3-8所示)
Y —将该功能模块编译进内核
N —不将该功能模块编译进内核
M —将该功能编译成模块的方式,可以在需要时动态插入到内核中的模块
图3-8 模块选择情况
3. 内核的编译操作
下面给出了用于内核编译的主要命令:
make menuconfig —–配置编译选项
make dep —–提供变量依赖关系信息.
make clean —–删除生成的模块和目标文件.
make zImage —–编译内核生成压缩的映象.
make modules —–编译模块.
make modules_install —–安装编译完成的模块.
进入内核所在目录,使用make menuconfig进行配置。之后编译生成一个新的内核镜像,并且烧写到ARM9嵌入式开发板上进行测试。首先进入内核所在目录:
输入如下命令,清除无用信息和干扰信息:
# make clean
进入arm内核所在目录,并且使用命令menuconfig配置菜单:
# make menuconfig
进行一定的更改之后,按esc按键退出界面并保存。
输入如下命令,建立依赖关系:
# make dep
编译新内核:
# make
如果编译压缩内核,则可以使用如下命令:
# make zImage
编译完成之后最终生成的压缩内核映象的路径为arch/arm/boot/zImage,之后拷贝新内核文件zImage到启动目录,并改为合适的名字vmlinuz-2.4.24,即可启动新完成的内核镜像。
4.新内核的引导
将生成的新内核vmlinuz-2.4.24移动到/boot下,并修改/boot/grub/grub.conf文件的内容如下。该文件说明内核引导新编译的内核vmlinuz-2.4.24。
default=0 timeout=30
splashimage=(hd0,6)
title Red Hat Linux (2.4.24)
root (hd0,0)
kernel vmlinuz-2.4.24 ro root=/dev/hda0
initrd /initrd-2.4.24.img
设置完成,然后就可以重启计算进入新编译的内核了。
BusyBox的移植
BusyBox的相关配置和编译内核类似,需要首先使用make menuconfig命令进行手工配置。敲下make menuconfig命令之后,进入界面
之后选择相应的配置之后,就可以保存退出。输入make命令即可以编译生成相应的BusyBox二进制命令文件。BusyBox其他命令包括:
help 显示 make 选项的完整列表
defconfig 启用默认的(通用)配置
allnoconfig 禁用所有的应用程序(空配置)
allyesconfig 启用所有的应用程序(完整配置)
allbareconfig 启用所有的应用程序,但是不包括子特性
config 基于文本的配置工具
menuconfig N-curses(基于菜单的)配置工具
all 编译 BusyBox 二进制文件和文档(./docs)
busybox 编译 BusyBox 二进制文件
clean 清除源代码树
distclean 彻底清除源代码树
sizes 显示所启用的应用程序的文本/数据大小
- Linux — 操作系统课程设计笔记
- 操作系统课程设计——文件系统
- 操作系统课程设计——文件系统
- 操作系统课程设计2 编写Linux bash脚本
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计
- 操作系统课程设计1 Linux下编译c++文件
- 操作系统课程设计-二级文件系统,Linux平台版本,c语言
- 操作系统课程设计任务书
- 操作系统课程设计完成了
- 操作系统课程设计指导书
- 操作系统课程设计代码
- 计算机操作系统课程设计
- Java中怎样判断一个字符串是否是数字
- Android *** Drawable、Bitmap、Canvas、Paint之间区别
- MWC-电机、电池螺旋桨搭配
- iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求
- DOO-SABIN 细分正方体(1)利用邻接矩阵表示
- Linux — 操作系统课程设计笔记
- Dubbo源码分析(九):与spring融合
- 启动Mongo之由于目标计算机积极拒绝,无法连接--mongoDB连接错误解决办法
- Prototype使用Form操作表单
- L2范数归一化
- C#设置当前项目为启动项
- 深入解析 ObjC 中方法的结构
- 【C++】Digest of 《effective C++》--2
- 第11周项目2储存班长信息的学生类