当前位置:  技术问答>linux和unix

如何构建一个小LINUX并装进U盘启动运行?

    来源: 互联网  发布时间:2015-08-12

    本文导语:  我的意思是把一个小LINUX完全装进U盘,在硬盘上没有安装LINUX的机器上也可以运行。我现在知道要重新编译内核,但是还有其他一些问题不知道该如何做: 1、U盘上根文件系统 2、设备系统 3、其他LINUX运行必备条件 4...

我的意思是把一个小LINUX完全装进U盘,在硬盘上没有安装LINUX的机器上也可以运行。我现在知道要重新编译内核,但是还有其他一些问题不知道该如何做:
1、U盘上根文件系统
2、设备系统
3、其他LINUX运行必备条件
4、U盘引导问题

谢谢懂的人给我指导一下!

我的email: liuag@mail.ihep.ac.cn

|
http://www.chinalinuxpub.com/read.htm?id=1384
U盘上的LINUX

来源:linuxaid

By benny

By Ben netmails@163.com 
  首先让我们先了解一下LINUX下USB设备, Linux USB 驱动程序有三种不同的 USB 主控制器选项,这是因为在主板和 PCI 卡上有三种不同类型的 USB 芯片。"EHCI"驱动程序设计成为实现新的高速 USB 2.0 协议的芯片提供支持。"OHCI"驱动程序用来为非 PC 系统上的(以及带有 SiS 和 ALi 芯片组的 PC 主板上的)USB 芯片提供支持。"UHCI"驱动程序用来为大多数其它 PC 主板(包括 Intel 和 Via)上的 USB 实现提供支持。只需选择与希望启用的 USB 支持的类型对应的"?HCI"驱动程序即可。

  启用了"USB support"和适当的"?HCI"USB 主控制器驱动程序后,使 USB 启动并运行只需再进行几个步骤。应该启用"Preliminary USB device filesystem",SCSI计算机标准接口,因为通常我们的USB存储设备,模拟为SCSI硬盘而进行访问

一、关于内核

  usb-storage模块包括在内核但是由于U盘的初始化过程比执行/sbin/init慢,导致内核已经启动完成了,优盘还没有完成初始化工作,因此根文件系统没有加载,这时执行/sbin/init命令肯定不成功。所以要对系统内核初始化代码作修改如下:


/init/do_mounts.c
……
* Allow the user to distinguish between failed open
* and bad superblock on root device.
*/
- printk ("VFS: Cannot open root device "%s" or %s",
+ printk ("VFS: Cannot open root device "%s" or %s, 
retrying in 1 second.", root_device_name, kdevname (ROOT_DEV));
- printk ("Please append a correct "root=" boot option");
- panic("VFS: Unable to mount root fs on %s",
- kdevname(ROOT_DEV));
+ printk ("You may need to append a correct "root=" boot option");
+ printk ("or wait for the root device to become ready.");
+
+ /* wait 1 second and try again,
+ * allowing time for hubs/devices to become ready */
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(HZ);
+ goto retry;
}
panic("VFS: Unable to mount root fs on %s", kdevname(ROOT_DEV));
out:
……



  按照需要重新编译内核。

  您也可以在启动内核时加载initrd.img文件到内存中,等待3秒使优盘完成初始化工作,再执行/sbin/init指令。

1、建立initrd.img文件


# mkdir -p /mnt/initrd
# cd /tmp
# mkinitrd /tmp/initrd.gz 2.4.20-usb



2、解压initrd.img文件,修改启动脚本linuxrc


# gunzip initrd.gz
# mount -o loop /tmp/initrd /mnt/initrd
# cp /sbin/busybox /mnt/initrd/bin
# cd /mnt/initrd/bin
# ln -s busybox sleep
# vi /mnt/initrd/linuxrc



  加入如下内容:


echo 'wait 3 seconds.....'
/bin/sleep 3

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • docker应用之利用Docker构建自动化运维
  • 项目构建工具 Phing
  • ​Docker 容器数据管理,链接容器,构建私有库
  • 自动构建工具 Anthill
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • 软件构建系统 ooRexx
  • 构建工具 Smooth Build
  • 关于构建器?!
  • 构建用户界面的 JavaScript 库 ReactJS
  • 软件构建系统 BSDBuild
  • 快速构建网站模板 Pondasee
  • 交互式地图构建 Majuro.JS
  • 元构建工具 BuildBoost
  • 如何在JB5下构建一个连接池?
  • PHP表单构建工具 FormBuilder
  • 嵌入式固件构建工具 Build Gear
  • C项目构建管理辅助工具 buildc
  • 项目构建工具 Remake
  • 软件构建和发布管理系统 Parabuild
  • 源码构建工具 TMake
  • Qt构建工具 Qmake


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3