# Erased /etc/rc.conf how to recover it?



## BeastieBoy (Jun 27, 2010)

It's all in the title. Is there a way to regenerate my /etc/rc.conf file? The FreeBSD box is still running, I just can reboot it anymore


----------



## BeastieBoy (Jun 27, 2010)

Well by copying and editing /etc/defaults/rc.conf I could remember some stuff like enable_sshd="YES" and hostname.

Is there somewhere a blueprint of a default FreeBSD Release 8 file? My box is only a few days old, so /etc/rc.conf should be (exactly?) the same as a mint one. I didn't add manually anything to that file yet.


----------



## fwaggle (Jun 27, 2010)

A default rc.conf is basically empty for all intents and purposes - the stuff from /etc/defaults/rc.conf is imported first, and then things are overridden by /etc/rc.conf. Put your sshd_enable in there, and your ifconfig details for your network interfaces and your system should boot fine, I think.


----------



## BeastieBoy (Jun 27, 2010)

No mine had some stuff regarding network, but I don't remember exactly what.

Now I have:

```
hostname
firewall_enable
ifconfig_lo0
named_enable
sshd_enable
timed_enable
ipv6_enable
sendmail_enable
```
But I know I'm missing stuff.


----------



## zeiz (Jun 28, 2010)

```
hostname="yourhost.YOURDOMAIN" 
ifconfig_lo0="DHCP"
sshd_enable="YES"
```
You can find yourhost.YOURDOMAIN by running *uname -a*


----------



## sk8harddiefast (Jun 28, 2010)

my rc.conf so change it to yours.

```
hostname="bsdserver.bsd" [B]Change it to yours as zeiz said[/B]
ifconfig_re0="192.168.1.4 netmask 255.255.255.0" [B]re0 is my module because i have realtek chipset. Change re0 to yours[/B]
ipv6_enable="YES"
font8x8="NO" [B]if yes that change the font on console[/B]
defaultrouter="192.168.1.1" [B]Change it to your routers ip[/B]
moused_enable="YES"
hald_enable="YES"
linux_enable="YES" [B]if you choosed linux compatibility say yes. Otherwise say no here[/B]
dbus_enable="YES"
```


----------



## Parad1se (Jul 6, 2010)

I have had my share of empty files in FreeBSD.. (before i started typing 'sync' every chance i get) 

Your root partition is standard (512MB)? 
If so.. you can dump the disk to files on another partition. (you can script.. use DD to make files of 1MB a piece)

then you can use grep "sshd_enable" in those files to find the one where you data is in.
Then open the file in some editor and cut out all that's not from the rc.conf file.



I have even used this method to get files of a server that was already formatted and reinstalled.


----------



## kisscool-fr (Jul 6, 2010)

Don't know if you can restore the file as it was just before the deletion but the basics should be :


```
keymap="..."
hostname="..."
defaultrouter="..."
ifconfig_if0="..."
...

sshd_enable="YES"
```

Then you have to remember what is running on it.

Take a look in /usr/local/etc/rc.d directory if you installed something new and to the output of the ps command.


----------



## fronclynne (Jul 7, 2010)

See what [cmd=""]ifconfig[/cmd] says to get an idea about your network settings, use top(1) in verbose mode or try lots of ps(1) flags to poke around ([red]-aux[/red] is pretty comprehensive) and see what daemons are running.  I have a few optional daemons like nfsd, sshd, ntpd, mountd, & powerd here, yours may vary.

Good luck.  Once every few days I create a bzipped tar of /etc/, so I don't have to worry about accidental deletions like that.  It takes up all of about 300k (/usr/local/bin/7z gets it down to 258k, which is hardly worth the hassle).  Just backing up the user-modified files is left as an exercise for the reader.


----------



## Hakaba (May 1, 2021)

I just made this mistake...
And to avoid future issue like this, I will use GIT right now... (maybe a good default idea for FreeBSD 14 ?)
Thanks for all your suggests to retrieve my /etc/rc.conf


----------



## Deleted member 67440 (May 1, 2021)

fronclynne said:


> See what [cmd=""]ifconfig[/cmd] says to get an idea about your network settings, use top(1) in verbose mode or try lots of ps(1) flags to poke around ([red]-aux[/red] is pretty comprehensive) and see what daemons are running.  I have a few optional daemons like nfsd, sshd, ntpd, mountd, & powerd here, yours may vary.
> 
> Good luck.  Once every few days I create a bzipped tar of /etc/, so I don't have to worry about accidental deletions like that.  It takes up all of about 300k (/usr/local/bin/7z gets it down to 258k, which is hardly worth the hassle).  Just backing up the user-modified files is left as an exercise for the reader.


You can make 1-hours backup (forever) in not much more than 300KB with zpaq/zpaqfranz
Even of a full /usr too


----------



## mer (May 2, 2021)

If you are using ZFS, snapshots are your friend. 
So are Boot Environments.  Especially Boot Environments.
A practice that has helped me for a long time is:
After a fresh install and verify everything is running correctly, create a new boot environment, to preserve the current working one.
Before an upgrade of a running system, create a boot environment to preserve the current working one and then do the upgrade.  I tend to upgrade into the "default" BE.  Others will create a new BE, chroot into it and then upgrade (I think vermaden has a page showing this).
Why do this?  You can use the command bectl or beadm to actually temp mount a BE and go look at it.  You can modify it, look at it, copy files from it;  it's your instantly available backup.

Now, what may help you:
don't reboot yet 
run the command "service -e" to get a list of enabled services.  By comparing them to /etc/defaults/rc.conf you get an idea of what you explicitly enabled (if it is disabled by default).

A fresh install typically doesn't have much more than
hostname="whatever your host is called"  You can use the hostname command to figure this out
ifconfig_em0="DHCP"  This is correct if you are using DHCP, the trailing part is the interface, ifconfig helps to figure that out
#ifconfig_em0="inet 192.168.250.37 netmask 255.255.255.0"  This and the following are how you do static IPV4 and route
#defaultrouter="192.168.250.50"   Command netstat -rn can tell you this
sshd_enable="YES"   Obvious what this does
moused_enable="YES"   Enables the mouse on console so you can cut and paste
ntpd_enable="YES"    Obviously enables NTP
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
zfs_enable="YES"   You need this if you are using ZFS
kld_list="/boot/modules/i915kms.ko"   This is how you load drm-kmod stuff
syslogd_flags=" -b 127.0.0.1"   This forces syslog to only listen on local host


----------



## vermaden (May 2, 2021)

mer said:


> Before an upgrade of a running system, create a boot environment to preserve the current working one and then do the upgrade. I tend to upgrade into the "default" BE. Others will create a new BE, chroot into it and then upgrade (I think _*[FONT=monospace]vermaden[/FONT]*_ has a page showing this).


Yes - here it is - https://vermaden.wordpress.com/2021/02/23/upgrade-freebsd-with-zfs-boot-environments/


----------



## Deleted member 67440 (May 2, 2021)

zpaqfranz
					






					share.vidyard.com


----------



## Hakaba (May 2, 2021)

Another tip is `bsdconfig` -> C -> 2 to see all available options.


----------



## gotnull (May 2, 2021)

@fcorbelli 
First time I hear of this tool "zpaq", it looks like interesting.
I checked its git repo but the last commit was in 2016 would you say that it is not maintained anymore ?








						GitHub - zpaq/zpaq: ZPAQ's complete code history mirror
					

ZPAQ's complete code history mirror. Contribute to zpaq/zpaq development by creating an account on GitHub.




					github.com


----------



## Deleted member 67440 (May 2, 2021)

gotnull said:


> @fcorbelli
> First time I hear of this tool "zpaq", it looks like interesting.
> I checked its git repo but the last commit was in 2016 would you say that it is not maintained anymore ?
> 
> ...


There is a BSD port with a lot of other things, zpaqfranz, my fork.
You can find on github (not the last version)








						GitHub - fcorbelli/zpaqfranz: Deduplicating archiver with encryption and paranoid-level tests. Swiss army knife for the serious backup and disaster recovery manager. Ransomware neutralizer. Win/Linux/Unix
					

Deduplicating archiver with encryption and paranoid-level tests. Swiss army knife for the serious backup and disaster recovery manager. Ransomware neutralizer. Win/Linux/Unix - GitHub - fcorbelli/z...




					github.com
				




In a nutshell: it's like a sort of 7z or rar with snapshots

Very quick and very dirty

```
mkdir /tmp/testme
cd /tmp/testme
wget http://www.francocorbelli.it/zpaqfranz/ports-51.10.tar.gz
tar -xvf ports-51.10.tar.gz
make install clean
```


----------



## jmos (May 2, 2021)

Instead of any tool, GIT or trying to find out the deleted values I would recommend to use a simple backup.


----------



## mer (May 2, 2021)

jmos said:


> Instead of any tool, GIT or trying to find out the deleted values I would recommend to use a simple backup.


That is a reasonable thought, but I think the OP basically has/had a running system and deleted rc.conf so no backups, no save of local modifications.

I'd guess that going forward the OP "won't do that"


----------



## gotnull (May 2, 2021)

fcorbelli said:


> In a nutshell: it's like a sort of 7z or rar with snapshots


indeed it looks like it.

Thank you for the link.


----------



## chrcol (May 3, 2021)

zfs snapshots are very handy for these sort of things.


----------



## Deleted member 30996 (May 3, 2021)

I would open a text editor and make one. Either from the desktop or Single User Mode using `ee`. 
It's not that big a deal to fix any more than if you failed to quote a line while editing it and got that message on reboot.

I keep a copy of /etc on USB stick to update all my system files after a rebuild. Here's the /etc/rc.conf from the machine I'm using now:


```
hostname="bakemono"
ifconfig_em0="DHCP"
ntpd_enable="YES"
ntpd_sync_on_start="YES"
powerd_enable="YES"
powerd_flags="-a hiadaptive -b adaptive"
dumpdev="NO"
sendmail_enable="NO"
syslogd_flags="-c -ss"
microcode_update_enable="YES"
hald_enable="YES"
dbus_enable="YES"
linux_enable="YES"
avahi_daemon_enable="YES"
fsck_enable="YES"
swapexd_enable="YES"
clean_tmp_X="YES"
clear_tmp_enable="YES"
devd_enable="YES"
devfs_system_ruleset="devfsrules_common"
tcp_drop_synfin="YES"
pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""
ssh_enable="NO"
```


----------



## Hakaba (May 3, 2021)

jmos said:


> Instead of any tool, GIT or trying to find out the deleted values I would recommend to use a simple backup.


You are right. I decide to reinstall FreeBSD 13 from scratch on my personal laptop and this happened before I made the first backup. I have a backup of the previous install but without last changes (trying to enable 2 screen on this laptop !). I lost nothing with this bad experience...
My servers are still in FreeBSD 12 and have backup.


----------

