目前分類:System (45)

瀏覽方式: 標題列表 簡短摘要

variable和function是Makefile在被讀取時即展開。

wildcard可用來檢測檔案是否存在,但如果沒注意到變數展開的時間,就會出現結果與預期不符的情況。

 

現有Makefile如下

FILE=/path/to/some/file

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

syslog server 可提供外部的client將其syslog傳送至server

步驟沒幾個:

1. 安裝syslogd:

    apt-get install syslogd

2. 改變syslogd啟動的參數:

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

build-in module 的init function會加上__init這個字樣,這是指當kernel做完這個module_init function後,即可釋放其resource,因為到下一次開機之前都不會再執行到了。其定義在include/linux/init.h:

#define __init        __section(.init.text) __cold notrace

這是讓gcc知道當compile時,把這個fucntion放到text section。當initialize完成後即可釋放memory。開機完成後,看到的Freeing unused kernel memory: xxx k就是釋放的結果。

同樣的,在module_exit的前面也要加上__exit。

__init和__exit對loadable的module就沒有意義了。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

系統整合時,常常會跟driver有關,不管是port driver還是拿廠商build好的driver。開發環境不同時,很可能會有driver跟 kernel版號不同的情況,而產生類似"-1 Invalid module format" 這樣的錯誤訊息。如果kernel 版本差別不大,是有機會可以modprobe成功,看看結果如何。而不用卡在版號不同,插不進去的loop裡。

在kernel裡,先disable modules version:

modversion

 

接下來修改include/linux/vermagic.h

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

1. xorg7.4 拿掉DRI2:

==>因為要讓GEM (intel出,在2.6.26導入)取代TTM,而DRI2依賴TTM

2. 2D/3D需要好的memory management

3. KMS: 在booting時kernel做一部分modesetting,如顯示kernel message。在進入X時,xorg的driver再做一次,因此會有閃爍。KMS就是讓kernel做所有modesetting,X就不需再做,因此不會有閃爍,在切換X/virtual console (釋放大卡的resource,包括GPU給kernel。回到xserver,硬體要再被initialize一次,然後再lock)之間也很平滑。

==>a. 某些顯卡(的GPU)已有kernel module支援(在kernel對 gpu做modesetting),並陸續增加中。kernel可偵測monitor,且console可跑在native resolution。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

動機

之前debug有JTAG,沒有需要remote debug,一樣可以做iteration。今天有人提了一下,就來試一下這種scenario。

 

顴念

觀念是這樣,可以跑gdbserver的環境,應該也可以直接跑gdb。那為什麼要用remote debug?

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

廢言

用dd,總是覺得毛毛的,總有d完重開就會死掉的感覺,總讓我再次想起我的eeemedia usb。

開始

一個完整可開機的image,想要對其做更改,但又不想裝進storage(因為裝完再dd出來size會變大),有方法如下:

在partition之前會有一部分的地方做data的allocation。比如一開始會包含MBR,然後可能是自定的data,甚至是一個小型的rtos,引導之後的kernel。接下來才是partition的開始。這樣的image是無法直接掛載的,必需找partition開始的地方。當然fdisk的information可以用來算這個offset是多少,既然可以算,就會有tool,這個tool 就叫kpartx。用法很簡單:

kezeodsnx 發表在 痞客邦 PIXNET 留言(2) 人氣()

灌好archlinux後,只有螢幕的明暗會動,其他像Touchpad,audio control都是沒反應的,可以做一些customise

以audio為例,X可接受的keycode如下:

xf86audio

而linux下可用amixer控制sound card。兩者結合一下,就能客製化function key。

Mute

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

keyboard mapping在定義上分成三個層次

1. physycal: 指的是鍵盤本身的定義,會帶一組keycode,如a是38,b是56 (可用xev查詢)。

keycode-a

2. os level: 指的是在os層的對應碼,如a是0x0061, b是0x0062 (可用xmodmap查詢)

xmodmap-pk

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

在ubuntu下,安裝qemu-arm-static後,把/usr/bin/qemu-arm-static 複製到target的/usr/bin/下就,就可以很容易的chroot成功。而在archlinux下無此套件,workaround如下:

1.下載qemu-arm-static的deb套件,解開取得qemu-arm-static的binary,複製到target的/usr/bin

2. 從ubuntu偷/var/lib/binfmts 和/var/cache/binfmts,丟到一樣的位置

3.下載binfmt-support的tarball,執行其中update-binfmts.pl --enable

4. 製作arm rootfs: sudo debootstrap --foreign --arch armel lucid /home/lucid

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

下載完後,直接拿來開機,介面跟古早的linux安裝很像,就是dialog,把它當windows一步一步裝,有點sense的話,還蠻直覺的。裝完之後就是一個console,再來就是把應用程式裝上去:

1. 編輯 /etc/pacman.d/mirrorlist: 打開一些mirror site,台灣可新增如下

#Taiwan
Server=ftp://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686
Server=http://ftp.mirror.tw/pub/ArchLinux/$repo/os/i686

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

請見楊小斯作品集之initrd與initramfs


kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

Documentation

先從documentation消化一點介紹: A "General Purpose Input/Output" (GPIO) is a flexible software-controlled digital signal。 既然是數位訊號數位訊號在computer science,那就是只有0(low)/1(high),在embedded 平台上是常用且好用的東西。SoC上會有一堆GPIO,多達一百多根,沒有被設為alternative function (註1)的都可以拿來GPIO。從schematics上看就是一個點,從CPU拉出來,可能拉到power button設為XEINT當wakeup event,或是拉到analog codec設gpi當jack detect,或是設成gpo用來表示目前系統狀態 (1: normal; 0 suspend)。

GPIO的用途大概有以下幾種:

1. alternative function: 這是特定的function,如camera,hdmi,keypad。以hdmi為例,可以接到hdmi的hpd當hot plug detect,或是cec做進階控制,不過這些gpio都會有另外的driver來控制。以keypad為例,就可以藉由gpio的high/low來mapping按了哪個key。

2. GPI: input/output的方向是對CPU而言,因此GPI就是從外部給CPU signal,比如說EC。舉個例好了,EC控制power button,按下後,EC就將某個GPI拉high,此時CPU收到high後,trigger wakeup source,系統就resume。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

Linux軟砲楊小斯再度發表新作,整篇拿起來抄,感覺良好。不過連段落title都跟本人的一模一樣,也算是一報還一報。

 

<前言>

有時呢 系統掛了 要使用 live-cd 又會覺的要開很久 可是有時僅僅只是希望做一些簡單的事 這時我們就可以使用 busybox 來幫我們做一些簡單的事情.

kezeodsnx 發表在 痞客邦 PIXNET 留言(2) 人氣()

簡介

KVM (keyboard, video and mouse)就是用來共用鍵盤,vga及滑鼠的裝設備。但其實有software solution,而且是linux/windows通吃。之前都是在windows底下用,裝一裝,一個server一個client就很自然的run起來,現在nb是ubuntu,表示要一些設定,而且不是很直覺,唉,難然linux EPC會倒了,user-friendly的程度落後相當的程度。

 

Linux Server and Windows Client

Linux server: latrell-ubuntu

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

簡介

x86的開機流程為BIOS->POST->MBR->Boot sector->OS,先介紹MBR。MBR是硬碟的第一個sector,每個sctor是512 bytes。這 512 bytes由3個部分組成:

1. Boot Partition Loader (Pre-loader or Pre-boot): 共446 bytes,其功能就是將可啟動的作業系統分割區 (boot sector)載入,並將控制權交給其boot sector,多重開機選單就是在這邊做的。

2. partition table: 共64 bytes,4個partition,每個16 bytes,這也限制了一顆硬碟只能有4個partition。每個byte代表的意義見最註1。

3. 結束符號: 共2 bytes,其值為55AA,用來讓BPL驗證是否為MBR。

kezeodsnx 發表在 痞客邦 PIXNET 留言(1) 人氣()

我的兄弟部落格經過一翻幹譙之後,總算有點東西產出了,follow ramdisk大師/eee share 達人/parent control始祖的腳步後,留下一點足跡。

 

問題是這樣,有了base system之後,是可以chroot進去,但要執行ap時(例如xeyes),就會得到這樣的錯誤訊息:

root@latrell-ubuntu:/# xeyes
No protocol specified

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

Wiki上的解說,bios的功能是提供一些function,讓軟體來控制硬體。而video bios (vbios)也是一樣,提供一些控制顯示卡的function。然而,存取bios是很慢的,相對於ram/cache,所以才有所謂的bios shadow/cacheable,來將bios load到memory或是cache,以提升存取的速度。系統bios較少存取,而vbios較常存取,所以將vbios load到cache理論上效能會有一定的提升(bios shadow通常只對老舊的Dos電腦比較有幫助)。

現在的cpu的L2 cache多半蠻大(超過1M),對於只有幾k的vbios不會有問題。


kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

The kernel

kernel就是vmlinuz,就名稱上來說,vm指的是virtual memory,就是有support (DOS不行)。而vmlinuz就是bzImage或是zImage,看其大小。就字面上來說,bzImage是big zImage,也就是如果zImage超過了限制(Bill Gates' 640k),就必須使用bzImage。現在的kernel隨便build一下都會超過,因此都是使用bzImage。make zImage會有如下的錯誤:

Root device is (8, 1)
Setup is 12636 bytes (padded to 12800 bytes).
System is 2173 kB

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

前言

最近有幾個arm的案子,常常被一些arm 579,version通通有的搞的有點亂,因此整理一下arm的架構,至少不會對spec有一大堆疑問。

ARM,Advanced RISC Machines,是一家公司的名字,原本是叫做Acron,後來和蘋果合作了一個重要專案,而另組了一個叫安謀(ARM RISC Machine Ltd.),所以後來大家知道的arm反而不是Acron RISC Machine了。市面上所看到的ARM,有intel,nv,qualcomm,xscale,strongarm等,其實一開始搞不清楚怎麼會有這麼多種,不就是arm 579,愈高愈好,愈多愈快嗎?其實邏輯應該是: ARM這間公司提供所謂的architecture,也就是一些設計上的IP,使得根據其設計版本的演進,提昇效能。然後ARM再把這些設計,授權給其他公司,包括intel,nv,qualcomm,samsung,TI等,各自生產其arm processor。比如說,intel的strongarm,nv的tegra。

architecture version

常用在手機的是xscale和arm926,都是base on ArmV5TE。

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()

1 23