如何制作定制的ubuntu镜像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何制作定制的ubuntu镜像相关的知识,希望对你有一定的参考价值。
ubuntu 10.04安装成功,为了运行一款软件,apt-get install 了很多lib,为了方便其他人安装使用我的系统,我想把我的系统制作成ISO镜像,这样他们就可以做个启动盘了,方便快捷。怎么做呢?新人一个,寻帮助,多谢!
具体操作如下:一、从零开始构建Ubuntu-Server系统安装镜像
1)、Debian-installer--initrd.gz、vmlinuz和isolinux/的制作
Debian-installer是Debian的系统安装程序,ubuntu的server和alternate版都是使用Debian-installer作为系统安装程序。Debian-installer是一种字符界面的安装程序,可以对系统安装的软件包进行定制。
1、使用Debian-installer的ubuntu分支的源码
2、安装构建Debian-installer的依赖包:sudoapt-get build-dep debian-installer
3、创建debian-installer所需的源列表sources.list.udeb.local,构建debian-installer时会根据本机的sources.list生成所需的sources.list.udeb,可根据需要创建合适的sources.list.udeb.local来代替sources.list.udeb。
例,在debian-installer源码/build/下建立sources.list.udeb.local,其内容如下:
debcopy:/home/xin/work/version/debian-installer/build/ localudebs/
debhttp://archive.ubuntu.com/ubuntu raring main/debian-installer
debhttp://archive.ubuntu.com/ubuntu raring-securitymain/debian-installer
debhttp://archive.ubuntu.com/ubuntu raring-updates main/debian-installer
debhttp://archive.ubuntu.com/ubuntu raring-proposedmain/debian-installer
4、根据需要(光盘启动、硬盘启动和网络启动等)构建带有debian-installer的内核文件,例如:makebuild_cdrom_isolinux
结果将在dest/目录下生成如下文件:
├── cdrom
├──debian-cd_info.tar.gz
├── initrd.gz
└── vmlinuz
其中debian-cd_info.tar.gz内容为光盘启动所需的syslinux相关文件,也可供debian-cd使用自动生成光盘镜像。
5、定制:
config目录下修改给之文件可具体对内核等功能进行配置,具体有待根据实际需求进行分析。
2)、debootstrap&mksquashfs--filesystem.manifest,size,squashfs的制作
filesystem.squashfs是由debootstrap生成的ubuntu基础系统经过mksquashfs打包而成。
1、生成标准ubuntu基础系统:sudodebootstrap raring ./testfs
2、为安装系统时增加自定义的包集合菜单
3)、光盘引导--isolinux/的制作
isolinux/下为光盘引导的相关文件,可使用debian-installer生成的debian-cd_info.tar.gz提供的文件,也可使用自定义引导程序。
4)、自动化安装系统--preseed/的制作
preseed/下放置的是各种自动化安装系统的seed文件,可根据需要按照相关规则编写seed文件,ubuntuserver所使用的为ubuntu-server.seed。在引导参数中需指定seed文件。
5)、光盘中源的软件包--pool/的制作
pool/下是光盘中本地源的所有软件包,软件包按照源的标准文件结构放置。使用apt-move工具可将指定文件夹下的所有软件包按照源的标准文件结构放置,即可生成所需的pool目录。Apt-move是一个专为已下载到/var/cache/apt/archives的软件包生成debian软件包仓库文件结构的工具。光盘中所携带的所有软件包之间必须没有冲突并有完整的依赖关系,同时不能和debootstrap生成的基础系统中已安装的软件包有冲突。
6)、光盘中源的包列表--dists/的制作
dists/下是光盘中本地源的包列表,其中至少应包含两个包列表:1)光盘中所有供系统安装的.deb包的包列表(Packages),2)Debian-installer所需的.udeb包的包列表。
7)、光盘信息–.disk/目录
.disk/目录下为记录一些光盘属性的文件,此目录是制作镜像所必须的。debian-installer会读取其中信息以判断是否为ubuntu的系统安装盘。
8)、 simple-cdd--自动化构建ubuntu-server系统安装镜像
simple-cdd可以根据配置文件,利用Debian-installer和Debian-cd等工具自动构建ubuntu-server系统安装镜像。(由于这些软件默认配置都是针对Debian的,具体配置和使用还有待分析) 参考技术A ubuntu本身是不带lib依赖文件的,都是用deb包解决的,deb包的apt-get安装管理器能联网自动搜索安装依赖。ubuntu可用的lib数量是很多的,你不可能都这都镜像里,就算弄了出来它的大小会很惊人的。如果你想保留这版本,只能自己建立第三方软件源即ppa,但这不是一个人就可以做到的。追问
我并不是要镜像很多lib,只镜像我自己需要的lib,后期准备裁剪编译内核,因为我希望我的linux在低配置的PC上运行。另外,RTAI 好像也有问题,导致我的软件运行的时候只能运行模拟版。
本回答被提问者和网友采纳 参考技术B 不必iso. 只需要做成squashes 文件系统就可以。推荐UC loner. 参考技术C 是squashfs 不是squashes 参考技术D 我只想知道如何换内核ubuntu镜像定制时的修改杂记
功能实现:
- 创建用户thinputer,将其设置为root权限。
adduser thinputer
vi /etc/sudoers
添加 thinputer ALL=(ALL:ALL) ALL
无需密码: thinputer ALL=(ALL)NOPASSWD:ALL
- 取消自动检测更新
apt-get autoremove gnome-software
apt-get autoremove software-properties-gtk
- 取消快捷键
find / -name rc.xml
vi /usr/share/lubuntu/openbox/rc.xml
vi /etc/xdg/openbox/rc.xml
将文件<keyboard>标签之中的内容全部删除 中间每一个小标签都是一个快捷键
- 取消屏保
apt-get autoremove light-locker
- 自动登录
vi /etc/lxdm/default.conf
autologin=thinputer
vi /etc/lightdm/lightdm.conf
[SeatDefaults]
autologin-user=thinputer
autologin-user-timeout=0
greeter-session=lightdm-gtk-greeter
user-session=Lubuntu
- 界面程序开机自启
vi /usr/share/applications/qt.desktop
[Desktop Entry]
Version=1.0
Name=thinputer
Exec=/etc/Login_01.py
StartupNotify=false
NoDisplay=true
Type=Application
Categories=System;Utility;Archiving;
cp /usr/share/applications/qt.desktop /etc/xdg/autostart/
- 后台脚本开机自启
vim /lib/systemd/system/rc.local.service
添加:
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
vim /etc/rc.local
编写脚本:
#!/bin/sh -e
xxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx
exit 0
chmod 755 /etc/rc.local
ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/
- 笔记本电源相关行为响应动作
/etc/systemd/logind.conf
主要包含以下事件:
HandlePowerKey:按下电源键
HandleSleepKey:按下挂起键
HandleHibernateKey: 按下休眠键
HandleLidSwitch:合上笔记本盖
HandleLidSwitchDocked:插上扩展坞或者连接外部显示器情况下合上笔记本盖子
取值可以是 ignore、poweroff、reboot、halt、suspend、hibernate、hybrid-sleep、lock 或 kexec。
poweroff和halt均是关机(具体实现有区别)
supspend是挂起(暂停),设备通电,内容保存在内存中
hybernate是休眠,设备断电(同关机状态),内容保存在硬盘中
hybrid-sleep是混合睡眠,设备通电,内容保存在硬盘和内存中
lock是锁屏
kexec是从当前正在运行的内核直接引导到一个新内核(多用于升级了内核的情况下)
ignore是忽略该动作,即不进行任何电源事件响应
- 关闭ubuntu错误日志上报提醒
0.删除现有错误日志
rm -rf /var/crash/*
1.卸载
service apport stop apt purge apport
- 修改
vi /etc/default/apport enabled=0
esc退出界面
if event.key() == Qt.Key_Escape:
return
- grub的修改
vi /etc/default/grub
将GRUB_CMDLINE_LINUX_DEFAULT="quiet"
根据CPU类型:
改成GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
或者GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
vi /etc/modules
添加:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
grub2-mkconfig(可能是grub-mkconfig)
update-grub
reboot
重启之后cat /proc/cmdline
查看是否存在 quiet intel_iommu=on
11. iso分区
修改newiso/isolinux/isolinux.cfg
确定preseed
修改newiso/preseed/lubuntu.seed
确定系统安装行为
12. 删除lubuntu的任务栏
apt autoremove lxpanel
13. 关闭黑屏
xset -dpms s off
xset s noblank
14. 关机太慢
vi /etv/systemd/system.conf
修改DefaultTimeoutStopSec=1s
15. ssh -X
vi /etc/ssh/sshd_config
#AllowAgentForwarding yes
AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
#PermitTTY yes
PrintMotd no
pyqt杂记:
self.setWindowFlags(Qt.WindowStaysOnTopHint)//窗口置顶
qemu虚拟机管理
- 创建
qemu-img create -f qcow2 winxp.img 10G
- 系统
qemu-system-x86_64 -hda winxp.img -cdrom xp.iso -boot d -m 512 -no-acpi -soundhw all
- 启动
qemu-system-x86_64 -hda winxp.img -boot d -m 512 -no-acpi -soundhw all
- virsh的vm管理
virsh reboot/start/shutdown/destroy/ vm_name
virsh create vm.xml
以上是关于如何制作定制的ubuntu镜像的主要内容,如果未能解决你的问题,请参考以下文章