无忧启动论坛

标题: Linux/Ubuntu的LiveCD,如何安装到硬盘上? [打印本页]

作者: 2010linlance    时间: 2023-5-19 03:36
标题: Linux/Ubuntu的LiveCD,如何安装到硬盘上?
本帖最后由 2010linlance 于 2023-5-20 12:32 编辑

碰到挺好用的LiveCD,想安装到硬盘上,因为需要安装deb的软件包,然后 有配置文件。

每次用ISO启动,都挺好用的,想给安装到硬盘上。。。怎么弄呢?

fdisk都看不到LiveCD的系统,也就没法用DD命令了吧?

Ubuntu 18.04 LiveCD 这里下载的
https://pecmd.net/thread-23.htm

作者: 879792799    时间: 2023-5-19 07:14
反正我用DD命令启动过一个安卓X86的ISO  呵呵
作者: linux爱好者    时间: 2023-5-19 08:18
http://bbs.c3.wuyou.net/forum.ph ... &extra=page%3D1
论坛内就有安装的工具。
作者: liuzhaoyzz    时间: 2023-5-19 08:38
本帖最后由 liuzhaoyzz 于 2023-5-19 08:45 编辑
linux爱好者 发表于 2023-5-19 08:18
http://bbs.c3.wuyou.net/forum.php?mod=viewthread&tid=420607&extra=page%3D1
论坛内就有安装的工具。

我这个写的只是启动linux-liveCD的工具,对于veket/puppy/tinycore这样子解开即安装,甚至不解开也可以保存数据的发行版,相当于是个安装工具。

楼主想要的是那种安装到硬盘的工具。他现在给出的题目是已经能够启动ubuntu发行版了。


基本上所有的liveCD都包含有安装工具的呀?进去选择安装就行。

作者: liyqxtu    时间: 2023-5-19 08:54
打卡签到赚积分
作者: 2012andyle113    时间: 2023-5-19 10:36
接触不多,不知道怎么搞,但是LiveCD我接触过的,一般不都是启动的时候可以选择安装什么的
作者: 2011mjsong    时间: 2023-5-19 10:49
VM虚拟机直接运行,或者量产到U盘里不也行吗?
作者: 2010linlance    时间: 2023-5-19 17:45
2012andyle113 发表于 2023-5-19 10:36
接触不多,不知道怎么搞,但是LiveCD我接触过的,一般不都是启动的时候可以选择安装什么的

一般的都有,但是上面这个livecd没有这个选项。。。可能因为极度精简的缘故吧。

太大的livecd,就没有啥意义了。。

作者: 2010linlance    时间: 2023-5-19 17:46
2011mjsong 发表于 2023-5-19 10:49
VM虚拟机直接运行,或者量产到U盘里不也行吗?

确实可以直接运行呀,所以是livecd,安装deb软件也很顺利,所以才想安装到硬盘上。

但是找了一圈,居然啥也没发现。。。
作者: szwp    时间: 2023-5-19 18:01
ventoy试了么?
作者: 2010linlance    时间: 2023-5-19 18:05
szwp 发表于 2023-5-19 18:01
ventoy试了么?

LiveCD本身就可以启动,快速到命令行,网络也通畅,所以才觉得很好,想安装到硬盘上去。

不是启动不了哈。。。
作者: szwp    时间: 2023-5-19 18:30
ventoy安装到硬盘啊
作者: my9823    时间: 2023-5-19 20:17
理论上把根目录复制到linux的分区格式的分区上,/etc/fstab编辑好,关键是有个能处理启动过程的initrd,这个是关键
作者: 2010linlance    时间: 2023-5-20 03:25
本帖最后由 2010linlance 于 2023-5-20 03:31 编辑
my9823 发表于 2023-5-19 20:17
理论上把根目录复制到linux的分区格式的分区上,/etc/fstab编辑好,关键是有个能处理启动过程的initrd,这个 ...

启动命令是下面这俩,但是没有什么根目录了。。。光盘里其他有用的文件都没有,貌似就这俩东西,一个initrd64一个bzImage64,没了。

  1. lsblk
  2. NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  3. sda      8:0    0   20G  0 disk
  4. `-sda1   8:1    0   20G  0 part
  5. sr0     11:0    1 91.7M  0 rom
复制代码





直接备份DD根目录到img,再展开到/dev/sda1?

  1. if [ "$grub_cpu" == "x86_64" ]; then
  2.   menuentry "Ubuntu 18.04 LTS x64" --class ubuntu{
  3.         search --set -f /boot/ubuntu64/bzImage64
  4.         linux /boot/ubuntu64/bzImage64 quiet loglevel=3 initrd=/boot/ubuntu64/initrd64
  5.         initrd /boot/ubuntu64/initrd64
  6.   }
  7. else
  8.   menuentry "Ubuntu 18.04 LTS x86" --class ubuntu{
  9.         search --set -f /boot/ubuntu/bzImage
  10.         linux /boot/ubuntu/bzImage quiet loglevel=3 initrd=/boot/ubuntu/initrd
  11.         initrd /boot/ubuntu/initrd
  12.   }
  13. fi
复制代码

  1. iftitle [find --set-root /boot/ubuntu64/bzImage64] Ubuntu 18.04 LTS x64\n
  2. kernel /boot/ubuntu64/bzImage64 quiet loglevel=3 initrd=/boot/ubuntu64/initrd64 || find --set-root /boot/ubuntu64/bzImage64 && kernel /boot/ubuntu64/bzImage64 quiet loglevel=3 initrd=/boot/ubuntu64/initrd64
  3. initrd /boot/ubuntu64/initrd64
复制代码




作者: my9823    时间: 2023-5-20 11:54
64位内核是bzimage64,内核载入内存后启动initrd64进行初始化再chroot到真实的根目录。当然有的迷你版本会把根目录放进initrd里
作者: 2010linlance    时间: 2023-5-20 12:03
my9823 发表于 2023-5-20 11:54
64位内核是bzimage64,内核载入内存后启动initrd64进行初始化再chroot到真实的根目录。当然有的迷你版本会把 ...

这个就是迷你版的,根目录可能在initrd里面,外面啥也没看到。

但是这个功能很完备呢,自动获取IP,deb正常安装,如果能自己添加点专用软件就好了。

比如screen和rinetd,有没有教程指点下怎么搞?

这个安装到硬盘上,也无法保存已安装软件,估计就是因为都写死在这俩文件里了的缘故,每次重启之后,都是新的系统。
作者: my9823    时间: 2023-5-20 12:13
下载看了看,根目录就initrd64里边,你可以找个ext3或者ext4分区,从iso中提取initrd64到用户目录,然后:
用binwalk看看这个cpio压缩包里的文件被压缩在那一段。
binwalk initrd64
发现有一段lzma压缩的数据,那就是它了,有的initrd是gz压缩的
root@ThinkPad:/home/my9823/Downloads# binwalk initrd64

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ASCII cpio archive (SVR4 with no CRC), file name: ".", file name length: "0x00000002", file size: "0x00000000"
112           0x70            ASCII cpio archive (SVR4 with no CRC), file name: "REAMDE", file name length: "0x00000007", file size: "0x0000003A"
292           0x124           ASCII cpio archive (SVR4 with no CRC), file name: "TRAILER!!!", file name length: "0x0000000B", file size: "0x00000000"
512           0x200           LZMA compressed data, properties: 0x5D, dictionary size: 67108864 bytes, uncompressed size: -1 bytes
4972442       0x4BDF9A        Cisco IOS experimental microcode, for "4"
为了防止看花眼,建个目录进去载解压
mkdir 123;
cd 123;
dd if=../initrd64 bs=512 skip=1 |unlzma|cpio -idm
好了,123目录就是initrd64的全部文件。大概280M左右。


作者: 2010linlance    时间: 2023-5-20 12:28
本帖最后由 2010linlance 于 2023-5-20 12:30 编辑
my9823 发表于 2023-5-20 12:13
下载看了看,根目录就initrd64里边,你可以找个ext3或者ext4分区,从iso中提取initrd64到用户目录,然后:
...

感谢大佬出手指点,这个怎么增加一个screen和rinetd的软件?这俩体积小巧,又比较常用哈。

我本来昨天晚上搞了3个小时,一头雾水,都放弃睡觉了的。。

这又冒出来希望了,恳请大佬出手,指点或者干脆弄个成品出来,哈哈。。如何把这个目录再压缩成initrd64,这样就更方便用了,
如果想安装到硬盘(其实是给虚拟机用,可以飞快的建立一个端口转发虚拟机,很好用),有什么详细步骤嘛?

对了,如果能告知如何改为国内源,那简直可以直接在线安装软件了。。。
目前我rinetd是用deb装上得,找起来也费尽,有的还得下载依赖包。




作者: my9823    时间: 2023-5-20 12:39
打包应该是在initrd64解开的目录运行
find .|cpio -H newc -o>../init64
find . 用来获取当前目录的所有文件列表,然后用|管道符作为后边cpio的输入参数,-H因该是cpio压缩时使用那种格式,>定向到上级目录生成initrd64
至于添加软件你用livecd启动,chroot到这个目录,然后apt安装所需,不知道chroot前要挂载那些虚拟文件系统,没试过。
作者: 2010linlance    时间: 2023-5-20 12:46
my9823 发表于 2023-5-20 12:39
打包应该是在initrd64解开的目录运行
find .|cpio -H newc -o>../init64
find . 用来获取当前目录的所有 ...

完了,那我更不会弄了。。。虚拟机里咋方便弄呢,哎,有机会我再试试。。。先谢谢啦。
作者: my9823    时间: 2023-5-20 15:43
你运行apt安装时看提示缺少那些依赖,都下载下来解压出来复制到根目录也行,笨方法!不过这样没办法让系统记录你安装了那些包,到只要依赖满足就能运行
作者: ygao2004    时间: 2023-5-20 18:20
2010linlance 发表于 2023-5-20 12:03
这个就是迷你版的,根目录可能在initrd里面,外面啥也没看到。

但是这个功能很完备呢,自动获取IP,de ...

你这完全不懂ubuntu的livecd,livecd有一种模式,是安装程序之后可保存数据,叫 live cd persistent.
作者: 2010linlance    时间: 2023-5-20 19:44
my9823 发表于 2023-5-20 15:43
你运行apt安装时看提示缺少那些依赖,都下载下来解压出来复制到根目录也行,笨方法!不过这样没办法让系统 ...

呃,我就是希望重新把screen和rinetd这俩给封装进去,不想每次都重装才能用啦。

这个精简系统,启动飞快,获取IP也很快,开个rinetd就可以做端口转发了。

作者: 2010linlance    时间: 2023-5-20 19:44
ygao2004 发表于 2023-5-20 18:20
你这完全不懂ubuntu的livecd,livecd有一种模式,是安装程序之后可保存数据,叫 live cd persistent.

哎,确实不懂呀,懂我还问个毛。。。

作者: my9823    时间: 2023-5-20 21:11
你可以把这两个文件复制出来放到/usr/bin/目录,然后看看系统里有没有ldd命令,运行ldd /usr/bin/screen|grep not看看那一行是not found就是依赖没找到,在补全这些个.so文件,就能正常运行。
作者: 2010linlance    时间: 2023-5-21 01:35
my9823 发表于 2023-5-20 21:11
你可以把这两个文件复制出来放到/usr/bin/目录,然后看看系统里有没有ldd命令,运行ldd /usr/bin/screen|gr ...

screen和rinetd 这俩么?这俩是deb的包,我等会去重启看看这个livecd有没有ldd命令,不一定有,是个精简系统,汗。
作者: 2010linlance    时间: 2023-5-21 02:19
my9823 发表于 2023-5-20 12:39
打包应该是在initrd64解开的目录运行
find .|cpio -H newc -o>../init64
find . 用来获取当前目录的所有 ...

大神,我都问晕了,init64解包出来根目录,我要是想安装到硬盘上,是不是直接DD到/dev/sda1就可以了?

或者需要怎么个步骤?我先不想再打包的事,就直接安装到硬盘,然后数据可以固定下来就好了。
作者: my9823    时间: 2023-5-21 05:30
内核先启动,然后会运行initrd的init,貌似根目录有个脚本init,做些启动前的挂载之类的动作,然后就运行/sbin/init(实际是systemd,这个一直比较混乱看不懂),关键期看懂根目录的init处理了什么,不是很长,结合百度看下吧。以前还有时间看这些,我现在是苦逼一个,赚钱养家,懒得折腾这个了。
作者: 2010linlance    时间: 2023-5-21 11:24
my9823 发表于 2023-5-21 05:30
内核先启动,然后会运行initrd的init,貌似根目录有个脚本init,做些启动前的挂载之类的动作,然后就运行/sbi ...

同苦逼,还欠债,听你的,不弄了,也一样赚钱养家,还失业了。。哎。。。先不弄了。。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3