Ubuntu 嵌入式使用环境配置

前提 下载好vmware(高版本)-->ubuntu(32位) -->xshell-->交叉编译工具 --> uboot-->linux内核 -->busybox根文件系统-->tftp-->NFS

仅供参考

ubuntu :https://www.ubuntu.com/download/desktop 

Ubuntu18.04第一次打开VI编辑器时,按方向键会出现ABCD等乱码,BackSpace按键也不能正常使用等问题。

解决方法:

sudo apt-get remove vim-common

sudo apt-get install vim

make 工具使用 
sudo apt-get install make 
//sudo apt-get install make-guile

gcc command not found:
sudo apt-get install gcc

 

交叉编译工具链 :

https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads

            http://ymorin.is-a-geek.org/download/crosstool-ng/

补丁:http://ymorin.is-a-geek.org/download/crosstool-ng/01-fixes/

uboot:http://ftp.denx.de/pub/u-boot/

linux内核 :https://www.kernel.org/

busybox :https://busybox.net/downloads/

 

一、网络环境的配置 

1.两个地方要选择桥接模式:        
                虚拟机 --->>> 设置  --->>> 网络适配器 --->>> 桥接模式                
                编辑   --->>> 虚拟网络编辑器 --->>> 桥接模式   (必须在关机后配置)

1)文件配置 :

1. /etc/network/interfaces 
				
		auto eth0
				
		#动态分配
		iface eth0 inet dhcp				
		#==============================
				
		#静态指定ip地址
		iface eth0 inet static  
		address 192.168.3.103         ip地址
		netmask 255.255.255.0         子网掩码
		gateway 192.168.3.1           网关
								
2. /etc/resolv.conf     域名解析服务器配置文本			
	nameserver 8.8.8.8			
3. /etc/rc.local        开机自运行脚本
	echo "nameserver 8.8.8.8" >> /etc/resolv.conf
4. 重启网络设备
	sudo /etc/init.d/networking restart

2)界面配置 找到网络图标单击 进行配置 选择动态分配或者静态分配

2.xshell

1)ubuntu安装ssh服务器

sudo apt-get install openssh-server

2)出现问题时,重启ssh服务即可

sudo service ssh restart

二、交叉编译链的安装

解压缩到制定文件  路径配置以解压为准

安装交叉编译:
1.在当前终端
	linux@Ubuntu1:~$ export PATH=$PATH:/home/linux/external-toolchain/bin
	linux@Ubuntu1:~$ arm-linux-gnueabi-gcc -v

2.对当前用户安装
	vi .bashrc
	export PATH=$PATH:/home/linux/external-toolchain/bin
	sudo reboot

    打开配置文件:sudo vim /etc/bash.bashrc
	在最后一行添加:export PATH=$PATH:/home/linux/toolchain/toolchain-4.5.1-farsight/bin
	保存并退出
    生效配置文件
	source /etc/bash.bashrc
			
3.对所有用户安装
	sudo vi /etc/environment 
	添加::/home/linux/external-toolchain/bin
    source /etc/environment
64位装32位的可能会出错 使用
sudo apt-get install lib32z1 lib32ncurses5 libbz2-1.0:i386 lib32stdc++6

 

使用安装 arm-none 使用tab能自动补全 

arm-non-linux-gnueabi-gcc  -v 出现版本号 就安装成功了
三、uboot编译

1.指定交叉编译工具链
$ vim Makefile
把  
   ifeq ($(HOSTARCH),$(ARCH))
   CROSS_COMPILE ?=
   #endif
下添加
    ifeq(arm,$(ARCH))
    CROSS_COMPILE ?= arm-none-linux-gnueabi-
    #endif
2.
配置XXX.c 找到相似的进行移植 配置
make xxx_config
$ make

3.把tools目录下的mkimage放到/usr/bin 目录下

4.出错的话 执行clean 删掉之前被别人配置过得文件 

四、进行linux内核的编译

1.配置.config目录,把产品的XXX_defconfig 放到   arch/arm/configs/目录下
2.make xxx_defconfig

3.make menuconfig
    1、sudo apt-get update 更新软件

    2、安装下面的软件 
    sudo apt-get install build-essential 
    sudo apt-get install libncurses5 
    sudo apt-get install libncurses5-dev 
4.make uImage

5.生成设备树

arch/arm/boot/dts/xxx.dts
 
make dtbs

五、Busybox进行根文件系统设置

1.	配置并编译Busybox。使用下面的命令。
    源码包在“案例源码\第三天\ busybox-1.22.1.tar.bz2”
    $ tar -jxvf busybox-1.22.1.tar.bz2
    $ cd busybox-1.22.1/
    $ make menuconfig

Busybox Settings  --->
	Build Options  --->
		[ ] Build BusyBox as a static binary (no shared libs) (NEW)
		(arm-none-linux-gnueabi-) Cross Compiler prefix
	Installation Options ("make install" behavior)  --->
		(./_install) BusyBox installation prefix
2.	编译并安装Busybox。使用下面的命令。
    $ make
    $ make install	
    安装成功后,生成以下目录。
    $ ls _install
    bin  linuxrc  sbin  usr
3.	拷贝共享库文件。
    $ cd ./_install
    $ cp -a /home/linux/ toolchain-4.5.1-farsight/arm-none-linux-gnueabi/libc/lib .
    共享库的路径根据交叉编译工具链安装的位置的不同而不同。
    $ sudo rm lib/*.a						# 删除静态库文件
    $ arm-none-linux-gnueabi-strip lib/*.so		# 裁剪共享库文件,减小体积
4.	添加其他目录。重新进入到_install目录,生成相应的目录。
    $ cd _install
    $ mkdir dev etc home mnt proc root sys tmp var
    $ mkdir etc/init.d
5.	添加/etc/inittab文件,文件内容如下。
    ::sysinit:/etc/init.d/rcS
    ::askfirst:-/bin/sh
    ::ctrlaltdel:/sbin/reboot
    ::restart:/sbin/init
6.	添加/etc/ init.d/rcS文件,文件内容如下。
    #!/bin/sh
    /bin/mount -a
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    /sbin/mdev -s
7.	接下来添加该文件的可执行权限。
    $ chmod +x etc/init.d/rcS
8.	添加/etc/fstab文件,文件内容如下。
    proc     /proc   proc    defaults        0       0
    tmpfs    /tmp   tmpfs   defaults        0       0
    sysfs     /sys    sysfs   defaults        0       0
    tmpfs    /dev    tmpfs   defaults        0       0
9.	添加/etc/profile文件,文件内容如下。
    #!/bin/sh                                                                   
    export HOSTNAME=farsight
    export USER=root
    export HOME=root
    export PS1="[$USER@$HOSTNAME\W]\#"
    PATH=/bin:/sbin:/usr/bin:/usr/sbin
    LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
    export PATH LD_LIBRARY_PATH
10.	cd  /source
    sudo  mkdir   rootfs
    cp   busybox-1.22.1/_install/*    rootfs  -rf

六、ramdisk 

1.
    $ cd ~
    制作一个大小为8M的镜像文件
    $ dd if=/dev/zero of=ramdisk bs=1k count=8192   (ramdisk为8M)
    格式化这个镜像文件为ext2
    $ mkfs.ext2 -F ramdisk
    $ sudo mount -t ext2 ramdisk /mnt
    $ sudo cp -a rootfs/* /mnt/
    $ sudo umount /mnt
    $ gzip --best -c ramdisk > ramdisk.gz
    $ mkimage -n "ramdisk" -A arm -O linux -T ramdisk -C gzip -d ramdisk.gz                         ramdisk.img
2.	拷贝制作好的镜像文件到Fastboot目录准备进行烧写。
3.	接下来,重新配置内核,选择ramdisk的支持并指定大小。
    File systems  --->
		<*> Second extended fs support
    Device Drivers
		SCSI device support  --->
			<*> SCSI disk support
		Block devices  --->
			<*>RAM  block  device  support   
			(16)Default number of RAM disks  
			(8192) Default RAM disk size (kbytes)
    General setup  --->
		[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
   
 上面的配置项多数都已配置,主要是修改了ramdisk的大小为8192,这个值必须要和ramdisk镜像文件的        大小保持一致。保存配置后,重新编译内核,再将uImage文件拷贝到Fastboot目录下进行烧写。
        
 4.修改启动参数,选择从EMMC中读取文件系统镜像ramdisk
setenv bootcmd mmc read 0x48000000 0x800 0x3000\;mmc read 0x49000000 0x20800 0x20800\;bootm 0x48000000 0x49000000
setenv bootargs root=/dev/ram rw initrd=0x49000040,0x1000000 rootfstype=ext2 init=/linuxrc console=ttySAC2,115200

 

六、tftp搭建 进行linu内核 设备树的下载 还可以进行让ramdisk下载

1.检查是否安装tftp server
    sudo   dpkg   -s   tftpd-hpa

    sudo mkdir /tftpboot
    sudo chmod 777 /tftpboot
2、如果未安装,安装 tftp-server 
    sudo  apt-get  install  tftpd-hpa  tftp-hpa 

3、修改文件vim /etc/default/tftpd-hpa,开启tftp服务
    sudo  vi  /etc/default/tftpd-hpa

    TFTP_USERNAME="tftp"
    TFTP_DIRECTORY="/tftpboot"
    TFTP_ADDRESS="0.0.0.0:69"
    TFTP_OPTIONS="-c  -s  -l"

启动tftp服务器server端:
    sudo  service  tftpd-hpa  restart

把内核 设备树 拷贝 

七、NFS搭建根文件系统

在etc/apt   的sources.list 添加镜像源   
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

然后 sudo apt-get update  接着安装就可以了
sysv-rc-conf


1.安装配置环境
    查看存不存在
    sudo apkg -s nfs-kernel-server
    不存在就安装
    sudo apt install nfs-kernel-server
2. 文件夹创建
    sudo   mkdir  /source
    sudo   chmod  777  /source 

    把rootfs拷贝到/source目录下

3.nfs服务器server端的环境搭建   
    sudo vi /etc/exports

    要在这个里面添加一行 
	 
    /source/rootfs *(rw,sync,no_root_squash,no_subtree_check)

4.创建 lib/moudles/3.14.0 防止底层rmmod错误 根据需求创建

5.启动nfs服务器:
  sudo /etc/init.d/nfs-kernel-server restart

解释:
/source  共享目录(存放文件系统,开发板访问)
       	  
 rootfs   文件系统(名字) Linux内核访问的第一个文件系统
 rw       读写(当用户进入到文件系统之后,对该文件系统拥有可读写的权限)
 sync     文件同步到内存与硬盘
 no_root_squash  如果以root用户的身份进入到文件系统之后,对文件系统进行操作,将不需要权限
 no_subtree_check  如果文件系统中的子目录可以被共享,访问时不会检测父目录的权限
 
 

 

你可能感兴趣的:(linux)