歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 生成Linux操作系統LiveUSB的image

生成Linux操作系統LiveUSB的image

日期:2017/2/28 16:29:47   编辑:Linux教程

現在,越來越多的設備上采用Linux操作系統,比如防火牆,路由器等網絡設備。

我最近做了一個軟件編碼器,是運行在Linux操作系統下的,准確的說是運行在Ubuntu下面的。

我希望能把軟件編碼器和操作系統一起做成一個image來發布,用戶獲取到這個image後,直接用dd命令或者其他工具把image燒寫到usb或者dom電子盤上,然後把dom電子盤或者u盤插入到目標機器直接啟動,這個機器就變成了一個編碼器。

現在在參照image-creator的源代碼,image-creator是meego的開發工具,首先閱讀源代碼根目錄下的API文檔。

文中提到了dm-snapshot,經過一番查找,應該是dm-crypto的那個dm,參見Linux內核源代碼的Documentation/device-mapper文檔。

如下命令需要了解

losetup

set up and control loop devices

kpartx

Create device maps from partition tables

parted

parted is a disk partitioning and partition resizing program. It allows you to create, destroy, resize, move and copy ext2, Linux-swap, FAT, FAT32, and reiserfs partitions. It can create, resize, and move Macintosh HFS partitions, as well as detect jfs, ntfs, ufs, and xfs partitions. It is useful for creating space for new operating systems, reorganising disk usage, and copying data to new hard disks.

采用extLinux作為bootload,只啟動內核的image做法如下:

1. image文件:

dd if=/dev/zero of=rainbow.img bs=1M count=128

2. 把image文件與loop設備關聯

losetup /dev/loop0 rainbow.img

3. 現在/dev/loop0就是你的U盤或者dom電子盤設備了,進行分區等操作

fdisk /dev/loop0

建立一個分區,設置為啟動分區,

4. 無論是U盤還是電子盤,在上面建立的分區都有一個對用的設備,比如/dev/sdc1等,我們剛剛在image上建立的分區在哪裡?這就要用到kpartx了

kpartx -a -v /dev/loop0

相應的分區在/dev/mapper中

5. 把image上的分區mount上來:

mount /dev/mapper/loop0p1 mountpoint

6. 建立一個boot目錄並安裝extLinux

extLinux –install /path/to/mountpoint/boot

7. 在boot目錄中編輯extLinux.conf配置文件

8. copy內核到boot目錄

9. 卸載/dev/mapper/loop0p1,把mbr寫到/dev/loop0

10. kpartx -d

11. losetup -d

12. 用dd把image寫到目標設備。

Copyright © Linux教程網 All Rights Reserved