linux非root用户添加rzsz,嵌入式linuxbusybox文件系统的移植和rzsz命令的添加

-----------------创建rootfs文件夹-------------------mkdir my_rootfs

cd my_rootfs

mkdir bin dev etc home lib mnt proc sbin sys tmp root usr var mnt/etc usr/bin usr/lib usr/sbin

touch linuxrc使用mknod来自己建所需要的device,举例:# mknod -m 600 dev/console c 5 1

# mknod -m 666 dev/null c 1 3

BusyBox-1.9.2版本------------------修改编译配置选项--------------------开始移植

1.下载busybox1.9.2,并解压缩。

下载busybox源代码:http://busybox.net/downloads/busybox-1.9.2.tar.bz2

交叉编译工具:arm-linux-gcc-3.4.1

解压源码:tar -jxvf busybox-1.9.2.tar.bz2

2.修改Makefile中的174行的arch和编译工具链头。

ARCH                 ?= arm

CROSS_COMPILE       ?= /usr/local/arm/3.4.1/bin/arm-linux-

3.       make menuconfig.修改编译配置选项。

Busybox Setting----->

build option-->

[ ] Build BusyBox as a static binary (no shared libs)

[*] Build shared libbusybox

[*]   Produce a binary for each applet, linked against libbusybox

[*]   Produce additional busybox binary linked against libbusybox

[ ] Build with Large File Support (for accessing files > 2 GB)

installation option-->

[*] Don't use /usr

Applets links (as soft-links) --->

(./_install) BusyBox installation prefix

Busybox Library Tuning --->

MD5: Trade Bytes for Speed

[*] Faster /proc scanning code (+100 bytes)

[*] Support for /etc/networks

[*] Support for /etc/networks

[*]   Additional editing keys

[*]   vi-style line editing commands

[*]   History saving

[*]   Tab completion

[*]   Username completion

[*]   Fancy shell prompts

Linux Module Utilities --->

[*] Support version 2.6.x Linux kernels

[*] insmod

[*]   Enable load map (-m) option

[*]     Symbols in load map

[*] rmmod

[*] lsmod

[*]   lsmod pretty output for 2.6.x Linux kernels

[*] modprobe

[ ]   Multiple options parsing

[ ]   Fancy alias parsing

---   Options common to multiple modutils

[ ] Support tainted module checking with new kernels

[ ] Support version 2.2.x to 2.4.x Linux kernels

[*] Support version 2.6.x Linux kernels

shell -à

[*]alias support

其他的用默认值

-----------------------编译busybox-----------------------

makemake install在busybox/_install目录下会生成我们需要的文件。修改_install/bin/busybox的属性。为4755

chmod 4755 ./_install/bin/busybox必须要修改属性,否则在busybox中很多命令会受限将编译好的busybox拷贝到my_roofs下面。

【_install】cp -Rfv * /my_roofs-----------------------/lib文件--------------------------------/lib的库其实就是进行busybox编译的库,即交叉编译器的库,我们这里使用的是3.4.1(位置/usr/local/arm/3.4.1)。# cd  /usr/local/arm/3.4.1/arm-linux/lib

# for file in libc libcrypt libdl libm libpthread libresolv libutil

> do

> cp $file-*.so  /my_rootfs/lib (复制到你做的文件系统的/lib目录下)

> cp -d $file.so.[*0-9]  /my_rootfs/lib (同上)

> done

# cp -d ld*.so*  /my_rootfs/lib   (同上)

-----------------系统配置文件的建立-----------------------========/etc目录============

(1)profile文件#Set search library path

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

#Set user path

PATH="/bin:/sbin:/usr/bin:/usr/sbin:"$PATH

alias ll='ls -l'

#Set PS1

USER="`id -un`"

LOGNAME=$USER

PS1='[/u@/h /W]/$ '

PATH=$PATH

export USER LOGNAME PS1 PATH

(2)fstab文件proc  /proc proc  defaults  0 0

none  /tmp  ramfs defaults  0 0

mdev  /dev  ramfs defaults  0 0

sysfs /sys  sysfs defaults  0 0

(3)inittab文件::sysinit:-/etc/init.d/rcS

::respawn:-/bin/sh

::ctrlaltdel:/bin/umount -a -r

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff -a

(4)创建/etc/init.d文件夹和rcS,在rcS中添加#! /bin/sh

echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

echo "^     Welcome to YAFFS root filesystem!   ^"

echo "^                    soso                  ^"

echo "^^^^^^^^^^^^^^^^09-3-18^^^^^^^^^^^^^^^^^^^^"

/bin/hostname -F /etc/host

# mount all filesystem defined in "fstab"

ln -s /dev/vc/0 /dev/tty1

echo "# mount all..........."

/bin/mount -a

echo "# Starting mdev........."

#/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

/sbin/ifconfig lo 127.0.0.1

/sbin/ifconfig eth0 192.168.0.55

/sbin/route add default gw 192.168.0.1

(5)创建host文件soso

(6)创建mdev.conf文件(空文件)

(7)复制主机/etc/下面的文件passwd, group, shadow文件到/etc# cp /etc/group .

# cp /etc/passwd .

# cp /etc/shadow .

修改passwd中用户使用的shell名称。FC6上默认的为bash,而vivi只支持ash。root:x:0:0:root:/root:/bin/bash ----> root:x:0:0:root:/root:/bin/ash

(8)修改各文件和文件夹的权限# chmod 755 /my_roofs/etc/init.d/rcS

# chmod 755 /my_roofs/etc/host

-------------yaffs文件系统映像的制作---------使用mkyaffsimg程序可以把一个目录做成一个yaffs映像文件,然后使用usb下载到板子上。进入文件系统目录层,使用以下命令。#./mkyaffsimg my_roofs rootfs.img(改名filesystem.yaffs)这样就会在该目录下生成roofs.img映像文件,下载到开发板运行即可。

--------------cramfs文件系统映像的制作(cramfs压缩率比较高)------------在FTP中下载cramfs-1.1.tar.gz,解压到自己设定的目录下,如:tar xzvf cramfs-1.1.tar.gz –C /home/进入生成有mkcramfs文件的目录下(一定要进入此目录,否则会提示找不到该命令)输入命令:#./mkcramfs / rootfs rootfs.cramfs在当前目录下即生成rootfs.cramfs映像文件。到此Linux操作系统移植完毕。

下载源码

移植新下载的linux源码中是没有超级终端的命令的,需要自己添加。添加完了,就开发板就可以PC通过串口传输文件了。

步骤:

2、解压tar zxvf  rzsz-3.48.tar.gz

3、安装cd src

vi Makefile

修改CC=arm-linux-gcc

保存退出

make posix。

注意:这个软件安装与常规的GNU软件不同—没有configure(配置)及make install (安装过程)。

我的是S3C2410的交叉编译器,不同的平台只是交叉编译器不一样而已。

输入命令make posix后,如果编译成功,在输入 ls命令,你将发现,多了很多文件

COPYING   gz         minirb.c    rc      rz.c    sz       undos.doc  zmodem.h

crc.c     mailer.rz  minirb.doc  README  rz.doc  sz.c     zcommand   zmr.c

crc.doc   Makefile   rb          rx      sb      sz.doc   zcommandi  zupl.t

crctab.c  Makefile~  rbsb.c      rz      sx      undos.c  zm.c

将rb,rx,rc,rz,sb,sx,sz,zcommand

zcommandi拷贝到你制作的根文件系统的bin目录下,然后在将交叉编译器下的ld-2.5.so      libc-2.5.so

libcrypt.so.1  libgcc_s.so.1  libm.so.6 ld-linux.so.3  libcrypt-2.5.so

libc.so.6

libm-2.5.so等库(可能版本不同,相应的数字,但只要是这几个文件即可)拷贝到根文件系统的lib目录下,然后再重新制作该根文件系统,下载到

开发板,重新启动,可以试一下rz和sz

《编译原理》是计算机科学中一门极为重要的课程,主要探讨如何将高级程序设计语言转换成机器可执行的指令。清华大学的张素琴教授在这一领域有着深厚的学术造诣,其编译原理课后习题答案对于学习者而言是常珍贵的资源。这份压缩文件详细解析了课程中所涉及的概念、理论方法的实践应用,目的是帮助学生更好地理解编译器设计的核心内容。 编译原理的核心知识点主要包括以下几点: 词法分析:作为编译过程的首要环节,词法分析器会扫描源代码,识别出一个个称为“标记”(Token)的最小语法单位。通常借助正则表达式来定义各种标记的模式。 语法分析:基于词法分析产生的标记流,语法分析器依据文法规则构建语法树。上下文无关文法(CFG)是编译器设计中常用的一种形式化工具。 语义分析:这一步骤用于理解程序的意义,确保程序符合语言的语义规则。语义分析可分为静态语义分析动态语义分析,前者主要检查类型匹配、变量声明等内容,后者则关注运行时的行为。 中间代码生成:编译器通常会生成一种高级的中间表示,如三地址码或抽象语法树,以便于后续的优化目标代码生成。 代码优化:通过消除冗余计算、改进数据布局等方式提升程序的执行效率,同时不改变程序的语义。 目标代码生成:根据中间代码生成特定机器架构的目标代码,这一阶段需要考虑指令集体系结构、寄存器分配、跳转优化等问题。 链接:将编译后的模块进行合并,解决外部引用,最终形成一个可执行文件。 错误处理:在词法分析、语法分析语义分析过程中,编译器需要能够检测并报告错误,例如语法错误、类型错误等。 张素琴教授的课后习题答案覆盖了上述所有核心知识点,并可能包含实际编程练习,比如实现简单的编译器或解释器,以及针对特定问题的解题策略。通过解答这些习题,学生可以加深对编译原理的理解,提升解决问题的能力,为今后参与编译器开发或软件工程实践奠定坚实的基础。这份资源不仅是学习编译原理的有力辅助材料,也是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值