ubuntu system-config-kickstart 怎么编译

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu system-config-kickstart 怎么编译相关的知识,希望对你有一定的参考价值。

linux下编译运行驱动
嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发。
按照如下方法就可以成功编译出hello world模块驱动。
1、首先确定本机linux版本
怎么查看Linux的内核kernel版本?
\'uname\'是Linux/unix系统中用来查看系统信息的命令,适用于所有Linux发行版。配合使用\'uname\'参数可以查看当前服务器内核运行的各个状态。
#uname -a
Linux whh 3.5.0-19-generic #30-Ubuntu SMPTue Nov 13 17:49:53 UTC 2012 i686 i686 i686 GNU/Linux

只打印内核版本,以及主要和次要版本:
#uname -r
3.5.0-19-generic

要打印系统的体系架构类型,即的机器是32位还是64位,使用:
#uname -p
i686

/proc/version 文件也包含系统内核信息:
# cat /proc/version
Linux version 3.5.0-19-generic(buildd@aatxe) (gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) ) #30-UbuntuSMP Tue Nov 13 17:49:53 UTC 2012

发现自己的机器linux版本是:3.5.0-19-generic
2、下载机器内核对应linux源码
到下面网站可以下载各个版本linux源码https://www.kernel.org/
如我的机器3.5.0版本源码下载地址为:https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.5.tar.bz2
下载完后,找一个路径解压,如我解压到/linux-3.5/
然后很重要的一步是:执行命令uname -r,可以看到Ubuntu的版本信息是3.5.0-19-generic
。进入linux源码目录,编辑Makefile,将EXTRAVERSION = 修改为EXTRAVERSION= -19-generic。
这些都是要配置源码的版本号与系统版本号,如果源码版本号和系统版本号不一致,在加载模块的时候会出现如下错误:insmod: error inserting \'hello.ko\': -1 Invalid module format。
原因很明确:编译时用的hello.ko的kenerl 不是我的pc的kenerl版本。

执行命令cp /boot/config-3.5.0-19-generic ./config,覆盖原有配置文件。
进入linux源码目录,执行make menuconfig配置内核,执行make编译内核。

3、写一个最简单的linux驱动代码hello.c

/*======================================================================
Asimple kernel module: "hello world"
======================================================================*/
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("zeroboundaryBSD/GPL");
static int hello_init(void)

printk(KERN_INFO"Hello World enter\\n");
return0;


static void hello_exit(void)

printk(KERN_INFO"Hello World exit\\n ");


module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("zeroboundary");
MODULE_DESCRIPTION("A simple HelloWorld Module");
MODULE_ALIAS("a simplestmodule");

4、写一个Makefile对源码进行编译
KERN_DIR = /linux-3.5
all:
make-C $(KERN_DIR) M=`pwd` modules
clean:
make-C $(KERN_DIR) M=`pwd` clean

obj-m += hello.o

5、模块加载卸载测试
insmod hello.ko
rmmod hello.ko

然后dmesg|tail就可以看见结果了

最后,再次编译驱动程序hello.c得到hello.ko。执行insmod ./hello.ko,即可正确insert模块。

使用insmod hello.ko 将该Module加入内核中。在这里需要注意的是要用 su 命令切换到root用户,否则会显示如下的错误:insmod: error inserting \'hello.ko\': -1 Operation not permitted

内核模块版本信息的命令为modinfo hello.ko
通过lsmod命令可以查看驱动是否成功加载到内核中
通过insmod命令加载刚编译成功的time.ko模块后,似乎系统没有反应,也没看到打印信息。而事实上,内核模块的打印信息一般不会打印在终端上。驱动的打印都在内核日志中,我们可以使用dmesg命令查看内核日志信息。dmesg|tail

可能还会遇到这种问题insmod: error inserting \'hello.ko\': -1 Invalid module format
用dmesg|tail查看内核日志详细错误
disagrees about version of symbolmodule_layout,详细看这里。
http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/index.html
在X86上我的办法是:
make -C/usr/src/linux-headers-3.5.0-19-generic SUBDIRS=$PWD modules
参考技术A linux下编译运行驱动 嵌入式linux下设备驱动的运行和linux x86 pc下运行设备驱动是类似的,由于手头没有嵌入式linux设备,先在vmware上的linux上学习驱动开发。 按照如下方法就可以成功编译出hello world模块驱动。

自动安装系统及网络安装服务

{unit自动安装系统}

[1.kickstart脚本]

kickstart脚本是自动应答系统在安装过程中一切问题的脚本文件

这个文件可以实现系统的自动安装

在系统安装完毕后会在系统的root家目录中生成

anaconda-ks.cfg这个文件就是以此系统为模板生成的kickstart脚本

[2.kickstart脚本的制作]

手动编写kickstart的脚本的难度很大

系统中system-config-kickstart工具可以以图形的方式制作kickstart

           

(以下操作在虚拟机中)

yum install system-config-kickstart -y  **安装图形工具

system-config-kickstart                 **打开图形ks制作工具

ksvalidator ks.cfg                      **检测ks语法

 

[3.kickstart文件共享]

yum install httpd -y

systemctl stop firewalld

systemctl disable firewalld

systemctl start httpd

systemctl enable httpd

cp ks.cfg /var/www/html

 

[4.测试ks文件]

[[email protected] ~]# virt-install \

> --name kstest \

> --ram 800 \

> --file /var/lib/libvirt/images/kstest.qcow2 \

> --location ftp://172.25.254.250/pub/rhel7.2 \

> --extra-args "ks=http://172.25.254.117/ks.cfg" &

 

[附加pxe网络安装服务]

1.相应软件安装

yum install dhcp tftp-server syslinux httpd -y

systemctl stop firewalld

systemctl disable firewalld

vim /etc/xinetd.d/tftp

[ disable = yes ] ====> [ diable = no ]

systemctl restart xinetd

systemctl start httpd

systemctl enable httpd

 

2.必须文件的下载复制

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

把安装镜像中isolinux/* 全部复制到/var/lib/tftpboot/

mkdir /var/lib/tftpboot/pxelinux.cfg/

cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

 

dhcp配置文件

vim /etc/dhcp/dhcpd.conf

subnet 172.25.254.0  netmask 255.255.255.0 {

  range 172.25.254.200 172.25.254.220;

  option routers 172.25.254.254;

  filename "pxelinux.0";

  next-server 172.25.254.13;

}

 

 

 

 

 


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

以上是关于ubuntu system-config-kickstart 怎么编译的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu安装openssh 服务端

ubuntu16升级到18

ubuntu10.10无法更新

ubuntu怎么安装

ubuntu软件和更新哪些要打开

Ubuntu安装教程