2007-07-31 10:30:00 f5key 阅读数 123

口袋里的Linux:在您的U盘上运行SLAX

关键词口袋里的Linux:在您的U盘

  您可以从光盘上运行某些版本的Linux,而现在您甚至可以从U盘上运行。Vincent Danen将告诉在这个小巧的设备上运行SLAX版Linux的一些基础知识。

  随着所谓的“Live CD”的出现已经有一段时间了,它能够让您把Linux带在口袋里到处跑,因为一些版本的Linux可以完全从光盘上运行。像Knoppix这种能够在光盘上运行的Linux对于系统恢复真是太重要了,对于高手来说这真是太酷了。

  随着U盘这种廉价存储设备的普及,在U盘上运行Linux使得进行系统恢复安装变得更加容易。虽然它要比光盘贵,但是U盘的体积可要小得多。

  有一些版本的Linux可以在光盘或者U盘上运行;一个是SLAX,您可以从http://slax.linux-live.org/下载。要安装它,您就要根据自己选择的“版本”下载ISO镜像文件;例如,SLAX标准版的最新版本是5.1.6,它带有KDE桌面和很多应用程序

  一旦ISO镜像下载完毕,将U盘插入计算机。大多数版本的Linux都会自动加载它,所以卸载它将让您可以格式化U盘,然后把SLAX ISO里面的内容复制到上面:

# umount /mnt/removable 
# mkdosfs -F 16 /dev/sda1 
# mount -o loop slax-5.1.6.iso /mnt/cdrom 
# cd /mnt/cdrom 
# ./make_disk.sh /dev/sda1

  版本比较新一点的SLAX提供了一个make_disk.sh脚本;针对Windows用户还有一个批处理文件可以使用。这个脚本让手动安装成为历史,一步就可以完成所有的安装。但是,根据所使用的U盘,您可能需要利用fdisk命令把主分区设置成可以引导或者活动状态:

# fdisk /dev/sda

  输入a并选择分区1,这时会出现表示可引导的小旗子。最后,输入w将更改保存到计算机。当然首先是要假设/dev/sda是U盘;您需要在格式化之前确认U盘的名称!

  一旦所有操作都完成了,重新启动,并在BIOS里面把启动顺序改为从USB设备启动。当SLAX启动完毕,您就能够登录进去,开始使用X视窗系统和KDE桌面,并启动多种应用程序了。

【作者: Liberal】【访问统计:】【2006年11月6日 星期一 01:19】【 加入博采】【打印

2017-05-19 14:20:40 jzy996492849 阅读数 39
摘要: 从U盘运行Linux操作系统的三种方法 usb_linux_0 你或许听说过在U盘上运行live Linux操作系统,但你知不知道可以永久的保存运行时的数据,或者直接将Linux安装到U盘?本文将介绍把Linux装进口袋(U盘)的三种方法,挑一种你最喜欢的方法吧! 将ISO映像烧录到U盘 usb_linux_1 把一个Linux发行版的Live ISO映像烧录到U盘中已 经变的极其容易了。

从U盘运行Linux操作系统的三种方法usb_linux_0
usb_linux_0

你或许听说过在U盘上运行live Linux操作系统,但你知不知道可以永久的保存运行时的数据,或者直接将Linux安装到U盘?本文将介绍把Linux装进口袋(U盘)的三种方法,挑一种你最喜欢的方法吧!

将ISO映像烧录到U盘
usb_linux_1
usb_linux_1

把一个Linux发行版的Live ISO映像烧录到U盘中已 经变的极其容易了。从这里你可以在任意一台支持从U盘启动的PC上启动你的Linux系统。然而,这种方法有一个缺点:当你关机后,你所有“修改”过的数 据都会丢失。这是因为作为一个Live环境,所有的数据都保存在RAM中而不是U盘上。当你关机的时候,所有修改过的数据都会丢失。

如果你在日常使用的时候需要修改安装到U盘的Linux系统(例如安装、更新软件或者修改文档),那么这种方法显然不可行。但是,如果你打算将其用作安全通信(例如网银或者需使用TOR的场合)和确保不保存敏感的信息,那这种方法无疑是最适合的。

永久性保存数据
usb_linux_2
usb_linux_2

如果你是Ubuntu用户,那么你可以选择在U盘上永久保存修改后的ISO映像。这样你就可以在U盘上安装应用程序和保存新创建或修改的文档。

缺点:Live系统运行时通常自动使用Live账号进入系统。这个账号是没有密码的,任何人都可以登陆系统,使得其变得不安全。在更新软件的时候也 需要特别小心。因为如果Linux内核被更新了,bootloader将有可能损坏。比起在硬盘上安装的系统,这种方法很不灵活。因为 bootloader需要被启动的内核与安装ISO映像的内核版本相同才可以启动。

完全安装到U盘
usb_linux_3
usb_linux_3

最后,你可以选择将系统完全安装到U盘。你需要用光盘或者另外一个U盘来存储安装的ISO映像。这样方法可以将整个系统完整的安装到U盘中,且和在硬盘上安装的系统一样灵活。

优点很明显:它和在硬盘上安装的系统没有什么区别,而且非常便携。但这种方法也有缺点:首先你的U盘要足够大——至少8G以上;其次,系统本身会认 为它是安装在硬盘上的,所以它会针对当前运行的硬件进行优化,但是这种优化可能会使得当你遇到未来的其它硬件时,系统无法工作。

这主要涉及到安装私有驱动程序。为了保持系统最大的兼容性,请不要使用这种驱动程序。我在使用这种系统安装方式的时候没有使用私有驱动程序,所以没有遇到任何与兼容性相关的问题。

总结
惊讶么?你不应该感到惊讶才对——Linux系统本身就非常灵活,所以它可以满足各种不同的需求。你现在已经了解在U盘上运行Linux系统的三种方法,那么选择那种最适应你的方法也变得非常容易。也或许由于你了解了几种不同的安装方法,选择起来反而变得犹豫不决。

原文发布时间:2014-5-25

本文来自云栖合作伙伴“linux中国”
2016-08-02 12:41:28 u011016879 阅读数 3381

前言

之前写过在ubuntu上实现插入U盘自动运行的程序,即autorun,但是在arm 上并不能实现。即仅仅是修改U盘上的文件或者权限,无法提供插入u盘时自动运行这个效果。在嵌入式编程的一个思路是,修改硬件层的程序,运行U盘检测程序,然后U盘检测程序检测出相应程序调用U盘里的程序,在这里是十分不正常的方式,实现了插入U盘自动更新的设计。

修改mount.sh

在mount.sh上添加执行检测U盘的程序。mount.sh在U盘插入时执行的脚本,在”add”分之中,添加如下语句:

if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
if [ -x "$PMOUNT" ]; then
$PMOUNT $DEVNAME 2> /dev/null
elif [ -x $MOUNT ]; then
$MOUNT $DEVNAME 2> /dev/null
fi

# If the device isn't mounted at this point, it isn't configured in fstab
# 20061107: Small correction: The rootfs partition may be called just "rootfs" and not by
# its true device name so this would break. If the rootfs is mounted on two places
# during boot, it confuses the heck out of fsck. So Im auto-adding the root-partition
# to /etc/udev/mount.blacklist via postinst
cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount
sh /home/test/checkUdisk   #这里是我加上的语句,检测U盘的程序checkUdisk放在了/home/test/
#下,如果更改checkUdisk目录,这个地方也要做相应更改

fi

添加的语句sh /home/test/checkUdisk,是执行检测U盘的脚本,在插入U盘后,系统会自动执行到add分支,转而会运行该语句。

编写自动检测U盘的程序

首先确定自己U盘的安装路径,在arm上的U盘默认安装是在/media/sda1/,如果使用多个U盘,或者当前文件夹使用时,会使用sdb1,依次类推,故检测程序应能忽略插入U盘时,不同文件夹的影响,首先就是检测U盘所在的文件夹,本程序中是检测U盘中的执行程序来确定U盘所在目录,相应程序如下:

#/bin/sh
for var in "a" "b" "c" "d" "e" "f" "g" "h"
do  
   for j in 1 2 3 4 
    do
     PATH="/media/sd$var$j/copy.sh” #copy.sh是自动更新脚本,检测其存在,则跳出循环
     #echo $PATH
    if [  -s $PATH ];then
    echo "opendevice ${PATH}" 
        break;
    fi
    done
if [  -s $PATH ];then   
    break;  
fi
done
if [  -s $PATH ];then
   /bin/sh $PATH     #执行copy.sh脚本, /bin/sh使用绝对路径可以确保程序执行
fi

写好后,相应的程序应提取权限:chmod 755 checkUdisk ,checkUdisk是相应的文件名。

放在U盘里的程序

本文中将放在U盘里的程序为shell 脚本,其他程序的要相应地在相应的系统下编译运行尝试过才能放到U盘下。

#/bin/sh
/bin/cp  /media/sda1/test1 /home/test/test1 #这里最好使用绝对路径,否则会出错

同时退该文件设置权限:chmod 755 test

测试一下应该就成功了

2012-09-16 21:20:03 xinyu590 阅读数 98

在U盘中安装一个可以随身携带的Linux系统,Ubuntu、Fedora、Opensuse、Archlinux、linux mint等等200多种Linux类型想装哪个就装哪个!你可以用它来启动电脑,更有意思的是,你可以在运行Windows的电脑上直接使用此U盘来运行Linux,而无需安装其它任何软件!这就是Linux Live USB Creator,一个开源软件的奇妙之处!而且它界面漂亮,使用简单,只需轻松五步即可制作完成!

五步制作方案 :

1、选择要安装的U盘;

2、选择安装源(即Linux源文件,可以是ISO/光盘,也可以在线下载);

3、根据U盘容量等条件选择系统模式;

4、选择是否隐藏U盘上创建的文件、是否格式化U盘、是否需要在Windows中运行Linux。

5、安装!

Linux Live USB Creator 用户界面:

在Windows中用U盘运行Linux系统 Linux Live USB Creator 简体中文版 - 情缘心语 - 手机天堂 软件教学世界
 在Windows中用U盘运行Linux系统 Linux Live USB Creator 简体中文版 - 情缘心语 - 手机天堂 软件教学世界 网盘下载 http://www.t00y.com/file/9481603
2015-11-18 16:34:10 caochenxian 阅读数 1549

运行于u盘的精简linux系统制作

1、裁剪linux内核

        如何裁剪linux系统,主要是设置menuconfig,里面有很多设置,按照“金钟国”大神的教程,一步一步来就可了。这里不在赘述。

        强调一下生成的文件格式,

        vmlinuz的建立有两种方式。

        一是编译内核时通过“make zImage”创建,手动拷贝到/boot目录下面。zImage适用于小内核的情况,它的存在是为了向后的兼容性。
       二是内核编译时通过命令make bzImage创建,然后手动拷贝至/boot目录下。bzImage是压缩的内核映像,需要注意,bzImage不是用bzip2压缩的, bzImage中的bz容易引起误解,bz表示“big zImage”。 bzImage中的b是“big”意思。 zImage(vmlinuz)和bzImage(vmlinuz)都是用gzip压缩的。它们不仅是一个压缩文件,而且在这两个文件的开头部分内嵌有 gzip解压缩代码。所以你不能用gunzip 或 gzip –dc解包vmlinuz。
     内核文件中包含一个微型的gzip用于解压缩内核并引导它。两者的不同之处在于,老的zImage解压缩内核到低端内存(第一个 640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么可以采用zImage或bzImage之一,两种方式引导的系统运行时是相同的。大的内核采用bzImage,不能采用zImage。vmlinux是未压缩的内核,vmlinuz是vmlinux的压缩文件。

2、制作initrd

       initrd.img主要有两种格式,一种是虚拟磁盘,使用dd命令创建一个文件,然后mkfs.ext2,mount -o loop,make busybox。另一种是cpio形式的,直接创建。

       磁盘格式:

  1 #!/bin/bash
  2 dd if=/dev/zero of=./initrd.img bs=1024 count=32768
  3 mkfs.ext2 ./initrd.img
  4 mount -o loop ./initrd.img /mnt/initdisk
  5 rm -rf /mnt/initdisk/*
  6 cp -a ../busybox/_install/* /mnt/initdisk
  7 umount /mnt/initdisk
  8 gzip -9 ./initrd.img

      cpio格式:

  1 find . | cpio -o -H newc | gzip -9 > $target


      下面讲一下busybox。

      BusyBox 是一个集成了一百多个最常用linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Android系统的自带的shell。

      使用make menuconfig配置选项 -> make编译 -> make install 主要目的是生成静态库busybox,然后拷贝到我们的rootfs目录下,至此busybox使用完成,但是我们的rootfs目录作为系统虚拟文件系统还有一些文件需要创建,例如/etc /lib /sbin /dev。。。

      /etc目录下应该有inittab文件,

      inittab为linux初始化文件系统时init初始化程序用到的配置文件。这个文件负责设置init初始化程序初始化脚本在哪里;每个运行级初始化时运行的命令; 开机、关机、重启对应的命令;各运行级登陆时所运行的命令。

# Begin /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc sysinit
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# End /etc/inittab
      /etc/fstab文件是系统启动后自动挂在磁盘的记录文件,eg:
UUID=0db4ccd4-6685-46a7-ae8d-8169dc690853 none            swap    sw              0           0

      /lib目录为系统库目录,应该至少存放最进本的库,eg:libc、libm、ld-linux。可使用cp -rf /lib/libc.* ./     and     cp -rf /ilbc-* ./     拷贝一个libc库,其他的库用同样的方法,为什么一个哭队两个文件?因为其中一个是软链接,至于why自行百度

      /dev目录至少有两个文节点,一个mknod console c 5 1 , 另一个mknod dev/null c 1 3 等


  

3、制作u盘的启动项

理论基础:     

      使用grub程序制作u盘启动项,下面需要需要讲一下linux系统启动流程和硬盘的mbr

      设备上电 -> 执行0xffff0中的BIOS代码,检测设备第一启动项 -> 探测到硬盘,读取硬盘前512字节的mbr到内存07c00 -> mbr自举到内存0x90000执行 -> mbr读取硬盘后2k数据到内存0x90200执行 -> 内核代码被读取到内存0x10000执行

      硬盘的前512字节左右系统的引导程序,有必要分析一下他的内部结构:

      512 = 446(mbr) + 4*16(dpt) + 0x55aa(end) 此512位于硬盘的0磁道,0柱面,1扇区(一个扇区512byte)

      16(dpt) = 1(08激活,00未激活) +3(分区开始磁头,扇区,柱面) + 1(分区类型83 ext2) + 3(分区结束磁头,扇区,柱面) + 4(首扇区相对扇区号) + 4(总扇区数)

      可以使用磁头柱面和扇区计算出磁盘的物理地址,方法有两种CHS和LBA,具体转换公式自行baidu。

真正的grub操作:

      1、准备u盘,fdisk 命令进行分区格式化,将u盘分为两个分区,一个作为主分区,一个作为交换分区,主分区为活动分区,使用fdisk的a参数转换,交换分区使用fdisk的t参数转换为82 。然后格式化主分区mkfs.ext2

      2、制作grub,首先挂在u盘到/mnt/uDisk,使用命令grub-install --root-directory=/mnt/uDisk /dev/uDev

      3、拷贝/boot/grub/grub.cfg并修改

      4、将裁剪后的initrd.img和vmlinx拷贝到你的rootfs下的boot目录

4、设置grub启动

     在重启系统后会进入grub的选项,c进入编辑模式,主要执行以下几个步骤:

     1、root (hd0, 1)

     2、linux /boot/vmlinx root=/dev/sda1

     3、initrd /boot/initrd

     4、boot     (重启)

配置可以写入到grub.cfg就不用每次都编辑了,至此裁剪后的系统启动完成,可能还需要设置系统后启动的一些脚本,这些就看个人发挥了,我也刚完成到这步,有新进展在更新吧。。。。。。。。


U盘系统 Linux Unetbootin Puppy Linux

博文 来自: RHEL_admin
没有更多推荐了,返回首页