2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3.

Slides:



Advertisements
Similar presentations
Linux 环境及 Shell 程序 操作系统实验 1. 二、 Shell 编程与进程通信 常用 shell 命令 文件及文件属性操作 ls 、 cp 、 mv 、 rm ln 、 ln –s 、 chmod 、 groupadd 、 useradd 输入输出操作 echo 、 cat >> 、
Advertisements

Wireshark 03/03/2017.
中国历史 七年级下册.
命令行操作 shell介绍 常见三种Shell ---Bourne shell(sh) ---C shell(csh)
纳税人学堂课件天地第201509期 高新技术产业税收优惠政策培训 授课老师:周晶 上海市嘉定区国家税务局
仰望星空与脚踏实地 深一模反思 龙城高级中学 高三年级 政治科组 邢晨钟.
技术支持部 张新凤( ) 并行机群系统安装、使用和管理 技术支持部 张新凤( )
主讲:邓 志 龙 Linux 网络技术 主讲:邓 志 龙
香港普通話研習社科技創意小學 周順強老師.
第九章日治時期的台灣(下).
小学六年级《品德与社会》 不同肤色的人种 授课教师:梅花镇朱家庄小学 孙新霞.
導 覽 解 說 技 巧 海生館-展示組 解說志工 曾 運 明.
第1讲 实验环境.
香港明愛 綜合家居照顧服務 PWD個案分享.
LINUX 环境下程序开发基础 曙光用户培训课程系列 课程时间:1.5小时 更新日期:2008年3月.
2010年,全世界约有盲人4000万到4500万,低视力者是盲人的3倍,约1.4亿人
資訊安全與系統管理 2013/3/13 Chien wei lin.
中交天津航道局有限公司 党委工作部 陈晓敏 2012年11月5日
权力的行使:需要监督 北京市京源学校 冯 悦.
第16章 編譯與升級Kernel系統核心 課前指引
Linux Further.
Ubuntu 驱动安装准备 1. 确认ubuntu操作系统版本 2. 运行安装脚本 3.驱动Controller.
Confidential Property
嵌入式Linux开发快速入门 迟思堂工作室 李迟
第7章:文件共享与远程控制 第6章:vi/vim——回顾 本章教学目标: vi/vim的三种工作模式 vi/vim的基本用法
VM架設及LAMP基本設定 陳柏盛.
Linux的認識與使用 2013/01/05.
嵌入式操作系统 陈香兰 Fall 2009.
喪禮組多媒體PPT 前言 喜怒哀樂,而人們最怕的事情,就是面對 死亡。而喪禮,這個承接在死亡背後的儀 式,總是給人灌上了神祕的面紗,其實它
网络仿真工具介绍
Computer Network Lab 資碩一 黃麒瑋
Linux环境下程序编译 曙光信息产业(北京)有限公司.
配置编译内核.
Small Cell創新應用與服務專題 實驗單元:建立Small Cell執行環境
DM81X 视频采集处理 ——软硬件环境介绍 广州创龙电子科技有限公司
編譯環境介紹.
Linux环境高级编程实验.
编译与多文件.
Introduction to Git Lu Li
本节我们结合AD5724驱动时序给大家介绍一下状态机在实际工程中的使用。
Linux基本操作 程設實習課 ( 2/25 ).
伺服器探索營 Day 1 指導老師: 張啟中 (JohnAxer) 教學助理:
TinyOS开发环境安装 基于Ubuntu14.04.
Linux核心編譯與模組管理 2013/01/19.
雲端計算.
编辑文本文件 软件包管理 Samba 在Linux下使用Windows共享打印机
音乐学科简报 第二期 编辑:范正明 杨芳 安徽省中小学幼儿园教师信息技术应用能力提升培训项目 延时符.
系统管理员培训(I期) 浙江省基层人民法院 -V8版介绍及系统管理培训 二OO八年四月二十三日 法院事业部经理:周春宏
第二章 UNIX系统安装与常用命令.
Confidential Property
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab3.
C语言环境配置.
杨振伟 清华大学 第一讲:Linux环境下编程(1)
实验一:编译运行Linux内核并使用gdb进行调试
教育概論 答題要訣.
Lab01 工作站&Linux操作 日期:2011/03/07.
教育部及其他單位專案計畫經費報支作業.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab7.
教育部及其他單位專案計畫經費報支作業.
2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab4.
请添加标题 请添加作者.
助教:田成锦、汪睿、游翎璟 吴加禹、李佳伟、唐凯成
作業一: 安裝Linux於btrfs上 中正大學 作業系統實驗室 指導教授:羅習五
杨振伟 清华大学 第一讲:Linux环境下编程(1)
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab10 1.
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab11 1.
劉庠宏、林合治編著 國立高雄大學應用數學系 2005年3月1日
每天, 想要「瘦一點」的想法, 在你腦中出現多少次?
2019 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab7.
Presentation transcript:

2017 Operating Systems 作業系統實習 助教:陳主恩、林欣穎 實驗室:720A Lab3

目錄 Contents Kernel module 介紹Beaglebone Kernel module 實作 Beaglebone

Kernel module 介紹 01 Kernel module 有別於一般在使用者模式下執行的程式 (或稱為 process),也就是會載入到 Linux kernel 之中,在非使用者模式下來執行的程式模組。 02 通常會需要載入 kernel 來執行的程式,大多是驅動程式與硬體相關。 03 目的就是得以減小 Linux kernel,讓 Linux 可以更具有彈性,可以只依據需求載入必要的模組。

00 Kernel module 實作 事前準備 uname -r 更新並下載安裝編譯kernel所需的套件檔案。 sudo apt-get update sudo apt-get install linux-headers-$(uname -r) 網路設定 區網的話不用另外設定,網路線插上去即可使用。 如果需要設定固定ip可以參考以下網址。 sudo nano /etc/network/interfaces sudo /etc/init.d/networking restart sudo reboot https://sites.google.com/site/raspberypishare0918/home/di-yi-ci-qi-dong/1-6-you-xian-huo-wu-xian-dedhcp

00 Kernel module 實作 安裝新kernel 版本 搜尋新kernel版本,並選擇所需的版本進行下載及更新。 sudo apt-get update sudo apt-cache search linux-image | grep <branch> sudo apt-get install linux-image-<specific version> sudo reboot cd /opt/scripts/tools/ git pull sudo ./update_kernel.sh

01 Kernel module 實作 建立 hello.c 建立並進入一個測試目錄 kernel_test,然後開始編輯 hello.c 檔案。 mkdir kernel_test cd kernel_test vim hello.c

02 Kernel module 實作 建立 Makefile 在同測試目錄下建立一個Makefile檔案。 注意: gcc 前面一定要用TAB ,否則 make 會 fail。 vim Makefile

Kernel module 實作 Make 語法簡介 := 語法 指定變數的語法,make 會先把整個檔案展開,找出該變數最後一個被指定的值並且 assign 給他。 Ex. x = foo x := foo y = $(x) y := $(x) x = foobar x := foobar 則第一個y 的結果為 foobar,第二個y的結果為foo。 ?= 語法 指定變數的語法,如果變數已經被指定過,則不會再被指定。

Kernel module 實作 Makefile 的內容 PWD := $(shell pwd):取得目前目錄 KVERSION := $(shell uname -r):取得 kernel 版本號 KERNEL_DIR = /usr/src/linux-headers-$(KVERSION)/:因為編譯 kernel 需要 include kernel 目錄,所以這邊也要定義 obj-m:表示需要編繹成模組的目標檔案名集合,編譯的方式為編譯成區塊,這裡要注意的是,他同時也是代表被編譯的檔案名稱, 如果要被編譯的是 Hello.c,那這邊就要填 obj-m := hello.o,此外還有 obj-y,代表編譯進去內核。 編譯指令 make -C $(KERNEL_DIR) M=$(PWD) modules -C::跟 make 講 這次 kernel module include 的目錄在哪 $(KERNEL_DIR):Makefile 中可以使用變數,一般變數大寫,在引用變數時,採用小括弧擴起變數名前加($)符號來用。 M=$(PWD):描述那個目錄要被編譯 (早期的指令是SUBDIRS),M=$(PWD),這是定義在 kernel 的 make file 中,要詳細內容可以去看 kernel 的 make file。

03 Kernel module 實作 編譯 module 在 kernel_test 目錄下執行 make,看到以下的訊息就算是完成編譯了。 使用ls看編譯好的檔案 make ls

03 Kernel module 實作 載入/移除 module 使用 insmod 指令來載入 hello.ko 接著用 lsmod 指令來確認 module 是否成功載入。 由於系統載入的 module 很多,這邊用 grep 來過濾出我們的 hello module。 最後,把 hello module 移除 使用 rmmod 指令,就可以把 module 移除。 sudo insmod hello.ko sudo lsmod | grep “hello” => hello 16384 0 sudo rmmod hello.ko

04 Kernel module 實作 察看系統日誌 執行完載入與移除的動作,回過頭來看看 hello.c 裡頭的 hello_init 和 hello_exit 這裡各呼叫了 printk 這個 function,因此它會在系統日誌上輸出 KERN_INFO 級別的訊息可以呼叫 dmesg 指令來察看系統日誌。 dmesg ...(略) [11261.743645] Hello world ! [12433.528440] Bye !

Thanks 作業系統實習 Operating Systems