<前言>

繼 x86 之後 想說又來研究一下 zImage 含了什麼鬼東西 所以 在此做了一些紀綠.

<Trace>

下面這個是彷照 x86 的方式 把它 log 下來的message ...

在當設定完 ARCH=arm CROSS_COMPILE=path/to/your/toolchain 時 並 make 會在 kernel source tree 最上層目錄產出一個 vmlinux 這個檔案非常的大 因為它是一個沒有壓縮過的核心 

make -f scripts/Makefile.build obj=arch/arm/boot MACHINE=arch/arm/mach-dove/ arch/arm/boot/uImage

sakbk 發表在 痞客邦 留言(4) 人氣()

<前言>

在 u-boot shell 中 可以吃的 kernel image 是 uImage, 剛好綱哥他們那一個平台的 可以吃 zImage 因為好奇 所以稍微 trace 一下.


<Trace>

首先我們來來看一下 u-boot header 那 64 bytes 有啥東西...

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

<前言>

其實這個問題困擾我很久 在 grub 裡會我們會填一個 initrd 的東西, 這個東西就是在 /boot 下面的 initrd.img* 這個檔案 是 ramdisk 但是問題來了 grub 到底是如何跟 kernel 互動的呢?
kernel 怎麼去知道這個 initrd 在什麼地方呢?
所以稍微追了一下 所以在此紀錄一下

P.S : 我這邊所說的 initrd 是包含 initramfs (cpio-gzip format), 和 initrd (filesystem based loop device). 都是經由 bootloader (GRUB/GRUB2) 所 指定的.

sakbk 發表在 痞客邦 留言(3) 人氣()

<前言>

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

以下所示範是在 ubuntu based 的 distribution.

<實作>

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

用 dd 命令來分割一個 檔案然後再組回來 範例程式如下...

這個程式的使用方式就是  


    ./split 原始檔案名稱 分割大小

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


原本對這個東西只知道是一個虛擬機器 可以安裝很多個 OS 但沒有去想過 要怎麼做出這樣的檔案呢? 就因為這樣所以把自己所做的東西研究了一下 做一下紀錄.  ( 我是 based on EeePC 1.7 的 build 做測試的 ).


- PART 1 -

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

 

如果有時想要研究一下整個系統的 flow 是怎麼跑的...比如說在測試 kernel 的某個 system call 是怎麼跑的, 還是系統開機的整個 flow 或是 grub2 是怎麼運作的..這時如果是在自己的機器上測試 就要不斷的compiler,reboot, compiler,reboot 慘一點的還會掛掉 導致自己的系統當掉 可能不小心改錯了什麼東西之類的等等... 如果你有這樣的需求 我想本篇也是可以讓你參考的一個方法...

在 ubuntu 中有一個 debootstrap 的命令就是能提供我們在現行的機器上去 deploy 一個最陽春的 minimum system.這個系統是不含 X-window 的 base system. 當然如果想要跑 X 那當然就需要把相關的 library 裝進來即可.

現在我們就來裝一個有 lxde 桌面環境的 base system 吧!

首先,先在你的機器上建一個directory, 假設是 ubunbu-scratch

mkdir ubunbu-scratch

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

 

前一篇的 Dual OS, 是利用  ntldr 去 load grldr

      C:\grldr="The Name You Want To See"

所以會造成我們只有醜醜的畫面(黑白). 因此就做了一個實驗 想不到竟然成功了...

將原本在 C 槽 ntldr rename 成 ntldr.real

然後再將 原本的 grldr rename 成 ntldr

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

 

在 Linux 有 dynamic library 這個東西,這個東西的好處就是可以把常用的功能獨立出來,可以減少 code size,那它究竟是怎麼做的呢?研究了一下 所以寫了一段 sample.

下面這一個是一個簡單的BMI (Body Mass index), 公式是體重除以身高(公尺)的平方.

// func.h

typedef void  (*METHOD_DESC)();
typedef float (*BMI)(float, float);

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

 

什麼是 ELF ( Executable and Linking ) Format 呢?jollen寫的相當清楚只是在看時發現他原本的 sample code 好像已經抓不下來了, 一方面也是自己很久沒有寫 code了, 所以照他的範例自己實作了一些東西,不過大體上是相同的.

/*
 * Copyright (C) 2009 http://sakbk.pixnet.net/blog
 *
 * ELF Sample code.

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

«12 3