当前位置:文档之家› 实验6 linux内核定制和FloppyLinux的实现

实验6 linux内核定制和FloppyLinux的实现

实验6 linux内核定制和FloppyLinux的实现
实验6 linux内核定制和FloppyLinux的实现

实验六linux内核定制和FloppyLinux的实现

一,实验目的

完成这个实验后,您将具有以下能力:

n了解Linux内核的结构

n编译Linux内核的能力

n了解一个操作系统的构造

n制作f l o p p y l i n u x

二,基础知识

进行本实验前,您应具有:

n C语言基础

n Linux环境下vi编译器的使用

三,实验环境准备

为了完成本实验,以下硬件条件是必需的:

n PC机Pentium500以上,硬盘40G以上,内存128M以上,带软驱

n一张软盘

为了完成本实验,以下软件条件是必需的:

n PC机操作系统RedHat Linux 9.0

四,情景描述

1.重新编译生成一个新的系统内核,然后烧写到开发板启动之。

2.生成F l o p p y L i n u x。

五,实验基本原理——Linux的相关介绍

1,Linux的版本号

可以使用uname –a命令或者cat /proc/version命令来查看运行系统的内核版本号:如图6.1。

图6.1

由此可知,该系统内核版本号为2.4.20-8。其中第一个数为主版本号,第二个数为次版本号,第三个为修订号。如果次版本号为偶数则表明是该版本是稳定发行版本,如果是奇数则说明仍在开发中。

2,Linux的内核目录介绍

现代的操作系统一般由进程管理、内存管理、文件系统、驱动程序和网络等组成。Linux 内核源码的各个目录大致与此相对应,如图6.2所示。其组成如下:

图6.2

arch 包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux 支持的体系结构。

include 包括编译核心所需要的大部分头文件。

init 包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。mm 包含了所有的内存管理代码。

drivers 包含系统中所有的设备驱动程序。

ipc 包含了核心进程间的通信代码。

fs 存放Linux支持的文件系统代码。不同的文件系统有不同的子目录对应。

kernel 包含内核管理的核心代码放在这里。

net 核心的网络部分代码,其每个子目录对应于网络的一个方面。

lib 包含了核心的库代码。

scripts 包含用于配置核心的脚本文件。

Documentation下是一些文档,是对每个目录作用的具体说明。

一般在每个目录下都有一个.depend文件和一个Makefile文件。这两个文件都是编译时使用的辅助文件。另外有的目录下还有readme文件,它是对该目录下文件的一些说明。

3,关于配置文件和配置工具

配置文件:给用户提供配置选择的功能

各级Makefile和.depend文件:各级目录的make文件和依赖工具

.config:内核配置文件,保存配置结果。

Rules.mak e:规则文件。

配置工具:包括配置命令解释器

其中配置用户界面如下:

(1)基于字符的界面make config (如图6.3)

图6.3

该方法简单且不需要调用Xwindows,不过操作麻烦,用户界面差。(2)基于 Ncurses 的文本模式图形用户界面make menuconfig (如图6.4)

图6.4

该方法简单且不需要调用Xwindows,而且操作简单,用户界面好。

这次实验就使用该方法进行内核的相关配置。

(3)基于 Xwindows 图形界面的用户配置界面make xconfig (如图6.5)

图6.5

4,内核的编译

(1)在该级目录下的Config.in中添加对该模块的编译条件,该变量可以设置为三种状态:(如图6.6所示)

Y ---将该功能模块编译进内核

N ---不将该功能模块编译进内核

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

图6.6

(2)内核的编译操作

# make menuconfig-----配置编译选项

# make dep -----提供变量依赖关系信息.

# make clean-----删除生成的模块和目标文件.

# make zImage-----编译内核生成压缩的映象.

# make modules-----编译模块.

# make modules_install-----安装编译完成的模块.

最终生成的压缩内核映象的路径:arch/arm/boot/zImage

拷贝新内核文件zImage到启动目录,并改为合适的名字。

5,新内核的引导

修改/boot/grub/grub.conf文件的内容如下:

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

设置完成,然后就可以重启计算进入新编译的内核了。六,估计完成实验需要时间:180分钟

练习1

重新编译生成一个新的系统内核

情景描述

进入内核所在目录,使用m a k e m e n u c o n f i g进行配置。之后编译生成一个新的内核镜像,并

且烧写到A R M9嵌入式开发板上进行测试。

任务详细步骤

1.配置a r m内核相关信息 a. 进入arm内核所在目录

# cd /arm2410s/kernel-2410s

b.进入menuconfig配置菜单

# make menuconfig

c. 进行一定的更改之后,按esc按键退出界面并保存。如图6.7。

2. 编译生成新的内核。 a.输入如下命令,清除无用信息。

# make clean

b.输入如下命令,建立依赖关系。

# make dep

c.编译新内核

# make

最终生成的压缩内核映象的路径:arch/arm/boot/zImage,将该镜像拷贝出来,准备烧入到开发板中。

图6.7

任务

详细步骤 3. 烧写内核镜像

a. 打开宿主机,进入windows xp 系统,打开超级终端。超级终端设置参数如图6.8和图6.9所示。

b. 打开嵌入式平台,按住任何一个非回车键进入vivi ,然后按下如下命

令查看开发板信息:

vivi> part show

mtdpart info. (6 partitions)

name offset size flag

------------------------------------------------

vivi : 0x00000000 0x00020000 0 128k

param : 0x00020000 0x00010000 0 64k

kernel : 0x00030000 0x00100000 0 1M

root : 0x00130000 0x00300000 4 3M

yaffs : 0x00430000 0x03b00000 8 59M

ucos : 0x03f30000 0x000cc000 0 816k

注意:以上信息全部存储在64M 的flash 之中。

c. 准备烧写内核镜像,输入如下命令:

vivi> load flash kernel x

d. 在超级终端上点击传送菜单的发送文件,选择镜像文件zImage 和

Xmodem 协议,之后点击发送即可。等待过程结束(如图6.10和图6.11

所示)。

4. 测试

a. 完成上述操作之后,在/vivi 提示符下输入命令boot ,之后就可以看到启动新编译的内核了。

图6.8

图6.9

图6.10

图6.11

实验说明

关于make meunconfig的具体内容

当输入make menuconfig命令之后,系统会进入内核配置选项界面(如图6.12)。

图6.12

其各个界面内容介绍如下:

Code maturity level options(代码成熟度选项)--->

[*] Prompt for development and/or incomplete code/drivers

选择那些还在发展阶段,不成熟的代码或驱动

[ ] Prompt for obsolete code/drivers

对于已经不用的代码或驱动的支持

Loadable module support(动态模块支持)--->

[*] Enable loadable module support

加载模块支持

[ ] Set version information on all module symbols

支持跨内核版本的所有模块类型

[*] Kernel module loader

内核模块加载,提供自动载入或者卸载可载入的模块。

System Type(系统类型)--->

(S3C2410-based) ARM system type

--- S3C2410 Implementation

[*] SMDK (MERI TECH BOARD)

[*] change AIJI

S3C2410 USB function support

Support for S3C2410 USB character device emulation --- Processor Type(处理器类型)

[*] ARM920T CPU idle

[*] ARM920T I-Cache on

[*] ARM920T D-Cache on

[ ] Force write through caches on ARM920T

[ ] Support Thumb instructions (experimental)

General setup(一般设置)--->

[*] Support hot-pluggable devices

热拔插设备支持

[*] Networking support

网络支持

[*] System V IPC

SystemV进程间通讯支持

[*] Sysctl support

不重启直接改变内核参数

<*> NWFPE math emulation

模拟数学协处理器

<*> Kernel support for ELF binaries

内核支持ELF二进制

[*] Kernel-mode alignment trap handler

内核模式错误处理程序

Parallel port support (并口支持)--->

Memory Technology Devices (MTD) --->

<*> Memory Technology Device (MTD) support

MTD支持

<*> MTD partitioning support

MTD分区支持

<*> Direct char device access to MTD devices

直接字符设备到MTD设备的访问

<*> Caching block device access to MTD devices

缓冲块设备到MTD设备的访问

RAM/ROM/Flash chip drivers --->

Mapping drivers for chip access --->

Self-contained MTD device drivers --->

NAND Flash Device Drivers --->

Plug and Play configuration(即插即用配置)--->

Block devices(块设备)--->

Multi-device support (RAID and LVM) --->

Networking options(网络选项)--->

<*> Packet socket

包协议支持

<*> Netlink device emulation

利用netlink与内核传送信息

<*> Unix domain sockets

Unix Socket支持

[*] TCP/IP networking

TCP/IP 协议栈支持

Network device support(网络设备支持)--->

[*] Network device support?

Ethernet (10 or 100Mbit) --->

Ethernet (1000 Mbit) --->

<*> PPP (point-to-point protocol) support

点对点协议支持

[*] PPP multilink support (EXPERIMENTAL)

<*> PPP support for async serial ports

<*> PPP support for sync tty ports

<*> PPP over Ethernet (EXPERIMENTAL)

Amateur Radio support(无线网络支持)--->

IrDA (infrared) support(红外通讯支持)--->

ATA/IDE/MFM/RLL support(ATA/IDE/MFM/RLL等协议支持)---> SD/MMC support (SD/MMC等协议支持)--->

SCSI support (SCSI设备支持)--->

I2O device support (I2O设备支持)--->

ISDN subsystem (综合业务数字网)--->

Input core support (输入核心支持)--->

Character devices (字符设备)--->

[*] Virtual terminal

虚拟终端

Serial drivers --->

串口设备

S3C2410 ADC

S3C2410 FPGA

S3C2410 TUBE

S3C2410 INT

S3C2410 485

S3C2410 DA

S3C2410 STEP MOTOR

S3C2410 DC MOTOR

S3C2410 CAN BUS

S3C2410 GPRS

[*] Unix98 PTY support

I2C support ---> I2C总线支持

L3 serial bus support ---> L3串口总线支持

Mice ---> 鼠标支持

Joysticks ---> 手柄支持

Watchdog Cards ---> 看门狗定时设备支持

<*> S3C2410 Real Time Clock 内建实时时钟

PCMCIA character devices ---> PC字符设备支持

Multimedia devices (多媒体设备)--->

Video For Linux

Video For Linux ---> V4L

Radio Adapters --->

File systems --->

<*> Kernel automounter version 4 support (also supports v3)

V4版本支持,兼容V3

<*> DOS FA T fs support

DOS FA T文件系统支持

<*> VFAT (Windows-95) fs support

VFAT文件系统支持

<*> Yaffs filesystem on NAND

NAND FLASH上的Yaffs文件系统

<*> Compressed ROM file system support

[*] Virtual memory file system support (former shm fs)

<*> Simple RAM-based file system support

[*] /proc file system support

/proc虚拟文件系统支持,可以提供系统当前情况

[*] /dev file system support (EXPERIMENTAL)

/dev文件系统支持,支持devfs

[*]Automatically mount at boot

[*] /dev/pts file system for Unix98 PTYs

Network File Systems --->

Partition Types --->

Native Language Support --->

Console drivers (控制台驱动)--->

Sound (声音)--->

Multimedia Capabilities Port drivers (多媒体驱动)--->

USB support (USB驱动)--->

Bluetooth support (蓝牙)--->

Kernel hacking (内核调试相关信息)--->

练习2

制作FloppyLinux

情景描述

使用软盘进行G R U B配置,之后使用m a k e m e n u c o n f i g进行内核配置,之后使用B u s y b o x编译

生成一个新的根文件系统,把这些整合到软盘中完成F l o p p y L i n u x。

任务详细步骤

1.软盘上安装引导器(g r u b) a. 首先对软盘建立ex2文件系统

[root@localhost floppylinux]# mke2fs /dev/fd0

mke2fs 1.32 (09-Nov-2002)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

184 inodes, 1440 blocks

72 blocks (5.00%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

184 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or 180 days,

whichever comes first. Use tune2fs -c or -i to override.

b.之后将系统中grub目录下的引导文件stage1,stage2复制到软盘中

[root@localhost floppylinux]# mount /dev/fd0 /mnt/floppy

[root@localhost floppylinux]# cd /mnt/floppy/

[root@localhost floppy]# mkdir boot

[root@localhost floppy]# mkdir boot/grub

[root@localhost floppy]# cp /boot/grub/stage1 /mnt/floppy/boot/grub/

[root@localhost floppy]# cp /boot/grub/stage2 /mnt/floppy/boot/grub/

[root@localhost floppy]# ls boot/grub/

stage1 stage2

c.最后配置grub信息

[root@localhost floppy]# grub

Probing devices to guess BIOS drives. This may take a long time.

GRUB version 0.93 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB

lists possible command completions. Anywhere else TAB lists the

possible completions of a device/filename.]

grub> root (fd0)

Filesystem type is ext2fs, using whole disk

grub> setup (fd0)

Checking if "/boot/grub/stage1" exists... yes

Checking if "/boot/grub/stage2" exists... yes

Checking if "/boot/grub/e2fs_stage1_5" exists... no

Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p

/boot/grub/grub.conf "... succeeded

Done.

grub> quit

至此,引导盘安装完成!

2. 配置busybox相关选项 a.解压busybox,进入其文件夹

[root@localhost busybox-1.00]# pwd

/floppylinux/floppylinux/busybox-1.00

[root@localhost busybox-1.00]# make menuconfig

之后进入配置界面,并在选项中作如图6.13配置。

b.在General Configuration中如图6.14选择。

c.在Build Options中如图6.15选择

d.在Installation Options中如图6.16选择

e.其他选项遵从linux基本命令默认选项,配置好保存退出。

最终生成的压缩内核映象的路径:arch/arm/boot/zImage,将该镜像拷贝出来,准备烧入到开发板中。

图6.13

6.14

6.15

图6.16 任务

详细步骤 3. 编译并安装busybox

[root@localhost busybox-1.00]# make [root@localhost busybox-1.00]# make install

编译好后在busybox 目录下生成子目录_install

[root@localhost busybox-1.00]# cd _install/

[root@localhost _install]# ll

总用量 8

drwxr-xr-x 2 root root 4096 10月 31 22:29 bin

lrwxrwxrwx 1 root root 11 10月 31 22:29 linuxrc -> bin/busybox

drwxr-xr-x 2 root root 4096 10月 31 22:29 sbin

其中可执行文件busybox 在bin 目录下,其他的都是指向他的符号链接

4. 建立临时目录,该目录为软盘

的文件系统

[root@localhost floppyImage]# pwd /floppylinux/floppylinux/floppyImage 将busybox 下的_install 目录下的文件复制过来

cp /floppylinux/floppylinux/busybox-1.00/_install/*

/floppylinux / floppylinux/ floppyImage/ -r

[root@localhost floppylinux]# cd floppyImage/

[root@localhost floppyImage]# ls

bin linuxrc sbin

[root@localhost floppyImage]# mkdir dev etc etc/init.d proc mnt

tmp var

[root@localhost floppyImage]# chmod 755 dev etc etc/init.d bin

mnt tmp var

[root@localhost floppyImage]# chmod 555 proc

5. 建立设备列表 [root@localhost floppyImage]# cd dev

[root@localhost dev]# mknod tty c 5 0

[root@localhost dev]# mknod console c 5 1

[root@localhost dev]# chmod 666 tty console

[root@localhost dev]# mknod tty0 c 4 0

[root@localhost dev]# chmod 666 tty0

[root@localhost dev]# mknod ram0 b 1 0

[root@localhost dev]# chmod 600 ram0

[root@localhost dev]# mknod fd0 b 2 0

[root@localhost dev]# chmod 600 fd0

[root@localhost dev]# mknod null c 1 3

[root@localhost dev]# chmod 666 null

建立完毕,显示内容如图6.17

图6.17

6. 建立启动配置文件[root@localhost floppyImage]# cd etc/

[root@localhost etc]# vi inittab

[root@localhost etc]# vi fstab

[root@localhost etc]# cd init.d/

[root@localhost init.d]# vi rcS

其中

initab:

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

rcS:

#!/bin/sh

mount –a

# chmod 755 rc.sysinit

fstab:

proc /proc proc defaults 0 0

[root@localhost init.d]# cd /mnt/floppy/

[root@localhost floppy]# ls

boot lost+found

[root@localhost floppy]# cd boot/grub

[root@localhost grub]# vi grub.conf

grub.conf:

timeout 0

default 10

title FloppyLinux

root (fd0)

kernel /boot/bzImage

initrd /initrd.img.gz

之后建立连接文件menu.1st

[root@localhost grub]# ln -s grub.conf menu.1st

[root@localhost grub]# ls

stage1 stage2 grub.conf menu.1st

7. 制作镜像文件initrd.img [root@localhost boot]# dd if=/dev/zero of=/dev/ram1

dd: 正在写入‘/dev/ram1’: 设备上没有空间

读入了8193+0 个块

输出了8192+0 个块

[root@localhost boot]# mke2fs -m0 /dev/ram1

mke2fs 1.32 (09-Nov-2002)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

1024 inodes, 4096 blocks

0 blocks (0.00%) reserved for the super user

First data block=1

1 block group

8192 blocks per group, 8192 fragments per group

1024 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

[root@localhost boot]# mkdir /mnt/ram

[root@localhost boot]# mount /dev/ram1 /mnt/ram/

将先前做好的floppylinux根文件系统拷贝到ram1上

[root@localhost boot]# cp -R

/floppylinux/floppylinux/floppyImage/* /mnt/ram/

[root@localhost boot]# umount /dev/ram1

[root@localhost boot]# dd if=/dev/ram1

of=/floppylinux/floppylinux/floppyImage/initrd.img

读入了8192+0 个块

输出了8192+0 个块

[root@localhost boot]# file /floppylinux/floppylinux/floppyImage/initrd.img

/floppylinux/floppylinux/floppyImage/initrd.img: Linux rev 1.0 ext2 filesystem data

8.检查,用loop设备来把它重

新挂装到文件系统里

之后压缩initrd.img镜像文件[root@localhost boot]# cd /floppylinux/floppylinux/floppyImage/

[root@localhost floppyImage]# mount -o loop initrd.img /mnt/ram/

查看/mnt/ram下的内容,和/tmp/floppy-linux /下的一模一样[root@localhost floppyImage]# ls /mnt/ram/

bin dev etc linuxrc lost+found mnt proc sbin tmp var

[root@localhost floppyImage]# umount /mnt/ram/

[root@localhost floppyImage]# gzip -v9 initrd.img

initrd.img: 90.2% -- replaced with initrd.img.gz

查看压缩之后的大小

[root@localhost floppyImage]# ls -lh initrd.img.gz

-rw-r--r-- 1 root root 403K 10月31 22:57 initrd.img.gz

只有403k大小

9. 编译linux系统内核[root@localhost usr]# cp linux-2.4.20.bz2 /usr/src/

[root@localhost usr]# cd /usr/src

[root@localhost src]# tar xfvj linux-2.4.20.bz2

[root@localhost src]# ln -s linux-2.4.20 linux

进入linux源代码目录:

[root@localhost src]# cd linux

清理源代码树:

[root@localhost src]# make mrproper

运行配置程序:

[root@localhost src]# make menuconfig

具体的配置信息请见该实验步骤后面附带的实验说明

10. 整合启动盘[root@localhost floppyImage]# cp bzImage /mnt/floppy/boot/

[root@localhost floppyImage]# cp initrd.img.gz /mnt/floppy/

全部文件(文件夹)如下:

[root@localhost mnt]# tree floppy/

floppy/

|-- boot

| |-- bzImage

| `-- grub

|

|-- grub.conf

| |-- menu.1st -> grub.conf

| |-- stage1

| `-- stage2

|-- initrd.img.gz

`-- lost+found

3 directories, 6 files

11. 测试

重启机器,从软盘启动后,能进入GRUB 引导程序,之后开始运行floppylinux 系统。

当系统启动之后,显示内容如图6.18和图6.19所示。

图6.18

图6.19

实验说明

1,关于make meunconfig的具体内容

当输入make menuconfig命令之后,系统会进入内核配置选项界面(如图6.12)。其各个界面内容介绍如下:

code maturity level options

先选择N,当我们配置好常规的东西,要加入framebuffer支持时再将这一项选择Y,如果不在code maturity level options选择为Y,将不能配置framebuffer.

Loadable module support 选择N 不选择可加载内核模块的支持.

processor type and features processor family 中选择386CPU 其他选项都不要

General setup 选择networking support,PCI support ,System V ipc ,systrl

support,kernel support for ELF ,其他不要

chnology devices (MTD) 不要

Parallel port support 不要

Plug and Play configuration 不要

block devices 选择Normal floppy disk support ,Loopback device support ,

RAM disk support ,initial RAM disk (initrd) support ,Per

partition statics in /proc/partitions ,其他不要

Multi-device support (RAID and LVM) 默认

Cryptography support (CryptoAPI) 全部选择N

Networking options 把之后项目编译进内核: Packet socket :mmapped IO ,

TCP/IP networking,Telephony Support 选择N ,

ATA/IDE/MFM/RLL support 选择Y,然后下面的'IDE,ATA

and ATAPI Block Devices'按钮就被激活。下面几项选择Y,

其余都可以是N.

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support ,

Include IDE/ATA-2 DISK support ,Auto-Geometry Resizing

support ,Include IDE/ATA CDROM support

SCSI support 不要

Fusion MPT device support 不要

IEEE 1394(FireWire) support 不要

I2O device support

Network device support 选择,Ethernet(10 or 100 Mbit)为Reltek8139

Amateur Radio support 不要

IrDA (infrared) support 不要

ISDN subsystem 不要

Old CD-ROM drivers (not SCSI,not IDE) 不要

Input core support 不要

Charcter devices除了Virtual terminal和Support for console on terminal两项,其他全选N Multimedia devices 不要

Crypto Hardware support 不要

实验四Linux内核移植实验

合肥学院 嵌入式系统设计实验报告 (2013- 2014第二学期) 专业: 实验项目:实验四 Linux内核移植实验 实验时间: 2014 年 5 月 12 实验成员: _____ 指导老师:干开峰 电子信息与电气工程系 2014年4月制

一、实验目的 1、熟悉嵌入式Linux的内核相关代码分布情况。 2、掌握Linux内核移植过程。 3、学会编译和测试Linux内核。 二、实验内容 本实验了解Linux2.6.32代码结构,基于S3C2440处理器,完成Linux2.6.32内核移植,并完成编译和在目标开发板上测试通过。 三、实验步骤 1、使用光盘自带源码默认配置Linux内核 ⑴在光盘linux文件夹中找到linux-2.6.32.2-mini2440.tar.gz源码文件。 输入命令:#tar –jxvf linux-2.6.32.2-mini2440-20110413.tar对其进行解压。 ⑵执行以下命令来使用缺省配置文件config_x35 输入命令#cp config_mini2440_x35 .config;(注意:x35后面有个空格,然后有个“.”开头的 config ) 然后执行“make menuconfig”命令,但是会出现出现缺少ncurses libraries的错误,如下图所示: 解决办法:输入sudo apt-get install libncurses5-dev 命令进行在线安装ncurses libraries服务。

安装好之后在make menuconfig一下就会出现如下图所示。 ⑶配置内核界面,不用做任何更改,在主菜单里选择退出,并选“Yes”保存设置返回到刚命令行界面,生成相应配置的头文件。 编译内核: #make clean #make zImage 在执行#make zImage命令时会出现如下错误: 错误:arch/arm/mach-s3c2440/mach-mini2440.c:156: error: unknown field 'sets' specified in initializer 通过网上查找资料 于是在自己的mach-mini2440.c中加入 #include

实验一Linux基本操作实验报告

实验一 Linux基本操作 一.实验目的: 1. 二.实验环境: 虚拟机+Red Hat Enterprise Server 5.0 三.实验内容: 根据以下的文字提示,调用相应的命令来完成,记录相应的运行结果。一)用户和组基本操作 1.添加一个user01用户,家目录为/home/sub2,并设置密码 2.添加一个group1 组 3.将user01用户添加到group1组中 4.修改group1组名称为group2 5.修改user01的家目录为/home/user01 6.判断/etc/password这个目录是否包含user01这个用户 7.修改user01的shell为/bin/tcsh 8.添加一个group3组,把user01和root用户都添加到该组

https://www.doczj.com/doc/9418696238.html,er01用户从group2组切换到group3组 10.设置user01的密码在2012-5-20过期 11.把/home/user01目录所属的组修改为group3 12.删除user01帐号 13.查看内核版本号 二)进程管理 1.运行cat命令:vi test,输入若干字符如this is a example,挂起vi进程 2.显示当前所有作业 3.将vi进程调度到前台运行

4.将vi进程调度到后台并分别用kill/pkill/killall命令结束该该进程。 三)磁盘管理 1.通过fdisk 将为硬盘增加一个分区(主分区或者逻辑分区)。 2.并格式化ext3系统,

3.检测分区是否有坏道 4.检测分区的完整性 5.加载分区到/mnt目录(或者其他分区)下,并拷贝一些文件到该目录下 6.(选做)为test用户设置磁盘配额(软限制和硬限制参数自行设定) 7.退出/mnt目录后卸载该分区 8.用du查看/usr目录的大小

Linux操作系统实验教程

Linux操作系统实验教程 第1章Linux系统概述 一、Linux系统结构 从操作系统的角度来分析Linux,它的体系结构总体上属于层次结构如下图所示: 从内到外包括三层:最内层是系统核心,中间是Shell、编译编辑实用程序、库函数等,最外层是用户程序,包括许多应用软件。 从操作系统的功能角度来看,它的核心有五大部分组成:进程管理、存储管理、文件管理、设备管理、网络管理。各子系统实现其主要功能,同时相互之间是合作、依赖的关系。进程会管理是操作系统最核心的内容,它控制了整个系统的进程调度和进程之间的通信,是整个系统合理高效运行的关键; 存储管理为其他子系统提供内存管理支持,同时其他子系统又为内存管理提供了实现支持,例如要通过文件管理和设备管理实现虚拟存储器和内外存的统一管理。 二、配置一个双引导系统 如果计算机中已经安装了其他操作系统,并想创建一个引导系统以便兼用Red Hat Linux和另外的操作系统,需要使用双引导。机器启动时,可以选择其中之一,但不能同时使用两者。每个操作系统都从自己的硬盘驱动器或硬盘分区中引导,并使用自己的硬盘驱动器或硬盘分区。 如果计算机上还没有安装任何操作系统,可以使用专门的分区及格式化软件给Windows创建指定大小的分区,Windows的文件系统为FAT,再为Linux系统创建所需要大小的分区(4G或更大),另外再给Linux留100MB 左右的交换分区,Linux的文件系统为ext2。然后就可以安装系统了。应首先安装Windows,然后再安装Red Hat Linux。如果只进行了分区而没有格式化各分区,在安装时可以使用Windows自带的格式化程序和Linux自带的格式化程序进行各自分区的格式化。 当Windows已经被安装,而且已为Linux准备了足够的磁盘空间,就可以安装Linux了。Red Hat Linux安装程序通常会检测到Windows并自动配置引导程序来引导Windows或Red Hat Linux。

linux操作系统内核实验报告

linux操作系统内核实验报告 篇一:linux操作系统实验报告 LINUX操作系统实验报告 姓名班级学号指导教师 XX 年 05月 16 日 实验一在LINUX下获取帮助、Shell实用功能实验目的: 1、掌握字符界面下关机及重启的命令。 2、掌握LINUX下获取帮助信息的命令:man、help。 3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替 换与别名,管道及输入输出重定向。 实验内容: 1、使用shutdown命令设定在30分钟之后关闭计算机。 2、使用命令“cat /etc/cron.daliy”设置为别名named,然后再取消别名。 3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word。 4、使用管道方式分页显示/var目录下的内容。 5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。 实验步骤及结果:

1. 用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入 命令 Shutdown -h 30 2、使用命令alias将/etc/cron.daliy文件设置为别名named,左边是要设置的名称右边是要更改的文件。查看目录下的内容,只要在终端输入命令即可。取消更改的名称用命令unalias命令:在命令后输入要取消的名称,再输入名称。 3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。 4.使用命令ls /etc显示/etc目录下的内容,命令是分页显示。“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。 5 实验二文件和目录操作命令 实验目的: 1、掌握LINUX下文件和目录的操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、 mv、rm等。

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.doczj.com/doc/9418696238.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

实验七 Linux基础实验

实验七Linux基础实验 一、实验目的 1、搭建Linux开发环境:包括安装虚拟机VMware,在虚拟机中安装Ubuntu,实现Ubuntu 和主系统Windows之间的文件相互访问。 2、熟练使用Linux常用命令 3、初步了解Makefle 能够解读3个Makefile例子中所有代码, 二、实验设备及工具 PC机 三、实验原理 1、搭建Linux开发环境

我们实验是在VMware上创建一个Linux虚拟机,并安装Ubutun操作系统。 2、Linux命令 ls显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p(parent) cd 切换目录 cat 查看文件内容 cp 拷贝 mv 移动或重命名 rm 删除文件 -f :就是force 的意思,忽略不存在的文件,不会出现警告信息; -i :互动模式,在删除前会询问使用者是否动作 rmdir 删除空目录(目录内容没空,目录才能删除) pwd 显示当前路径 tar: 打包压缩 -c 归档文件 -x 压缩文件 -z gzip压缩文件 -j bzip2压缩文件 -v 显示压缩或解压缩过程v(view) -f 表示文件,后面跟着文件名 -C 临时改变工作目录,用于解压时指定解压目录 -P 表示压缩和解压时使用绝对路径 sudo chown [-R] owner[:group] {File|Directory} 文件权限管理 三种基本权限 R 读数值表示为4 W 写数值表示为2 X 可执行数值表示为1 -rw-rw-r–一共十个字符,分成四段。 第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录 第二三四个字符“rw-”表示当前所属用户的权限。所以用数值表示为4+2=6 第五六七个字符“rw-”表示当前所属组的权限。所以用数值表示为4+2=6 第八九十个字符“r–”表示其他用户权限。所以用数值表示为2 所以操作此文件的权限用数值表示为662 更改权限 sudo chmod [u所属用户g所属组o其他用户a所有用户] [+增加权限-减少权限] [r w x] 目录名

实验二:Linux系统的基本操作实验

Linux系统的基本操作实验 实验内容: 安装 Linux操作系统; 查看 Linux 的目录结构; 在字符界面下各种基础命令的使用。 实验目的: 通过亲自动手实践安装 Linux 操作系统,对 Linux 有个初步的认识,并且加深对 Linux 中的基本概念的理解,并熟悉 Linux 文件系统目录结构,熟悉Linux操作系统的环境。 掌握Linux系统下的基本操作;掌握字符界界面下基础命令的使用。 实验步骤(适当截图): 1.环境搭建完成,用普通用户登录到 Linux 下。(提示:登录用户名为bc, 密码为123456) 2.使用文件浏览器熟悉文件的目录结构。

3.以root用户登录到Linux系统 4.创建用户帐号 1)在图形用户界面下创建自己的用户帐号及帐号密码;

2)在字符界面下通过相关命令创建自己的帐号,通过相关命令设置自己帐 号的密码;

5.注销和重起Linux系统 1)在图形用户界面下完成系统的注销、用自己的帐号重起系统;

2)在字符界面下通过相关命令完成系统重启; 3)命令shutdown有什么功能及学习如何使用;

用法: shutdown[-i | -l | -s | -r | -a] [-f] [-m \computername] [-t xx] [-c "comment"] [-d up:xx:yy]没有参数显示此消息(与 ? 相同) -i 显示 GUI 界面,必须是第一个选项 -l 注销(不能与选项 -m 一起使用)-s 关闭此计算机 -r 关闭并重启动此计算机 -a 放弃系统关机 -m \computername 远程计算机关机/重启动/放弃 -t xx 设置关闭的超时为 xx 秒 -f 强制运行的应用程序关闭而没有警告 -d [p]:xx:yy 关闭原因代码u 是用户代码p 是一个计划的关闭代码xx 是一个主要原因代码(小于 256 的正整数)yy 是一个次要原因代码(小于 65536 的正整数) -m \计算机名:控制远程计算机 -i:显示图形用户界面,但必须是Shutdown的第一个选项 -l:注销当前用户 -r:关机并重启 -t时间:设置关机倒计时 -c "消息内容":输入关机对话框中的消息内容(不能超127个字符 6.关闭系统 1)在图形用户界面下关闭系统; 2)在字符界面下通过相关命令关闭系统;

linux内核编译和生成makefile文件实验报告

操作系统实验报告 姓名:学号: 一、实验题目 1.编译linux内核 2.使用autoconf和automake工具为project工程自动生成Makefile,并测试 3.在内核中添加一个模块 二、实验目的 1.了解一些命令提示符,也里了解一些linux系统的操作。 2.练习使用autoconf和automake工具自动生成Makefile,使同学们了解Makefile的生成原理,熟悉linux编程开发环境 三、实验要求 1使用静态库编译链接swap.c,同时使用动态库编译链接myadd.c。可运行程序生成在src/main目录下。 2要求独立完成,按时提交 四、设计思路和流程图(如:包括主要数据结构及其说明、测试数据的设计及测试结果分析) 1.Makefile的流程图: 2.内核的编译基本操作 1.在ubuntu环境下获取内核源码 2.解压内核源码用命令符:tar xvf linux- 3.18.12.tar.xz 3.配置内核特性:make allnoconfig 4.编译内核:make 5.安装内核:make install

6.测试:cat/boot/grub/grub.conf 7.重启系统:sudo reboot,看是否成功的安装上了内核 8.详情及结构见附录 3.生成makefile文件: 1.用老师给的projec里的main.c函数。 2.需要使用automake和autoconf两个工具,所以用命令符:sudo apt-get install autoconf 进行安装。 3.进入主函数所在目录执行命令:autoscan,这时会在目录下生成两个文件 autoscan.log和configure.scan,将configure.Scan改名为configure.ac,同时用gedit打开,打开后文件修改后的如下: # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) AC_CONFIG_SRCDIR([main.c]) AC_CONFIG_HEADERS([config.h]) AM_INIT_AUTOMAKE(main,1.0) # Checks for programs. AC_PROG_CC # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_OUTPUT(Makefile) 4.新建Makefile文件,如下: AUTOMAKE_OPTIONS=foreign bin_PROGRAMS=main first_SOURCES=main.c 5.运行命令aclocal 命令成功之后,在目录下会产生aclocal.m4和autom4te.cache两个文件。 6.运行命令autoheader 命令成功之后,会在目录下产生config.h.in这个新文件。 7.运行命令autoconf 命令成功之后,会在目录下产生configure这个新文件。 8.运行命令automake --add-missing输出结果为: Configure.ac:11:installing./compile’ Configure.ac:8:installing ‘.install-sh’ Configure.ac:8:installing ‘./missing’ Makefile.am:installing ‘./decomp’ 9. 命令成功之后,会在目录下产生depcomp,install-sh和missing这三个新文件和执行下一步的Makefile.in文件。 10.运行命令./configure就可以自动生成Makefile。 4.添加内核模块

探究linux内核,超详细解析子系统

探究linux内核,超详细解析子系统 Perface 前面已经写过一篇《嵌入式linux内核的五个子系统》,概括性比较强,也比较简略,现在对其进行补充说明。 仅留此笔记,待日后查看及补充!Linux内核的子系统 内核是操作系统的核心。Linux内核提供很多基本功能,如虚拟内存、多任务、共享库、需求加载、共享写时拷贝(Copy-On-Write)以及网络功能等。增加各种不同功能导致内核代码不断增加。 Linux内核把不同功能分成不同的子系统的方法,通过一种整体的结构把各种功能集合在一起,提高了工作效率。同时还提供动态加载模块的方式,为动态修改内核功能提供了灵活性。系统调用接口用户程序通过软件中断后,调用系统内核提供的功能,这个在用户空间和内核提供的服务之间的接口称为系统调用。系统调用是Linux内核提供的,用户空间无法直接使用系统调用。在用户进程使用系统调用必须跨越应用程序和内核的界限。Linux内核向用户提供了统一的系统调用接口,但是在不同处理器上系统调用的方法

各不相同。Linux内核提供了大量的系统调用,现在从系统 调用的基本原理出发探究Linux系统调用的方法。这是在一个用户进程中通过GNU C库进行的系统调用示意图,系 统调用通过同一个入口点传入内核。以i386体系结构为例,约定使用EAX寄存器标记系统调用。 当加载了系统C库调用的索引和参数时,就会调用0x80软件中断,它将执行system_call函数,这个函数按照EAX 寄存器内容的标示处理所有的系统调用。经过几个单元测试,会使用EAX寄存器的内容的索引查system_call_table表得到系统调用的入口,然后执行系统调用。从系统调用返回后,最终执行system_exit,并调用resume_userspace函数返回用户空间。 linux内核系统调用的核心是系统多路分解表。最终通过EAX寄存器的系统调用标识和索引值从对应的系统调用表 中查出对应系统调用的入口地址,然后执行系统调用。 linux系统调用并不单层的调用关系,有的系统调用会由

(完整版)Linux基本命令(带参考答案)

实训项目2 Linux基本命令 一、实训目的 ●掌握Linux各类命令的使用方法; ●熟悉Linux操作环境。 二、实训内容 练习使用Linux常用命令,达到熟练应用的目的。 三、实训步骤 子项目1.文件和目录类命令的使用 (1)启动计算机,利用root用户登录到系统,进入字符提示界面。练习使用cd命令 (2)用pwd命令查看当前所在的目录。 pwd命令用于显示用户当前所在的目录。如果用户不知道自己当前所处的目录,就可以使用这个命令获得当前所在目录 (3)用ls命令列出此目录下的文件和目录。 然后,使用ls命令,并用-a选项列出此目录下包括隐藏文件在内的所有文件和目录。 最后,用man命令查看ls命令的使用手册。 补充说明浏览信息内容:(以下面图片为例) - rw- r-- r-- 1 root root 8 Feb 21 18:42 mybook 1 2 3 4 5 6 7 8 9 10 11 1属性:- 代表文件,l代表链接文件,d代表目录 2 所有者权限(文件权限):具有r 读w 写没有x 执行

3 同组用户权限(文件权限):只读r 4 其他人权限(文件权限):只读r 5 链接数:1 6 文件拥有者:root 7 文件所属组:root 8 文件大小:8字节 9 创建或修改日期:2月21日 10 创建或修改时间:18:42 11 文件或目录名称 (4)在当前目录下,创建测试目录test。利用ls或ll命令列出文件和目录,确认test 目录创建成功。然后进入test目录,利用pwd查看当前工作目录。 ?mkdir命令用于创建一个目录。 ?该命令的语法为:mkdir [参数] 目录名 ?常用参数–p:如果父目录不存在,则同时创建该目录及该目录的父目录。 (5)利用cp命令复制系统文件/etc/profile到当前目录下。 # cp /etc/profile . (6)复制文件profile到一个新文件profile.bak,作为备份。 # cp profile profile.bak (7)用ll命令以长格形式列出当前目录下的所有文件,注意比较每个文件的长度和创建时间的不同。 (8)用less命令分屏查看文件profile的内容,注意练习less命令的各个子命令,如b、p、q等,并对then关键字查找。 注意:可以通过less - -help 命令查看帮助 ?less命令是more命令的改进版,比more命令的功能强大。more命令只能向下翻页,而less命令可以向下、向上翻页,甚至可以前后左右的移动。 ?执行less命令后,进入了less状态,按【Enter】键可以向下移动一行,按【space】键可以向下移动一页;按【b】键可以向上移动一页;也可以用光标键向前、后、左、右移动;按【q】键可以退出less命令。

简析linux内核的内核执行流程图

简析linux核的执行流程 ----从bootsect.s到main.c(核版本0.11)Linux启动的第一阶段(从开机到main.c) 3个任务: A、启动BIOS,准备实模式下的中断向量表和中断服务程序。 B、从启动盘加载操作系统程序到存。 C、为执行32的main函数做过渡准备。 存变化如下: ①、0xFE000到0xFFFFF是BIOS启动块,其中上电后第一条指令在0xFFFF0。 ②、而后0x00000到0x003FF总共1KB存放中断向量表,而接下去的地址到0x004FF共256B存放BIOS数据,从0x0E05B 开始的约8KB的存中存放中断服务程序。 ③、利用BIOS中断0x19h把硬盘的第一扇区bootsect.s的代码加载到存中,即0x07c00处,后转到该处执行。 ④、将bootsect.s的代码复制到0x90000处。 ⑤、利用中断0x13h将setup.s程序加载到存0x90200处。 ⑥、再将剩余的约240个扇区的容加载到0x10000~0x2EFFF 处。 ⑦、开始转到setup.s处执行,第一件事就利用BIOS提供的中断服务程序从设备上获取核运行的所需系统数据并存在0x90000的地址处,这时将原来bootsect.s的代码覆盖得只剩2Byte的空间。

⑧、关中断并将系统代码复制到0x00000处,将原来放在这里的中断向量表与BIOS数据区覆盖掉,地址围是 0x00000~0x1EFFF。同时制作两表与两寄存器。 ⑨开地址线A20,寻址空间达到4GB,后对8259重新编程,改变中断号。 ⑩、转到head.s(大小是25K+184B)执行,执行该程序完后是这样的: 0x00000~0x04FFF:页目录与4个页表,每一项是4KB,共20KB;0x05000~0x05400:共1KB的空间是软盘缓冲区; 0x05401~0x054b8:共184B没用; 0x054b9~0x05cb8:共2KB的空间存中断描述符表; 0x05cb9~0x064b8:共2KB的空间存全局描述符表; 之后就是main函数的代码了! 第二阶段、从main.c函数到系统准备完毕阶段。 第一步:创建进程0,并让进程0具备在32位保护模式下载主机中的运算能力。流程是: 复制根设备和硬盘参数表(main.c中的102、110、111行) 物理存规划格局(main.c的112行~126行,其中有 rd_init函数定义在kernel/ramdisk.c中,此函数用于虚拟盘初始化;而mem_init函数是用于存管理结构初始化,定义在mem/memory.c中,该函数页面使用

pc104 linux定制

基于PC/104平台嵌入式Linux系统核心定制方法 2007-10-26 嵌入式在线收藏| 打印 基于PC/104平台的嵌入式Linux技术在海洋自动观测系统中具有广泛的应用前景,Linux核心定制方法的研究是嵌入式Linux系统研制的关键工作。本文结合PC/104平台嵌入式Linux系统的研制,详细论述了Linux内核和文件系统的定制方法。 本文就如何对Linux系统的核心实现定制进行论述,主要内容包括Linux内核部分和文件系统,系统定制的硬件平台是PC/104单片机。之所以将Linux内核定制、文件系统定制单独讨论,是因为在基于任何平台的Linux系统定制过程中,其内核和文件系统的定制工作都具有相似的特征和相似的过程。 在基于PC/104平台的嵌入式Linux研制过程中,进行核心定制的主要目的是从需求出发使系统最大程度地满足应用的需要、最大程度地适应系统硬件平台、最优化地支持系统外围设备和应用程序,并且尽量减少对系统资源的占用、减少系统功耗,增强系统的安全性、稳定性、可靠性,另外使系统真正地实现产权自主化。 内核定制 一般操作系统的内核从体系结构角度可以划分为两种:微内核体系结构、单内核体系结构。微内核体系结构只在内核中包括了一些基本的内核功能,其它部分在用户内存空间运行,这种结构需要在各层之间进行调用,因此会有一定的消耗,使执行效率不如单内核体系结构。Linux采用单内核体系结构,内核的所有部分都集中在一起,这样能使系统的各部分直接沟通,有效地缩短任务之间的切换时间,提高了系统的响应速度,实时性好并提高了CPU的利用率,但在系统比较大的时候体积也比较大,与嵌入式系统容量小、资源有限的特点不符合,因此需要进行非常精细的定制以适应嵌入式系统的需要。 内核版本 Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或称开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行,如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。 一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发树就体现在源程序的版本号中;源程序版本号的形式为x.y.z,对于稳定树来说,y是偶数;对于开发树来说,y 比相应的稳定树大一(是奇数)。到目前为止,稳定树的最高版本是2.4.21,开发树的最新版

实验一linux基础

课程内容简介 实验目的 通过这门实验课,应可以做到: 一、初步的掌握Linux的使用:界面、基本命令、文本编辑、启动关机以及基本的设置。 二、理解集成电路设计的基础概念与流程。 三、了解集成电路设计的一些工具和基本设计方法:电路仿真(Hspice)、电路图绘制(Cadence Composer)、版图绘制(Cadence Virtuoso)、版图设计验证(Cadence Draculer/ Mentor Calibre、)。如果时间允许,也可能增加硬件描述语言设计与验证(Cadence LDV)、自动综合(Synopsys Design Compiler)的内容。 四、可以相对独立的完成一个完整CMOS数字电路的设计 任课教师与上课地点: 教师:张志峰email zhangzf@https://www.doczj.com/doc/9418696238.html, msn gipfel_z@https://www.doczj.com/doc/9418696238.html, 上课地点:电信学院实验中心348室 有问题也可以与实验中心的陈捷老师联系。 实验内容安排及学时分配 序 号 实验项目名称实验学时实验类型 1 Linux使用与文本编辑2必做 2 版图设计基础——反相器:版图设计 基本几何图形和基本编辑命令实验、 视窗操作命令及快捷键的使用实验 4必做 3 电路图绘制基础 2必做 4 版图DRC验证——反相器 2必做5 电路仿真基础——H s p i c e/S p e c t r e, S p i c e E x p l o r e r使用 2必做6 电路设计与仿真—— 一位加法器、D触发器 2必做

7 版图设计——一位加法器、D触发器2必做 8 版图验证——DRC、LVS、ERC 2必做 9 版图后仿真2必做 10-a 16位加法器设计4选做 10-b 12位计数器设计4选做 10-c 硬件描述语言设计与自动综合4选做 课程基本要求与考核: 课程成绩评定的依据为考勤、每次实验完成情况与实验报告、期终考核三部分。 考勤:每次实验开始前首先在考勤表中签名登记,请注意不要代签,否则一经发现代签人和被代签人最终课程成绩均做降档处理(扣20分),旷课每次扣10分。有特殊情况无法按时上课的必须提前通知任课教师,或在当次课请其他同学代交请假条(口头代为请假无效),否则作旷课处理。缺课(请假、旷课)必须另外安排时间完成所缺席的实验内容。 试验完成情况考核:每次实验时任课教师随机抽查。 实验报告:按照电信学院实验中心的要求,在实验中心网站上下载实验报告书,每次实验课完成后,下次实验课上课之前,以电子文档的方式提交给任课老师。电子文档请发送至zhangzf@https://www.doczj.com/doc/9418696238.html,,或在下次实验课当堂提交,邮件名称和电子文档名称均应为姓名_学号_实验序号。 期终考核:分为基本考核和综合实验考核两部分。综合实验考核——内容为学期末最后的综合实验完成情况,根据所提交的设计数据和设计报告评定期终考核部分的成绩,最高成绩为优。基本考核——对于无法独立完成综合实验内容的同学,可以选择完成基本考核。在期末最后一次实验时间,完成任课教师所规定的一个相对简单的考核内容,选择基本考核方式的同学最高成绩为良。 欢迎学有余力的同学报名担任助教,最终成绩评定时会适当加分。 基本设计环境简介:

Linux内核与跟文件系统的关系

Linux内核与根文件系统的关系 开篇题外话:对于Linux初学者来说,这是一个很纠结的问题,但这也是一个很关键的问题!一语破天机:“尽管内核是Linux 的核心,但文件却是用户与操作系统交互所采用的主要工具。这对Linux 来说尤其如此,这是因为在UNIX 传统中,它使用文件I/O 机制管理硬件 设备和数据文件。” 一.什么是文件系统 文件系统指文件存在的物理空间,linux系统中每个分区都是一个文件系统,都有自己的目 录层次结构。 Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其 中。这种机制有利于用户和操作系统的交互。 每个实际文件系统从操作系统和系统服务中分离出来,它们之间通过一个接口层:虚拟文件系统或VFS来通讯。VFS使得Linux可以支持多个不同的文件系统,每个表示一个VFS 的通用接口。由于软件将Linux 文件系统的所有细节进行了转换,所以Linux核心的其它部分及系统中运行的程序将看到统一的文件系统。Linux 的虚拟文件系统允许用户同时能透明地安装 许多不同的文件系统。 在Linux文件系统中,EXT2文件系统、虚拟文件系统、/proc文件系统是三个具有代表性的 文件系统。 二.什么是根文件系统 根文件系统首先是一种文件系统,该文件系统不仅具有普通文件系统的存储数据文件的功能,但是相对于普通的文件系统,它的特殊之处在于,它是内核启动时所挂载(mount)的第一个文件系统,内核代码的映像文件保存在根文件系统中,系统引导启动程序会在根文件系统挂载之后从中把一些初始化脚本(如rcS,inittab)和服务加载到内存中去运行。我们要明白文件系统和内核是完全独立的两个部分。在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误。 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/linuxrc.等其执行完后。切换根目录,再挂载具体的根文件系统.根文件系统执行完之后,也就是到了Start_kernel()函数的最后,执行init的进程,也就第一个用户进程。对系统进行各 种初始化的操作。 根文件系统之所以在前面加一个”根“,说明它是加载其它文件系统的”根“,既然是根的话,那么如果没有这个根,其它的文件系统也就没有办法进行加载的。它包含系统引导和使其他文件系统得以挂载(mount)所必要的文件。根文件系统包括Linux启动时所必须的目录和关键性的文件,例如Linux启动时都需要有init目录下的相关文件,在Linux挂载分区时Linux 一定会找/etc/fstab这个挂载文件等,根文件系统中还包括了许多的应用程序bin目录等,任何包括这些Linux 系统启动所必须的文件都可以成为根文件系统。Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。成功之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。在Linux 中将一个文件系统与一个存储设备关联起来的过程称为挂载(mount)。使用mount 命令将一个文件系统附着到当前文件系统层次结构中(根)。在执行挂装时,要提供文件系统类型、文件系统和一个挂装点。根文件系统被挂载到根目录下“/”上后,在根目录下就有根文件系统的各个目录,文件:/bin /sbin /mnt等,再将其他分区挂接到/mnt 目录上,/mnt目录下就有这个分区的各个目录,文件。

实验一Linux操作系统基础

实验一 1 实验名称:Linux操作系统基础 2 实验目标 2.1 掌握安装Linux操作系统的方法。 2.2 掌握Linux操作系统的基本配置。 2.3 了解GNOME桌面环境。 2.4灵活掌握基本shell命令的使用。 3 实验准备 3.1 下载VMware Workstation虚拟机软件(版本不限)。 3.2 准备Linux操作系统的安装源(内核版本和发行版本均不限)。 注:实验准备、实验内容4.1和4.2作为回家作业布置,同学们利用课余时间完成。 4 实验要求、步骤及结果 4.1 安装虚拟机软件。 【操作要求】安装VMware Workstation虚拟机软件,版本不限,并填写以下内容。 4.1.1安装VMware Workstation虚拟机软件的环境(操作系统) 4.1.2VMware Workstation虚拟机版本号

4.2 安装Linux操作系统。 【操作要求】在VMware虚拟机下安装Linux操作系统,版本不限,并填写以下内容。 4.2.1 Linux发行版本: 4.2.2 Linux内核版本: 4.2.3Linux操作系统的主要配置参数

4.3 了解Linux操作系统的桌面环境之一GNOME。 【操作要求1】打开图形化用户界面、查看桌面图标,查看主菜单,查看个人用户主目录等使用环境。 【操作要求2】启动字符终端2,了解命令提示行含义。 Alt+F2+Ctrl

[用户名@主机名目录名]提示符 【操作要求3】注销字符终端2 【操作要求4】关闭图形化用户界面,关闭Linux操作系统。 4.4 掌握基本shell命令的使用。 注:以下需要截取shell命令与结果,没有结果截到下一命令提示行。 【操作要求1】用超级用户登陆;将主机名改为具有个人学号后3位特征的名称,退出虚拟终端后重新登录;查看当前目录的绝对路径。 【操作步骤-登陆】 【操作步骤-修改主机名】 【操作步骤-查看结果】 【操作要求2】查看ls命令的手册页帮助信息;了解其中-d选项的作用,并举例说明。 【操作步骤】 【主要显示结果1-ls命令-d选项】

Linux操作系统实验指导书

《Linux系统管理与维护》实验指导书 实验一初识Linux操作系统 一实验名称 初识Linux操作系统 二实验目的与要求 掌握Linux的启动、登录与注销。 三实验内容 1.以root用户和普通用户两种不同身份登录Linux,说出其登录后得差异。 2.图形模式下的注销、重启与关机。 3.学会在虚拟机上登录和注销Linux。 四操作步骤与结果分析 五问题与建议

实验二Linux的桌面应用 一实验名称 Linux的桌面应用 二实验目的与要求 熟悉Linux操作系统桌面环境 熟悉Linux文件系统及常用的操作 掌握Linux下使用外部存储设备、网络设备 掌握Linux下安装应用程序 三实验内容 1.查看GNOME提供的“应用程序”、“位置”或者“系统”菜单,运行其中的应用程 序和工具。 2.查看Linux文件目录结构,学会常用的文件目录操作,如复制、粘贴、移动、删 除、更名、创建文档、创建文件夹等。 3.练习在Linux下使用光盘和U盘。 4.学会网络配置,使计算机能够进行网络浏览等操作。 5.学会在Linux下安装新的应用软件。 四操作步骤与结果分析 五问题与建议

实验三Linux操作系统的安装 一实验名称 Linux操作系统的安装 二实验目的与要求 掌握安装Linux操作系统 三实验内容 1.通过学习《项目五Linux操作系统的安装及远程服务》的内容,学会如何安装Linux。 环境:windows 系统、vmware虚拟机、Redhat Linux镜像光盘。 通过安装向导将安装分为两步:1、基本安装,2、配置及具体安装。 在第一阶段重点如何分区,在第二阶段重点掌握如何设置密码及安装桌面环境。四操作步骤与结果分析 五问题与建议

基于Linux内核编程的实验报告(Linux内核分析实验报告)

基于Linux内核编程的实验报告(Linux内核分析实验 报告) 以下是为大家整理的基于Linux内核编程的实验报告(Linux内核分析实验报告)的相关范文,本文关键词为基于,Linux,内核,编程,实验,报告,分析,,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 Linux内核分析实验报告

实验题目:文件系统实验 实验目的:linux文件系统使用虚拟文件系统VFs作为内核文件子系统。可以安装多种 不同形式的文件系统在其中共存并协同工作。VFs对用户提供了统一的文件访问接口。本实验的要求是 (1)编写一个get_FAT_boot函数,通过系统调用或动态模块调用它可以提 取和显示出FAT文件系统盘的引导扇区信息。这些信息的格式定义在内核文件的fat_boot_sector结构体中。函数可通过系统调用或动态模块调用。 (2)编写一个get_FAT_dir函数,通过系统调用或动态模块调用它可以 返回FAT文件系统的当 前目录表,从中找出和统计空闲的目录项(文件名以0x00打头的为从未使用过目录项,以0xe5打头的为已删除的目录项),将这些空闲的目录项集中调整到目录表的前部。这些信息的格式定义在内核文件的msdos_dir_entry结构体中。 硬件环境:内存1g以上 软件环境:Linux(ubuntu)2-6实验步骤: 一:实验原理: 以实验4为蓝本,在优盘中编译并加载模块,启动测试程序,查

/proc/mydir/myfile的文件内容。从优盘得到fat文件系统的内容存在msdos_sb_info结构中,然后得到msdos_sb_info结构相应的属性值,得到实验一的数据。实验二中,得到fat文件系统第一个扇区的十六个文件信息。然后按照文件名头文字的比较方法,应用归并排序的方法,将头文件是0x00和0xe5的文件调到前面,其他的文件调到后面 二:主要数据结构说明: (1)超级块对象: 数据结构说明:一个已经安装的文件系统的安装点由超级块对象代表。 structsuper_block{... conststructsuper_operations*s_op;} (2)索引i节点对象 数据结构说明:索引i节点对象包含了内核要操作的文件的全部控制信息,对应着打开文件的i节点表。structinode{ conststructinode_operations*i_op;...} (3)目录项对象 数据结构说明:录项对象代表了文件路径名的各个部分,目录文件名和普 通文件名都属于目录项对象。structdentry{

相关主题
文本预览
相关文档 最新文档