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 PATHexportPATH=/root/eva:PATH
/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)

  1. 下载客户端
    sudo apt-get install pptp-linux network-manager-pptp
    你可以把它理解为network-manager的一个插件。network-manager就是上面板右边“任务栏”里的那个用显示器图标。
    下载完后,单击这个图标,会出现“VPN连接”这一项。

  2. 创建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图形界面的用户配置界面

内核的源码、编译和安装

  1. 源码解压
      将系统源码安装到操作系统之中不仅可以方便学习内核的相应内容,而且具有可以帮助编译驱动程序等功能。完整的内核一般都比较大,可以从官方网站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
    之后进入源码文件夹。

  2. 编译选择
      在该级目录下的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 显示所启用的应用程序的文本/数据大小
   

0 0
原创粉丝点击