8.2.3、编译mini linux网卡驱动模块

对于网卡驱动,我们是通过在内核中设置为模块形式来动态加载,所以需要再次针对单个内核模块进行编译,编译单个内核模块使用如下命令:

# cd /usr/src/linux

# make M=drivers/net/ethernet/intel/e1000/ e1000.ko

具体操作步骤:

[root@bbs ~]# cd /usr/src/linux ;进入linux内核顶层目录

[root@bbs linux]# find . -name e1000 ;查找e1000目录在内核源码哪个目录下

./drivers/net/ethernet/intel/e1000

[root@bbs linux]# make M=drivers/net/ethernet/intel/e1000 e1000.ko ;编译e1000.ko

[root@bbs linux]# cp drivers/net/ethernet/intel/e1000/e1000.ko /mnt/sysroot/lib/modules/3.10.107/kernel/drivers/net/e1000

注意:mini linux中的路径:/lib/modules/3.10.107/kernel/drivers/net/e1000为目录生成脚本根据mini linux的内核版本自动创建的,必须要与内核版本一致。

至此,已经将网卡驱动模块加入到mini linux中了,下一步就是开机进入mini linux系统,执行模块加载命令:modprobe e1000:

/ # ls /lib/modules/$(uname -r);查看模块相依性文件是否存在

kernelmodules.dep modules.dep.bb

/ # depmod -a ;生成模块相依性文件

/ # modprobe e1000 ;加载网卡驱动

/ # lsmod ;查看系统上已加载的所有驱动模块

/ # modinfo e1000 ;查看网卡驱动信息

filename: e1000

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDkzODMyMjU1P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


设置网卡驱动开机自动挂载:

/ # vi /etc/sysconfig/modules/e1000.modules

#!/bin/sh

echo “Loading networkcarddrivers e1000…”

modprobe e1000

/ # chmod +x /etc/sysconfig/modules/e1000.modules

设置mini linux 的网卡IP地址:

/ # ifconfig -a

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDkzOTI1ODYzP3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


/ # ifconfig eth0 192.168.0.119 up

/ # ifconfig lo 127.0.0.1 up

/ #ifconfig

/ #ping -c2 192.168.0.1

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDkzOTU3MTM2P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDk0MDIzMDQ0P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


8.2.4、创建mini linux密码文件和用户登录终端

一些基本概念

控制台:

在Linux系统中,计算机显示器通常被称为控制台(Console)。有一些设备特殊文件与之相关联:tty0、tty1、tty2等。当你在控制台上登录时,使用的是tty1。使用Ctrl+Alt+[F2-F6]组合键时,我们就可以切换到tty2、tty3等上面去。

getty:

busybox为我们提供了getty和login程序,getty用于侦听终端,其调用login程序提示让用户登录,在centos6上的终端登录程序是mingetty和login,centos7上为agetty和login。如下,我们可以在/etc/inittab中写明终端:

::sysinit:/etc/rc.d/rc.sysinit

tty1::respawn:/bin/sh ;虚拟终端,ctrl+alt+F1可打开此终端

tty2::askfirst:/bin/sh ;虚拟终端,ctrl+alt+F2可打开此终端

tty3::respawn:/bin/sh

tty4::respawn:/bin/sh

为了能够登录mini linux系统,我们还需要在mini linux上提供/etc/{passwd,group,shadow}3个文件,login登录程序正是通过查询/etc/passwd文件来确认是否允许登录的。

进入mini linux,创建密码文件:

/ # touch /etc/passwd /etc/group /etc/shadow /etc/issue

/ # chmod 000 /etc/shadow

/ # echo -e -n "Welcome to Mini Linux\nkernel \\\r\n" > /etc/issue

为mini linux创建root组和root用户:

/ # addgroup -g 0 root ;为mini linux创建root组

/ # adduser -h /root -s /bin/bash -u 0 -G root root ;为mini linux 创建root 帐号

注意:这里我们修改root的默认shell为bash,所以需要确保之前有通过bincp脚本拷贝bash到mini linux。

修改mini linux上的/etc/inittab:

::sysinit:/etc/rc.d/rc.sysinit

::respawn:/sbin/getty 38400 tty1 ;虚拟登录终端,ctrl+alt+F1可打开此终端

::respawn:/sbin/getty 38400 tty2 ;虚拟登录终端,ctrl+alt+F2可打开此终端

::respawn:/sbin/getty 38400 tty3

::respawn:/sbin/getty 38400 tty4

ca::ctrlaltdel:/sbin/reboot

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

重启mini linux即可进入登录界面:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDk0MjQ1MjQ2P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


至此,在mini linux控制台就实现了账号登录功能。

8.2.5、下载安装 dropbear

Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台,Dropbear是开源软件。

官网地址:

https://matt.ucc.asn.au/dropbear/dropbear.html

最新版下载地址:

https://matt.ucc.asn.au/dropbear/dropbear-2017.75.tar.bz2

官网下载下来的是源码包,需要编译安装:

打开宿主机centos,并挂载/dev/sdb2至/mnt/sysroot目录:

[root@bbs ~]# tar xf dropbear-2017.75.tar.bz2

[root@bbs ~]# cd dropbear-2017.75

dropbear默认安装在/usr/local目录下,另外需要注意,我们的mini linux系统上并没有安装pam模块,所以在编译dropbear时不要添加--enable-pam选项。

[root@bbs dropbear-2017.75]# ./configure

执行上面步骤后,dropbear在最后有输出提示信息:

configure: Now edit options.h tochoose features.

options里面有对dropbear配置文件的定义:

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMDk0NTAxNjU2P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">

下一步执行make:

[root@bbs dropbear-2017.75]#make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"

最后执行make install,使dropbear安装在宿主机上,以便后面我们通过bincp脚本拷贝需要的程序到mini linux的根文件系统:/mnt/sysroot。

[root@bbs dropbear-2017.75]#make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install

[root@bbs bin]# sh bincp.sh

[root@bbs ~]# sh bincp.sh

Please enter a binary executable program[q for quit]:dropbear

Please enter a binary executable program[q for quit]:dropbearkey

Please enter a binary executable program[q for quit]:dbclient

Please enter a binary executable program[q for quit]:scp

使用bincp脚本将dropbear,dropbearkey,dbclient三个程序拷贝至mini linux根文件系统上。

[root@bbs ~]# tree /mnt/sysroot/usr/local/

/mnt/sysroot/usr/local/

├── bin

│ ├── dbclient

│ └── dropbearkey

└── sbin

└── dropbear

8.2.6、配置 dropbear

[root@bbs ~]# cd /mnt/sysroot/

[root@bbs sysroot]# ls dev/

pts;确保dev目录下已有pts目录

再次编辑mini linux根文件系统上的/etc/fstab文件,添加devpts伪文件系统:

[root@bbs sysroot]# vi etc/fstab

proc /proc proc defaults 0 0

sysfs /sys sysfs defaults 0 0

devpts /dev/pts devpts mode=620 0 0

/dev/sda1 /boot ext4 defaults 00

/dev/sda2 / ext4 defaults 00

创建dropbear目录:

[root@bbs sysroot]# mkdir etc/dropbear

生成dropbear密钥:

[root@bbs sysroot]# cd etc/dropbear

[root@bbs sysroot]# dropbearkey -h ;获取dropbearkey帮助信息

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMTAxMjA5NTYwP3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


[root@bbs dropbear]# dropbearkey -t rsa -s 2048 -f dropbear_rsa_host_key

[root@bbs dropbear]# dropbearkey -t dss -f dropbear_dss_host_key

[root@bbs dropbear]# ls -l

total 8

-rw------- 1 root root 457 Sep 1 11:04 dropbear_dss_host_key

-rw------- 1 root root 805 Sep 1 11:03 dropbear_rsa_host_key

在mini linux系统上创建安全shells:

[root@bbs sysroot]# vi etc/shells

/bin/sh

/bin/ash

/bin/bash

/bin/hush

/sbin/nologin

安装、配置nsswitch.conf配置文件:

[root@bbssysroot]#vi etc/nsswitch.conf

passwd: files

group: files

shadow: files

hosts: files dns

拷贝nsswitch.conf所需的库文件:

[root@bbssysroot]#cp -d /lib64/libnss_files* lib64/

[root@bbssysroot]#cp -d /usr/lib64/libnss3.so usr/lib64

[root@bbssysroot]#cp -d /usr/lib64/libnssutil3.so usr/lib64

[root@bbssysroot]#cp -d /usr/lib64/libnss_files* usr/lib64/

[root@bbssysroot]#cp -d /lib64/libnss_dns* lib64/ ;支持域名解析库

[root@bbssysroot]#cp -d /lib64/libresolv* lib64/ ;支持域名解析库

[root@bbssysroot]#vi etc/profile

[ $UID -eq 0 ] && export PATH=/sbin:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

export PS1="[\u@\h \W]\\\$ "

至此,dropbear相关配置已经完成,下面即可启动mini linux系统了,在mini linux系统上可前台启动dropbear,查看输出的log信息:

[root@mini ~]# dropbear -E -F

更为详细的dropbear用法如下:

[root@mini ~]# dropbear -h

Dropbear server v2017.75https://matt.ucc.asn.au/dropbear/dropbear.html

Usage: dropbear [options]

-b bannerfile Displaythe contents of bannerfile before user login

(default:none)

-r keyfileSpecify hostkeys (repeatable)

defaults:

dss/etc/dropbear/dropbear_dss_host_key

rsa/etc/dropbear/dropbear_rsa_host_key

ecdsa/etc/dropbear/dropbear_ecdsa_host_key

-R Createhostkeys as required

-F Don'tfork into background

-E Logto stderr rather than syslog

-m Don'tdisplay the motd on login

-w Disallowroot logins

-s Disablepassword logins

-g Disablepassword logins for root

-B Allowblank password logins

-j Disablelocal port forwarding

-k Disableremote port forwarding

-a Allowconnections to forwarded ports from any host

-p [address:]port

Listenon specified tcp port (and optionally address),

upto 10 can be specified

(defaultport is 22 if none specified)

-P PidFile Createpid file PidFile

(default/var/run/dropbear.pid)

-i Startfor inetd

-W <receive_window_buffer> (default 24576,larger may be faster, max 1MB)

-K <keepalive>(0 is never, default 0, in seconds)

-I <idle_timeout> (0 is never, default 0, in seconds)

-V Version

要想让mini linux开机启动dropbear,可以加入/etc/rc.d/rc.sysinit

if /usr/local/sbin/dropbear ; then

echo -e "Dropbearstarted \033[32m[ OK ]\033[0m"

else

echo -e "Dropbearstarted \[033[31m[ failed ]\033[0m"

fi

8.2.7、为mini linux提供域名解析支持

最后,为了将mini linux支持域名解析,我们需要继续在mini linux系统上做如下工作:

1、创建/etc/resolv.conf

该文件是DNS域名解析的配置文件,它的配置很简单,每行以一个关键字开头,后接配置参数。resolv.conf的关键字主要有四个:

nameserver#定义DNS服务器的IP地址
domain#定义本地域名
search#定义域名的搜索列表
sortlist#对返回的域名进行排序

resolv.conf文件中,nameserver关键字必须存在,它用于指定DNS服务器,其它关键字可选。

2、创建/etc/hosts

hosts是一个没有扩展名的系统文件,其作用就是将主机名映射到对应的ip地址。当用户执行一条ping命令时(如pingwww.baidu.com),系统会首先自动从hosts文件中寻找www.baidu.com对应的ip地址,一旦找到,系统会立即对相应的ip执行ping命令,否则系统将域名提交DNS域名解析服务器进行ip地址的解析。

#cat/etc/hosts
127.0.0.1localhost:localdomainlocalhost

192.168.0.119 your.host.name

3、创建/etc/host.conf

当系统中同时存在DNS域名解析与/etc/hosts主机表时,host.conf用于确定主机名解析顺序。它每行含一个配置关键字,其后跟着合适的配置信息。系统识别的关键字有:order、trim、multi、nospoof和reorder。

#cat/etc/host.conf
orderhosts,bind#名称解析顺序
multion#允许主机拥有多个IP地址
nospoofon#禁止IP地址欺骗

4、拷贝必要的库文件并设置默认路由

[root@bbssysroot]#cp -d /lib64/libnss_dns* lib64/ ;支持域名解析库

[root@bbssysroot]#cp -d /lib64/libresolv* lib64/ ;支持域名解析库

[root@bbssysroot]#routeadd default gw 192.168.0.1 ;添加默认路由

[root@mini~]#ping-c2 www.baidu.com

PING www.baidu.com (183.232.231.172): 56 data bytes

64 bytes from 183.232.231.172: seq=0 ttl=53time=26.925 ms

64 bytes from 183.232.231.172: seq=1 ttl=53time=19.069 ms

8.2.8、配置udhcpc以自动获取ip

busybox是支持客户端和服务器端dhcp的,程序分别为udhcpc和udhcpd,需要在编译时选定相关模块,另外在编译内核时需选定对DHCP的支持:

编译内核时,添加Linux内核对DHCP的支持:

[*] Networking support--->;网络支持

Networking options --->

<*> Packet socket

[*] IP:DHCP support ;添加对dhcp的支持

[*] IP: BOOTP support

[*] Network packet filtering framework(Netfilter) --->

编译busybox时添加busybox对udhcpc支持

NetworkingUtilities --->

[*]udhcp client (udhcpc)

[*]udhcp server (udhcpd)

进入busybox源码顶层目录,将examples/udhcp下的simple.script文件拷贝至mini linux系统的/usr/share/udhcpc下,并重命名为default.script,注意要有可执行权限:chmod +x usr/share/udhcpc/default.script,关于这点可通过udhcpc -h获取帮助信息。

650) this.width=650;" src="https://www.itdaan.com/go/aHR0cDovL2ltZy5ibG9nLmNzZG4ubmV0LzIwMTcwOTAzMTAxNTUyMDQ2P3dhdGVybWFyay8yL3RleHQvYUhSMGNEb3ZMMkpzYjJjdVkzTmtiaTV1WlhRdmVucHFhWGRoYm1jPS9mb250LzVhNkw1TDJUL2ZvbnRzaXplLzQwMC9maWxsL0kwSkJRa0ZDTUE9PS9kaXNzb2x2ZS83MC9ncmF2aXR5L0NlbnRlcg==" alt="" style="border:0px;vertical-align:middle;" referrerpolicy="no-referrer">


最后在mini linux系统上执行如下命令:

[root@mini ~]# udhcpc -t 5 -n -i eth0

注:-t选项指明udhcpc的send discover最大发送次数,-n选项表示达到最大send discover次数仍未获得租约则立即退出。

至此一个较为完善的mini linux系统已经成功制作完毕!



本文出自 “11819889” 博客,请务必保留此出处http://11829889.blog.51cto.com/11819889/1966235

更多相关文章

  1. fedora(linux)创建系统服务 程序开机自启 后台运行
  2. Linux系统下Tar文件安装方法
  3. Linux系统的运行级的概念
  4. 移动硬盘安装Ubuntu系统(UEFI引导)的一些记录
  5. 假如你不小心干掉了系统,你该怎么办?(一次手贱的记录 ~ Ubuntu and
  6. linux系统编程之进程(八):守护进程详解及创建,daemon()使用
  7. arm-linux系统下加入glog日志
  8. Ubuntu系统环境变量详解
  9. linux 的终端字体色和背景色的修改方法(三)

随机推荐

  1. android layout物业介绍
  2. Android数据加密之Aes加密
  3. [置顶] 我的Android进阶之旅------>Andro
  4. 【Android(安卓)界面效果9】9patch图片
  5. Android单元测试初探Instrumentation
  6. EditText的常用属性和实例
  7. Android(安卓)UI开发第二十五篇――分享
  8. TextView常用属性
  9. 《Android攻防实战》读书笔记——Android
  10. Android(安卓)Toast使用简介