如何在 Lubuntu 14.04 LiveCD 启动时自动运行终端命令?

如何在 Lubuntu 14.04 LiveCD 启动时自动运行终端命令?

我正在对 Lubuntu 14.04 LiveCD 进行一些重新制作,需要在启动时运行以下命令:

/sbin/ifconfig eth0 10.10.10.1 netmask 255.255.0.0

首先,我尝试修改rc.本地如下:

#!/bin/sh -e
#
# rc.local

/sbin/ifconfig eth0 10.10.10.1 netmask 255.255.0.0

exit 0

执行位通过以下方式设置:

chmod +x /etc/rc.local

这不起作用,所以我尝试编写这个 bash 脚本(我将其设置为可执行文件)并将其放在/usr/bin/

#!/bin/bash
/sbin/ifconfig eth0 10.10.10.1 netmask 255.255.0.0

结合上述行动,我修改了rc.本地因此:

#!/bin/sh -e
#
# rc.local

/usr/bin/myscript

exit 0

没用。保留 bash 脚本/usr/bin/,我编辑了/etc/xdg/lxsession/Lubuntu/自动启动用这一行:

@/usr/bin/myscript

这也没有产生预期的结果。我尝试的某些方法是否出了错,还是我应该做其他事情?

编辑:

我一直无法弄清楚如何使用 Elder Greek 答案中提到的 Casper 参数。如果在这方面能得到进一步的帮助,我将不胜感激。

不过,他/她发布的链接中的评论很有帮助。一位评论者指出,位于/usr/share/initramfs-tools/scripts/casper-bottom/23networking可以编辑以向 eth0 分配静态 IP。

评论者还提到编辑/etc/网络/接口文件,这就是我所做的。它有效,但代价是:启动时等待网络配置的延迟时间很长。以下是相关部分:

/etc/网络/接口

auto eth0
iface eth0 inet static
address 10.xxx.xxx.xxx
netmask 255.255.255.0
gateway 10.xxx.xxx.xxx

〜/ isolinux / isolinux.cfg

default live
label live
    say Booting an Ubuntu Live session...
    kernel /casper/vmlinuz
    append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ip=frommedia --

根据我的经验,通常发生的情况是,无论你对网络/接口文件,当 LiveCD 启动时,它会被强制进入默认状态23网络我之前提到过的 bash 脚本。ip=来自媒体在末尾编辑isolinux配置文件强制脚本使用网络/接口文件中存在的内容。

正如评论者提到的那样,23网络可以编辑脚本来设置静态 IP。如果有人能帮我(不太擅长编写 bash 脚本),那就太好了。

答案1

如果我尝试/sbin/ifconfig eth0 10.10.10.1 netmask 255.255.0.0手动运行,我会得到 SIOCSIFADDR: Operation not permitted

SIOCSIFFLAGS: Operation not permitted

SIOCSIFNETMASK: Operation not permitted

按照这个逻辑,我尝试

sudo /sbin/ifconfig eth0 10.10.10.1 netmask 255.255.0.0

一切顺利完成,没有错误。看来您需要超级用户权限才能成功。

您可能会发现此文档很有用:https://help.ubuntu.com/community/LiveCDCustomization

对上述链接的进一步研究表明,有一个 casper 参数,其形式为:

ip=IFACE,地址,网络掩码,网关[:IFACE,地址,网络掩码,网关]*

我通过谷歌搜索找到了这个Ubuntu Live CD 自定义静态 IP

相关内容