preseed.cfg ignoruje ustawienie nazwy hosta

13

Instaluję Debian Wheezy (netinstall) w VirtualBox przy użyciu preseed.cfg.

Próbowałem zarówno d-i netcfg/get_hostname string somehosti d-i netcfg/get_hostname string somehost, ale w obu przypadkach host zostanie ustawiony jako „Debian”. Próbowałem obu jednocześnie, ale host jest ustawiony jako „debian”.

Fragment przewodnika Debiana na temat pliku konfiguracji wstępnej :

Jeśli chcesz wymusić nazwę hosta, bez względu na to, co zwróci serwer DHCP lub jaki jest odwrotny wpis DNS dla adresu IP, odkomentuj i dostosuj następujący wiersz

di netcfg / hostname string somehost

Czy to błąd, czy po prostu mam pecha?

Todd
źródło

Odpowiedzi:

10

Nie rozwiązanie, ale obejście

Ja również napotkałem podobny problem i obejrzałem go, ustawiając nazwę hosta po instalacji za pomocą następujących wierszy dodanych na końcu mojego pressed.cfg:

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

Jest in-targetto konieczne, aby /odnosiło się do docelowego systemu plików (który ostatecznie stanie się głównym systemem plików), który zwykle pojawia się tak, jak /targetpodczas instalacji.

Joseph R.
źródło
1
Używałem również to, ale z niewielkimi zmianami, tak że nazwa hosta jest automatycznie ustawiony z wyszukiwania DNS: d-i pressed/late_command string in-target /bin/bash -c 'echo $(dig +short -x $(facter ipaddress)) | sed -e \'s/\.$//\' > /etc/hostname'. Korzysta z „facter” z puppetlabs, aby uzyskać adres IP, ale możesz zrobić coś podobnego, używając ip addri sed.
David Gardner
9

Jeśli wykonujesz rozruch sieciowy (z PXE i przyjaciółmi), nazwa hosta jest konfigurowana przed pobraniem wstępnie zapisanego pliku, więc nazwa hosta powinna być ustawiona w wierszu komend jądra w następujący sposób:

hostname=myhostname domain=mydomain

Od wprowadzenia dodatku B (dotyczącego wstępnego siewu) podręcznika instalatora Debiana:

Ważną różnicą między metodami wstępnego zbioru jest punkt, w którym plik wstępnej konfiguracji jest ładowany i przetwarzany. W przypadku initrd wstępnego siewu jest to tuż na początku instalacji, zanim zostanie zadane pierwsze pytanie. W przypadku wstępnego zbioru plików następuje to po załadowaniu dysku CD lub obrazu CD. W przypadku wstępnego podsiewu sieci następuje to dopiero po skonfigurowaniu sieci.

pseudolosowy
źródło
4

Odkryłem, że ten problem zniknął, gdy usunąłem priority=criticalargumenty, które przekazywałem do jądra w wierszu polecenia instalacji sieciowej (poprzez wpisy katalogu pxelinux.cfg).

Zakładam, że oznacza to, że pytanie, które pyta o nazwę hosta, ma priorytet niższy niż „krytyczny”, a zatem zostaje wypełniona domyślną odpowiedzią.

Jeśli dokonasz tej zmiany, może się okazać, że będziesz musiał przygotować inne mniej krytyczne odpowiedzi na inne pytania w dalszej części procesu instalacji ...

Tim Small
źródło
3

Jest to ograniczenie instalatora Debiana. Do czasu pobrania wstępnie skonfigurowanego pliku konfiguracji z sieci netcfgjuż wykonał on swoją pracę i nie ma go, więc nie będzie mógł ponownie pobrać wartości.

nieco oficjalnym kludge jest użycie w twojej preseed.cfglinii:

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

a preseed.shnastępnie określ:

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

W ten sposób, gdy sieć jest założona i preseed.cfgjest naciągane, preseed.shbędzie również pobrać i uruchomić, więc będzie restart netcfgktóre następnie odczytać wszystkie wartości preseed dla netcfg/*i skonfigurować je prawidłowo ( /etc/hostsname, /etc/hosts, /etc/network/interfacesjeśli jesteś ustawienie statycznego IP konfiguracja poprzez preseed etc)

Matija Nalis
źródło
Możesz to zrobić bez osobnego pliku: d-i preseed/early_command string kill-all-dhcp; netcfgw przygotowanym pliku wystarczy. Testowane za pomocą Stretch w automatycznej instalacji sieciowej.
scy