https://www.myziyuan.com/
- 201538
- 其实,是你想的复杂了,在NREO里有提取镜像文件,前提要选择制作引导光盘就行了Linux还没实现空光盘写入,而且空CD/DVD光驱Linux一般也无法加载,所以比较难实现
- 2021-12-29 23:54:13
- dfgj
- U Disk Make Linux启动磁盘摘要本文介绍如何在USB存储设备上建立建立Linux引导系统的过程。让我们首先了解Linux下的USB设备,Linux USB驱动程序有三个不同的USB主控制器选项,因为主板和PCI卡上有三种不同类型的USB芯片。"ehci“驾驶员旨在为新的高速USB 2.0协议提供支持。"OHCI“驱动程序用于支持带有SIS和ALI芯片组的PC主板上的非PC系统(和)USB芯片。"uhci“驱动程序用于支持大多数其他PC主板(包括英特尔和VIA)实现。只需选择“HCI“对应于您要启用的USB支持类型的驱动程序。启用“USB支持“和适当的“HCI“在USB主控制器驱动程序之后,USB STARTS只运行几步。“初步USB设备文件系统“,SCSI计算机标准界面,因为我们的USB存储设备,模拟到SCSI硬盘,内核USB存储模块包括内核,但由于U盘/ Sbin的初始化过程Init速度速度,导致内核完成,USB闪存驱动器尚未完成初始化工作,因此未加载根文件系统,并且执行/ sbin / init命令肯定不成功。因此,您必须修改系统内核初始化代码,如下所示:/init/do_mounts.c ... *允许用户区分根设备上的失败*和坏超级块。* / - 打印(“VFS:无法打开根设备”%S&"%S&&键。。“,root_device_name,kdevname(root_dev)); - printk("请申请d是正确的“根\u003d“启动选项“); - 恐慌(“VFS:无法将根本FS挂载%”, - - kdevname(root_dev));+ printk(&QouTe;您可能需要附加正确的“root \u003d”引导选项“启动选项”。集线器/设备已准备就绪* / + set_current_state(task_interruptible); + schedule_timeout(hz); +转到重试;}恐慌(“VFS:无法在%S&&QUOT上装入根FS;,kdevname(root_dev)); out:......按照需要重新编译内核的需要。您也可以加载initrd.img文件到内存时内存启动,等待3秒钟使USB闪存驱动器完成初始化工作,然后执行/ 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#ltit / init / bin#ln-s busybox睡眠#vi / mnt / initrd / linuxrc添加至:echo wait 3秒..... / bin /睡眠3 3,re - 由于默认的initrd文件(4MB),initrd.img文件相对较大,以便加速USB的启动,因此必须减少。具体操作如下:#mkdir -p / mnt / initrdusb #cd / tmp#dd if \u003d / dev / zer \u003d / tmp / initrdusb bs \u003d 1m count \u003d 1#mke2fs -m 0 initrdusb#mount -o循环/TMP / initrdusb / mnt / initrdusb#cp -a / mnt / initrd / * / mnt / initrdusb #umount / mnt / initrd #umount / mnt / initrdusb #cd / tmp#gzip -9 initrdusb#cp initrdusb.gz / boot /initrd-2.4.20-usb.img第二,USB引导配置目录结构(/ dev,/ proc,/ bin,/ etc,/ user,/ usr,/ var)1,USB留成了两个分区Linux分区大小为大小,完全取决于系统安装和维护工具,以下结果:#FDISK -L / DEV / SDA盘/ DEV / SDA:16头,63个扇区,126个气缸单元\u003d 1008 * 512字节设备启动启动结束块ID系统/ DEV / SDA1 1 102 51376+ 6 FAT16 / DEV/ SDA2 103 126 12096 83 Linux注意:如果需要使用USB引导窗口98,则必须将扇区大小设置为63个扇区,可以命令X-FDISK扩展修改的头部,扇区和圆柱参数。使用相应的U-2建立最佳工具,并生成建立ext2分区#mke2fs -m 0 / dev / sda2#mkdir -p / mnt / sda2#mount / dev / sda2 / mnt / sda2 #cd / mnt / sda2 3,建立引导目录将被编译内核,initrd.img文件被复制到引导目录,编译模块复制lib / modules目录,以及复制/ boot / grub文件到引导目录,编辑引导/ grub / menu .lst文件,as遵循:超时10彩色0x17 0x70默认值0标题Windows 98 rootnoverify(HD0,0)MakeActive Chainloader +1标题GNU / Linux Redhat 8.0(2.4.20-USB)根(HD0,1)内核/ boot / bzimage ro root \u003d / dev / sda2 initrd / boot / initrd.img //如果没有init.img,请勿安装grub,具体操作如下:grub&gt ;;根(HD1,1)GRUB&GT ;;设置(HD1)4,根据自我要求复制系统维护工具,如insmod,fsck和mkdosfs建立bin目录。对于公共工具,建议使用TinyLogin或BusyBox,该箱可用于保存通用空间。此外,如果使用BASH,则必须编辑和切割/ etc / termcap以及如下:/ bin / bash / etc / termcap / usr / share / terminfo / l / linux / usr / share / terminfo / k / klone +ACS / usr / share / terminfo / k / klone + color / usr / share / terminfo / k / klone + sgr 5,已建立的dev proc usr ysbin目录使用cp -a命令复制公共设备文件,包括控制台,TTY1,TTY2,TTY3SDA,SDA1,SDA2,HDA,HDB和HDA1等设备文件。如果您的内核使用devfs,只需创建此目录。创造T.HE PROC USR SBIN目录,可以建立LN -S Bin SBIN的连接。6.建立lib目录必须注意使用ldd命令查看这些共享库文件。需要根据原始路径将这些文件复制到lib目录。通常应该如下:/ lib:-rwxr-xr-x 1根根目录45415 11月15:39 ld-2.0.7.so lrwwxrwx 1根目录11 11月15:39 ld-linux.so.2 - &gt ;;ld-2.0.7.so-rwxr-xr-x-x 1根root 731548 11月15:39 libc-2.0.7.so lrwxrwxrwx 1根根13 11月15:39 libc.so.6 - &gt ;;libc-2.0.7.4.so lrwxrwwx 1根目录17 11月15:39 libcom_err.so.2 - &gt ;;libcom_err.so。2.0 -rwxr-xr-x 1根目录6209 11月15:39 libcom_err.so.2.0 -rwxr-xr-x 1根root 153881 11月15:39 libcrypt-2.0.7.so lrwxrwxrwx 1根目录17 11月17日15:39 libcrypt.so.1 - &gt ;;libcrypt-2.0.7.so -rwxr-xr-x 1根根目录12962 11月15:39 libdl-2.0.7.so lrwxrwxrwx 1根root 14 11月15:39 libdl.so.2 - &gt ;;libdl-2.0。7. 40 LRWXRWX 1根根14 11月15:39 libpam.so.0 - &gt ;;libpam.so.0.64 -rwxr-xr-x 1根根目录26906 11月15:39 libpam.so.0.64 lrwxrwxrwx 1根root 19 11月15:39 libpam_misc.so.0 - &gt ;;libpam_misc.so.0.64 -rwxr-xr-x 1根root 7086 11月15:39 libpam_misc.so.0.64 -r-xr-xr-x 1根根目录35615 11月15:39 libproc.so.1.2.6 lrwxrwwx1根root 19 11月15日15:39 libtermcap.so.2 - &gt ;;libtermcap。so.2.0.8 -rwxr-xr-x 1根根目录12041 11月15:39 libtermcap.so.2.0.8 -rwxr-xr-x 1根目录12874 11月15:39 libutil-2.0.7.solrwxrwxrwx 1root toot 16 11月15:39 libutil.so.1 - &gt ;;libutil-2.0.7.so drwx - x - x 3根root 1024 11月15:39 modules drwx - x - x 2根目录1024 11月15:39安全/ lib / modules:drwx - x - x 4根root1024 11月1日15:39 2.0.35 /llib/modules/2.0.35:drwx - x - x 2根root 1024 11月15:39 block drwx - x - x 2根root 1024 11月15:39 cdrom / lib/modules/2.0.35/block:drwx ------ 1根root 7156 11月15:39 Loop.O / Lib / modules / 2.0.35 / cdrom:drwx ------ 1根根toot 24108 11月15:39 cdu31a.o / lib / security:-rwx - x - x 1根根目录8771 11月15:39 pam_permit。所以III,建立配置文件1,编辑etc / init.d / rcs?文件名在etc / iTtab内容中确定如下:#!/ bin / sh path \u003d / sbin:/ bin导出路径库-n -t proc none / procumount / initrd mount -n -o remoutt,rw / mount -n -o remount,rw -t proc none / proc ifconfiglo 127.0.0.1 hostname usbboot 2,编辑etc / fstab文件内容如下:/ dev / sda2 / ext2默认值1 1 none / proc proc默认值0 0 3,创建一个etc / inittab文件,如果您生成busybox,则可以这样做。ID:2:initdefault:si :: sysinit:/ etc / rcs 1:2345:重生:/ sbin / getty 9600 tty1 2:23:/ sbin / getty 9600 tty2 4,建立nsswitch.conf文件passwd:文件阴影:文件组:文件主机:文件服务:文件RPC:文件ethers:文件netmasks:文件netmasks:文件netmasks文件bootparams:文件Automount:文件别名:文件netgroup:files pulietkey:文件5,建立/etc/pam.conf文件其他auth可选/lib/security/pam_permit.so其他帐户可选/lib/security/pam_permit.so其他密码可选/lib/security/pam_permit.so其他会话可选/lib/security/pam_permit.so作为一个红色的帽子8.0作为一个例子,使用Ranco的双激活类型USB闪存驱动器创建Linux启动盘:下载相关软件:E3,BVI,liuux内核。E3 ::核:首先编译内核,计算机的主板必须支持USB硬盘的启动模式,USB闪存驱动器是一个启动USB闪存驱动器。我将作为Linux-2.4.20的一个例子解释。编译不编译不必要的模块时要小心,例如声卡驱动程序等,以便编译的内核尽可能小。由于您想要支持USB闪存驱动器,您必须编译SCSI设备,USBCORE,USB存储,环回设备支持,RAM磁盘支持和INITRD内核。很多人都会问,USB-Storage模块已经包含为什么我必须构建initrd.img文件?这是因为USB闪存驱动器的初始化过程比执行/ SBIN / init慢慢,导致内核完成完成,USB闪存驱动器尚未完成初始化,因此未加载根文件系统,并执行/ sbin / init命令不成功。通过建立initrd.img文件,将initrd.img文件加载到内存时,当内核启动时,等待3秒钟以使USB闪存驱动器完成初始化工作,然后执行/ 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#ltit / init / bin#ln-s busybox sleEP#VI / MNT / initrd / linuxrc添加至:echo'等3秒.....'/ bin /睡眠3 3.由于默认的initrd文件而重建initrd.img文件相对较大(4MB),在要加快USB闪存驱动器的启动,必须减少它。具体操作如下:#mkdir -p / mnt / initrdusb #cd / tmp#dd if \u003d / dev / zer \u003d / tmp / initrdusb bs \u003d 1m count \u003d 1#mke2fs -m 0 initrdusb#mount -o循环/ tmp / initrdusb / mnt / initrdusb#cp -a / mnt / initrd / * / mnt / initrdusb #umount / mnt / initrd #umount / mnt / initrdusb #cd / tmp#gzip -9 initrdusb#cp initrdusb.gz / boot/ initrd-2.4.20-usb.img 4.测试编译的内核是否正常以启动测试编译内核是正常启动,以及在启动过程中是否可以看到USB闪存驱动器。创建USB闪存驱动器1.将USB闪存驱动器划分为两个分区到Linux分区容量完全取决于哪个系统MAI安装了Ntenance工具,结果如下:#ModProbe USB-Storage#FDISK -L / DEV / SDA磁盘/ DEV / SDA:16头,63个扇区,126个气缸单元\u003d 1008 * 512字节设备启动开始结束块ID系统/ DEV / SDA1 1 102 51376+ 6 FAT16 / DEV / SDA2 103 126 12096 83 Linux注意:如果需要启动Windows 98,则必须将扇区大小设置为63个扇区,可以通过FDISK X命令扩展版修改头部,扇区和气缸参数。2.建立ext2分区#mke2fs -m 0 / dev / sda2#mount / dev / mnt / sda2#mount / dev / sda2 / mnt / sda2#cd / mnt / sda2 3.建立引导目录编译内核副本引导目录使用initrd-2.4.20-usb.img文件,将模块编译为lib / modules目录,并将/ boot / grub文件复制到引导目录,编辑引导/ grub / menu.lst文件,内容如下:超时10颜色0x17 0x70默认值0标题Windows 98 rootnoverify(HD0,0)Makeactive ChainlOADER +1标题GNU / Linux RedHat 8.0(2.4.20-USB)根(HD0,1)内核/boot/vmlinuz-2.4。20-USB RO root \u003d / dev / sda2 initrd /boot/initrd-2.4.20-usb.img安装grub,具体操作如下:grub>根(HD1,1)GRUB>设置(HD1)
- 2021-12-29 23:52:39
- xiaozhang
- 怎么制作linux安装盘,如果有U盘,自己只有Windows环境,那么可以下载下来iso镜像,然后下载一个叫做unetbootin-windows的软件,用它把iso镜像写到U盘里,然后这个U盘就成了启动盘。设定BIOS以U盘为第一启动。Linux版本更新很快,用光盘刻略显浪费,还是U盘的方法省事些
- 2021-12-29 23:52:39