preseed.cfg ігноруючи налаштування імені хоста


13

Я встановлюю Debian Wheezy (netinstall) у VirtualBox за допомогою preseed.cfg.

Я спробував d-i netcfg/get_hostname string somehostі те d-i netcfg/get_hostname string somehost, і в обох випадках хост встановлюється як "debian". Я спробував обидва одночасно, але все ж хост встановлений як "debian".

Витяг із посібника Debian про файл попередньої конфігурації :

Якщо ви хочете примусити ім'я хоста, незалежно від того, що повертається або DHCP-сервер, або що є зворотним записом DNS для IP-адреси, відмініть коригування наступного рядка

di netcfg / рядок імені хоста somehost

Це помилка чи мені просто не пощастило?

Відповіді:


10

Не рішення, а обхід

Я теж зіткнувся з подібною проблемою, і я обійшов її, встановивши ім'я хоста після встановлення через наступні рядки, додані в кінці мого pressed.cfg:

d-i pressed/late_command string\
    in-target /bin/bash -c 'echo desired_name > /etc/hostname'

Це in-targetнеобхідно для того, щоб /посилання на цільову файлову систему (яка з часом стане вашою кореневою файловою системою), яка зазвичай відображається як /targetпід час встановлення.


1
Я також використав це , але з невеликою зміною , так що ім'я хоста автоматично встановлюється з DNS пошуку: d-i pressed/late_command string in-target /bin/bash -c 'echo $(dig +short -x $(facter ipaddress)) | sed -e \'s/\.$//\' > /etc/hostname'. Для отримання IP-адреси використовується "facter" від puppetlabs, але ви можете зробити щось подібне, використовуючи ip addrі sed.
Девід Гарднер

9

Якщо ви використовуєте мережу (з PXE та друзями), ім'я хоста встановлюється перед отриманням попередньо встановленого файлу, тому ім'я хоста слід встановити в командному рядку ядра таким чином:

hostname=myhostname domain=mydomain

З моменту ознайомлення з додатком B (про попередню підготовку) посібника для встановлення debian:

Важливою відмінністю між методами попереднього налаштування є точка, в яку завантажується та обробляється файл попередньої конфігурації. Для попереднього попереднього встановлення це правильно на початку установки, перш ніж перше питання навіть буде задано. Для попереднього попереднього завантаження файлів це після завантаження CD або CD. Попереднє попереднє налаштування мережі - це лише після налаштування мережі.


4

Я виявив, що ця проблема усунулася, коли я видаляв priority=criticalз аргументів, що передавали ядро ​​в командному рядку net install (через записи каталогу pxelinux.cfg).

Я припускаю, що це означає, що запитання, яке задає ім'я хоста, отримало пріоритет, менший, ніж "критичний", і таким чином заповнюється відповіддю за замовчуванням.

Якщо ви внесете ці зміни, ви можете виявити, що вам доведеться заздалегідь заздалегідь задати деякі інші, ніж критичні, відповіді на інші питання, які пізніше в процесі встановлення ...


3

Це обмеження для debian-installer. До того моменту, коли ви отримаєте ваш попередньо налаштований файл конфігурації з мережі, netcfgвін вже виконав свою роботу і пішов, тому значення не буде перезавантажено.

дещо офіційним хитком є використання у вашому preseed.cfgрядку:

d-i preseed/run string http://example.net/d-i/jessie/preseed.sh

і в цьому preseed.shтоді вкажіть:

#!/bin/sh
kill-all-dhcp; netcfg

Таким чином, коли встановлена мережа і preseed.cfgвитягується, preseed.shбуде також отримувати і бігти, так що буде перезавантажений , netcfgякий буде зчитувати всі автоматизируемой значення netcfg/*і правильно налаштувати їх ( /etc/hostsname, /etc/hosts, /etc/network/interfacesякщо ви встановлюєте статичний IP конфігурації з допомогою автоматизируемой і т.д.)


Це можна зробити без окремого файлу: d-i preseed/early_command string kill-all-dhcp; netcfgу попередньо встановленому файлі достатньо. Тестували за допомогою Stretch в автоматизованій мережі.
scy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.