首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在/etc/apt/Sourcees.list中设置带有Debian预置文件的镜像?

如何在/etc/apt/Sourcees.list中设置带有Debian预置文件的镜像?
EN

Unix & Linux用户
提问于 2019-12-09 20:05:16
回答 2查看 3.8K关注 0票数 3

我正在使用预播构建Debian 10稳定("buster")的自定义ISO映像,而且我的自定义preseed.cfg文件工作得非常完美,除了一件事:我希望它能用我选择的存储库配置/etc/apt/sources.list,这样我就不必每次安装新系统时都要手动执行。

目标是一个类似于此的/etc/apt/sources.list (https在这里是必需的):

代码语言:javascript
复制
deb https://deb.debian.org/debian buster main contrib non-free
deb-src https://deb.debian.org/debian buster main contrib non-free

deb https://deb.debian.org/debian-security/ buster/updates main contrib non-free
deb-src https://deb.debian.org/debian-security/ buster/updates main contrib non-free

deb https://deb.debian.org/debian buster-updates main contrib non-free
deb-src https://deb.debian.org/debian buster-updates main contrib non-free

我的preseed.cfg文件如下所示:

代码语言:javascript
复制
#### Contents of the preconfiguration file (for buster)
### Localization
# Preseeding only locale sets language, country and locale.
d-i debian-installer/locale string en_US

# Keyboard selection.
d-i keyboard-configuration/xkb-keymap select us
# d-i keyboard-configuration/toggle select No toggling

### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/hostname string vienna1-preseed

d-i netcfg/wireless_wep string

### Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

### Account setup
d-i passwd/root-login boolean false

# To create a normal user account.
d-i passwd/user-fullname string theusername
d-i passwd/username string theusername
d-i passwd/user-password-crypted password $6$qVk198UWGPxpW$tzMYxQyiOrI4ClDJdDGALsyYq1j1IbXWbpem3JevFT9Krqdmt4wKdvtiY8ry3PRh277V6GHzSKP3zSI7jt04Y/

### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string US/Eastern

d-i clock-setup/ntp boolean true

### Partitioning
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-auto/choose_recipe select atomic

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true


# https://serverfault.com/a/622818
d-i apt-setup/use_mirror boolean false
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/cdrom/set-next boolean false
d-i apt-setup/cdrom/set-failed boolean false

### Base system installation
# Configure APT to not install recommended packages by default. Use of this
# option can result in an incomplete system and should only be used by very
# experienced users.
#d-i base-installer/install-recommends boolean false

### Apt setup
# You can choose to install non-free and contrib software.
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true

### Package selection
tasksel tasksel/first multiselect standard
d-i pkgsel/upgrade select full-upgrade
popularity-contest popularity-contest/participate boolean false

### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/bootdev  string default

d-i finish-install/reboot_in_progress note
d-i debian-installer/exit/poweroff boolean true
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-12-09 20:05:16

d-i preseed/late_command string命令在preseed.cfg中可以做你想做的事情。我向iso添加了一个自定义sources.list文件,然后在安装完成后复制该文件。在preseed.cfg的末尾添加这些命令。

代码语言:javascript
复制
d-i preseed/late_command string \
cp sources.list /target/etc/apt/sources.list; \
in-target apt-get update; \
in-target apt-get install -y git;

最后两个命令演示更新包列表和安装cd (git)中没有包含的包。

下面是我如何使用新的preseed.cfg和新的sources.list构建iso映像:

代码语言:javascript
复制
#!/usr/bin/env bash

# Install dependencies
# sudo apt install isolinux syslinux-utils xorriso

cd ~
mkdir iso
xorriso -osirrox on -indev debian-10.2.0-amd64-netinst.iso -extract / iso/

chmod +w -R iso/install.amd/
gunzip iso/install.amd/initrd.gz
echo preseed.cfg | cpio -H newc -o -A -F iso/install.amd/initrd
echo sources.list | cpio -H newc -o -A -F iso/install.amd/initrd
gzip iso/install.amd/initrd
chmod -w -R iso/install.amd/

cd iso/
chmod +w md5sum.txt
md5sum `find -follow -type f` > md5sum.txt
cd ..

xorriso -as mkisofs -o preseed.iso -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table iso

这个脚本假设您正在使用Debian 10稳定("buster") amd64,并且preseed.cfgsources.list文件位于用于构建iso的任何系统的主目录中。

票数 2
EN

Unix & Linux用户

发布于 2021-12-21 12:18:15

代码语言:javascript
复制
d-i preseed/late_command string \
    echo "{{source1}}" > /target/etc/apt/sources.txt; \
    echo "{{source2}}" >> /target/etc/apt/sources.txt; \
    echo "{{source3}}" >> /target/etc/apt/sources.txt; \
    in-target mv /etc/apt/sources.txt /etc/apt/sources.list; \
    in-target chmod 644 /etc/apt/sources.list; \
    in-target apt update && apt-get dist-upgrade -y; \
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/556413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档