base knowledge

基本知识

宿主机host可以理解为是和虚拟机对应的一个术语;

编译完成后会有个 vmlinux 在当前目录下, 这就是我们要的 arm-linux 内核了;

mount ..........mydisk.iso  /mnt/vcdrom;就可以在vcdrom访问iso的内容

 

dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着!
/dev/zero,是一个输入设备,你可你用它来初始化文件。
/dev/null------它是空设备,也称为位桶(bit bucket)。任何写入它的输出都会被抛弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
/dev/zero------该设备无穷尽地提供0,可以使用任何你需要的数目——设备提供的要多的多。他可以用于向设备或文件写入字符串0。

 创建映像文件并挂到 initrd 目录
  #mkdir initrd
  #dd if=/dev/zero of=initrd.img bs=1k count=4096
  #mke2fs -F -v initrd.img
  #mount -o loop initrd.img initrd

 

往initrd.img加东西:

 #cd initrd
cp... ...

  #创建必要的目录
  #mkdir proc lib etc dev root home var tmp
  #chmod 777 tmp

 

 建立设备文件
  #cd dev
  #mknod -m 644 console c 5 1
  #mknod -m 644 null c 1 3
  #mknod -m 640 ram b 1 1
  #mknod -m 644 mem c 1 1

 

怎样才能在 arm-linux 里运行我们自己的程序呢? 有两种方案,我们不妨讨论一
下,择优而录之:

1.在制作根文件系统 initrd.img 的时候把我们自己的程序加进去,比如放在 /usr/bin 里
  目录下,然后重新生成 initrd.img,并用这个新的根文件系统来运行 arm-linux。其实这
  是我们的产品在 arm-linux 上发布的最终方式,但这有个缺点: 在产品开发/调试阶段这么
  做比较麻烦,每修改一次代码就得 build 一次根文件系统。

 

 

 

vmlinux是内核文件,
zImage是一般情况下默认的压缩内核映像文件,压缩vmlinux,加上一段解压启动代码得到,只能从0X0地址运行。

一个基本的文件系统应该包括: busybox (提供 shell 命令集)、配置文件(用来初始化和布局你的文件系统)、设备文件(如果是用 devfs 的话这个就免了)、必要的库文件系统(如果 busybox 是静态编译的话,那根本不用为 busybox 用到的库文件而烦)。
采用的是busybox-1.1.3生成结束后,执行make install,生成一个_install文件夹,内有一个linuxrc文件和bin、sbin、usr三个文件夹,删除linuxrc,将三个文件夹打包。在此_install目录下创建其它几个需要的目录,mkdir etc dev proc tmp lib var sys;

你可能感兴趣的:(base knowledge)