PIXNET Logo登入

sakbk

跳到主文

I would ... if I could ...

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 4月 12 週一 201021:08
  • zImage component

<前言>
繼 x86 之後 想說又來研究一下 zImage 含了什麼鬼東西 所以 在此做了一些紀綠.
<Trace>
下面這個是彷照 x86 的方式 把它 log 下來的message ...
(繼續閱讀...)
文章標籤

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

  • 個人分類:kernel
▲top
  • 4月 08 週四 201009:26
  • u-boot uImage 初探

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

<Trace>
(繼續閱讀...)
文章標籤

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

  • 個人分類:bootloader
▲top
  • 2月 10 週三 201008:54
  • initrd and initramfs

<前言>

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

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

  • 個人分類:kernel
▲top
  • 1月 28 週四 201022:49
  • busybox初探

busybox-shell.jpeg
<前言>
有時呢 系統掛了 要使用 live-cd 又會覺的要開很久 可是有時僅僅只是希望做一些簡單的事 這時我們就可以使用 busybox 來幫我們做一些簡單的事情.
以下所示範是在 ubuntu based 的 distribution.
(繼續閱讀...)
文章標籤

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

  • 個人分類:system
▲top
  • 11月 05 週四 200911:41
  • dd command

用 dd 命令來分割一個 檔案然後再組回來 範例程式如下...
這個程式的使用方式就是  


(繼續閱讀...)
文章標籤

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

  • 個人分類:shell
▲top
  • 10月 29 週四 200914:28
  • Vmware Tutorial

vmware-1.jpeg

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

- PART 1 -
(繼續閱讀...)
文章標籤

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

  • 個人分類:system
▲top
  • 10月 20 週二 200909:37
  • Qemu with debootstrap

xeyes.jpeg
 
如果有時想要研究一下整個系統的 flow 是怎麼跑的...比如說在測試 kernel 的某個 system call 是怎麼跑的, 還是系統開機的整個 flow 或是 grub2 是怎麼運作的..這時如果是在自己的機器上測試 就要不斷的compiler,reboot, compiler,reboot 慘一點的還會掛掉 導致自己的系統當掉 可能不小心改錯了什麼東西之類的等等... 如果你有這樣的需求 我想本篇也是可以讓你參考的一個方法...
在 ubuntu 中有一個 debootstrap 的命令就是能提供我們在現行的機器上去 deploy 一個最陽春的 minimum system.這個系統是不含 X-window 的 base system. 當然如果想要跑 X 那當然就需要把相關的 library 裝進來即可.
現在我們就來裝一個有 lxde 桌面環境的 base system 吧!
(繼續閱讀...)
文章標籤

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

  • 個人分類:system
▲top
  • 9月 07 週一 200913:54
  • Dual OS in EeePC (續)

snapshot-screen.jpg
 
前一篇的 Dual OS, 是利用  ntldr 去 load grldr
      C:\grldr="The Name You Want To See"
所以會造成我們只有醜醜的畫面(黑白). 因此就做了一個實驗 想不到竟然成功了...
(繼續閱讀...)
文章標籤

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

  • 個人分類:misc
▲top
  • 8月 02 週日 200908:43
  • Dynamic Library implement

 
在 Linux 有 dynamic library 這個東西,這個東西的好處就是可以把常用的功能獨立出來,可以減少 code size,那它究竟是怎麼做的呢?研究了一下 所以寫了一段 sample.
下面這一個是一個簡單的BMI (Body Mass index), 公式是體重除以身高(公尺)的平方.
// func.h
(繼續閱讀...)
文章標籤

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

  • 個人分類:misc
▲top
  • 7月 29 週三 200916:14
  • ELF File Format

 
什麼是 ELF ( Executable and Linking ) Format 呢?jollen寫的相當清楚只是在看時發現他原本的 sample code 好像已經抓不下來了, 一方面也是自己很久沒有寫 code了, 所以照他的範例自己實作了一些東西,不過大體上是相同的.
/*
 * Copyright (C) 2009 http://sakbk.pixnet.net/blog
 *
 * ELF Sample code.
 *
 */
#include <stdio.h>
#include <unistd.h>
#include <elf.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <malloc.h>
void READ_SECTION(Elf32_Ehdr *pEhdr, int fd) {
    Elf32_Shdr header[pEhdr->e_shnum];
    unsigned char *p_Shdr;
    int i, stroff, idx;
    printf("<Section Header>\n");
    //move to section header entry point offset
    lseek(fd, pEhdr->e_shoff, SEEK_SET);
    for (i = 0; i < pEhdr->e_shnum; i++) {
         read(fd, &header[i], sizeof(Elf32_Shdr));
         if (i == pEhdr->e_shstrndx ) {
             stroff = header[i].sh_offset;
             idx = i;
         }
    } 
   
    lseek(fd, stroff, SEEK_SET);
    p_Shdr=(unsigned char *)malloc(header[idx].sh_size);
    read(fd, p_Shdr, header[idx].sh_size);
    for (i = 1; i < pEhdr->e_shnum; i++)
         printf("\t[%.2d] - %-15.30s \t%.8x\n", i, &p_Shdr[header[i].sh_name], header[i].sh_offset);
}
void ELF_ARCH(Elf64_Half machine) {
  switch (machine) {
     case EM_M32:
          printf("\tARCH:\tAT&T WE 32100\n");
          break;
     case EM_SPARC:
          printf("\tARCH:\tSUN SPARCn");
          break;
     case EM_386:
          printf("\tARCH:\tIntel 80386\n");
          break;
     case EM_68K:
          printf("\tARCH:\tMotorola m68k family\n");
          break;
     case EM_88K:
          printf("\tARCH:\tMotorola m88k family\n");
          break;
     case EM_860:
          printf("\tARCH:\tIntel 80860 \n");
          break;
     default:
          printf("\tARCH:\tUnkown\n");
  } 
}
void ELF_TYPE(Elf32_Half type) {
  switch (type) {
     case ET_NONE:
          printf("\tTYPE:\tET_NONE\n");
          break;
     case ET_REL:
          printf("\tTYPE:\tET_REL\n");
          break;
     case ET_EXEC:
          printf("\tTYPE:\tET_EXEC\n");
          break;
     case ET_DYN:
          printf("\tTYPE:\tET_DYN\n");
          break;
  }
}
int ELF_CLASS(unsigned char *idx) {
   switch ( *( idx + EI_CLASS ) ) {
      case ELFCLASSNONE:
           printf("\tCLASS:\tNONE\n");
           break;
      case ELFCLASS32:
           printf("\tCLASS:\tELF32\n");
           break;
      case ELFCLASS64:
           printf("\tCLASS:\tELF64\n");
           break;
   } 
}
int IS_ELF(unsigned char *idx) {
   if( *( idx + EI_MAG0 ) !=  ELFMAG0 || \
       *( idx + EI_MAG1 ) !=  ELFMAG1 || \
       *( idx + EI_MAG2 ) !=  ELFMAG2 || \
       *( idx + EI_MAG3 ) !=  ELFMAG3
     ) {
        return 0;
   }
        return 1;
}
int usage(char *argv) {
   printf("Usage: %s filename\n", argv);
}
int main(int argc, char *argv[]) {
   int fd;
   Elf32_Ehdr e_hdr;
   if(argc < 2) {
      usage(*argv);
      return -1;
   }
   fd = open(argv[1], S_IRUSR);
   if(fd < 0) {
      printf("file open error\n");
      return -1;
   }
   read(fd, &e_hdr, sizeof(Elf32_Ehdr));
 
   if(IS_ELF(e_hdr.e_ident)) {
     printf("<ELF headers>\n");
     ELF_CLASS(e_hdr.e_ident);
     ELF_TYPE(e_hdr.e_type);
     ELF_ARCH(e_hdr.e_machine);
     READ_SECTION(&e_hdr, fd);
   }
   else {
     printf("Invalid ELF file\n");
   }
}
(繼續閱讀...)
文章標籤

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

  • 個人分類:misc
▲top
«123»

最新文章

  • 一個多月..
  • New Life
  • ending
  • 胡言亂語
  • 學習
  • 心情
  • 上班趣事
  • 洗腦
  • 喜歡
  • leader?

最新留言

  • [13/12/16] Armadillo0304 於文章「initrd and initramfs...」發表了一則私密留言
  • [13/12/16] Armadillo0304 於文章「initrd and initramfs...」發表了一則私密留言
  • [13/12/16] Armadillo0304 於文章「initrd and initramfs...」發表了一則私密留言
  • [11/03/10] pi 於文章「ending...」留言:
    緣滅而後緣起~ 新的人生迎接著~ ...
  • [10/08/23] sakbk 於文章「一個多月.....」留言:
    你的眼睛有問題喔...
  • [10/08/20] kezeodsnx 於文章「一個多月.....」留言:
    你的照片好帥...
  • [10/08/12] sakbk 於文章「一個多月.....」留言:
    綱哥說的很有道理...
  • [10/08/11] kezeodsnx 於文章「一個多月.....」留言:
    這次工作的轉換,對我們都有一定程度的衝擊。換個角度想,我們都...
  • [10/08/02] sakbk 於文章「New Life...」留言:
    哈哈 謝謝馬尼拉 太久沒上來更新了 整個網站廢掉了 哈 ...
  • [10/08/01] 馬尼拉 於文章「New Life...」留言:
    不要忘了, 你也是很優秀的!! 不用擔心, 你一定可以勝任的...

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

熱門文章

  • (1,201)busybox初探

文章分類

toggle 心情 (2)
  • 心情快寫 (9)
  • 上班趣事 (1)
toggle linux 分享 (5)
  • bootloader (1)
  • misc (4)
  • kernel (3)
  • shell (1)
  • system (3)
  • 未分類文章 (1)