Root deviceにzfs を利用している場合、/boot/loader.confでzfs_load=“YES”
が必須になる。間違えてこれを削除してしまった場合、復旧が面倒になるので注意。
zpool import -R /mnt zroot
と zfs mount
を実行するMS-01に載っている Mediatek MT7922 を Intel AX210NGW に換装したので、その設定を。
なお、FreeBSD 14.0-RELEASEで試している。
sysctl net.wlan.devices
を実行net.wlan.devices: iwlwifi0
が返ってきたので、WiFi Deviceは iwlwifi0ifconfig wlan0 create wlandev iwlwifi0 wlanmode sta country JP
iwlwifi0: WRT: Invalid buffer destination iwlwifi0: WFPM_UMAC_PD_NOTIFICATION: 0x20 iwlwifi0: WFPM_LMAC2_PD_NOTIFICATION: 0x1f iwlwifi0: WFPM_AUTH_KEY_0: 0x90 iwlwifi0: CNVI_SCU_SEQ_DATA_DW9: 0x0 wlan0: Ethernet address: XX:XX:XX:XX:XX:XX
ifconfig wlan0 up
wpa_passphrase SSID PASS > /etc/wpa_supplicant.conf
chmod 600 /etc/wpa_supplicant.conf; chown root:wheel /etc/wpa_supplicant.conf
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf
ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument ioctl[SIOCS80211, op=20, val=0, arg_len=7]: Invalid argument
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=0 ether XX:XX:XX:XX:XX:XX inet6 fe80::XXXX:XXXX:XXXX:XXXX%wlan0 prefixlen 64 scopeid 0x6 groups: wlan ssid XXXXXXXXXXXXXXXX channel XX (XXXX MHz 11a) bssid XX:XX:XX:XX:XX:XX regdomain JAPAN country JP authmode WPA2/802.11i privacy ON deftxkey UNDEF AES-CCM 3:128-bit txpower 23 bmiss 7 mcastrate 6 mgmtrate 6 scanvalid 60 wme roaming MANUAL parent interface: iwlwifi0 media: IEEE 802.11 Wireless Ethernet OFDM/36Mbps mode 11a status: associated nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
dhclient wlan0
wlans_iwlwifi0="wlan0" create_args_wlan0="wlanmode sta country JP" ifconfig_wlan0="mode 11a WPA SYNCDHCP"
FreeBSD 11.0以降では、TCPのCongestion Control機構としてDC-TCPが利用できる。 これを利用する設定をいかに記載しておく。
なお、Install時の標準は、NewReno。
# kldload cc_dctcp # sysctl -w net.inet.tcp.cc.algorithm=dctcp # sysctl -w net.inet.tcp.ecn.enable=1
# sysctl net.inet.tcp.ecn.enable 1
/boot/loader.conf
cc_dctcp_load="YES"
/etc/sysctl.conf
net.inet.tcp.cc.algorithm=dctcp net.inet.tcp.ecn.enable=1
起動時にこんなエラーがでた。
# fsck -y /dev/ada0p1 ** /dev/ada0p1 USE JOURNAL? yes ** SU+J Recovering /dev/ada0p1 ** Reading 33554432 byte journal from inode 5 RECOVER? yes ** Building recovery table. ** Resolving unreferenced inode list. ** Processing journal entries fsck_ufs: Directory 43643675 name not found #
これが出ると、fsckで復旧できない。
このada0p1はJournalをenableにしており、/にmountしてあった。
対処は
これで問題が解決した。
作成したFreeBSD 11.0にHDDを追加した時に行う作業。
さすがに bsdlabel/disklabel の時代でもあるまいということで、GEOM を使ってみる。
reboot
するなどして) 接続した Disk を認識させる/dev/ada1
としよう。gpart show
を実行し、 ada1
が見えているかを確認# gpart show => 34 41942973 ada0 GPT (20G) 34 1024 1 freebsd-boot (512K) 1058 39844864 2 freebsd-ufs (19G) 39845922 2097084 3 freebsd-swap (1.0G) 41943006 1 - free - (512B)
ada1
は見えないgpart create -s GPT ada1
を実行。ada1 created
などと出力されればOK# gpart show => 34 41942973 ada0 GPT (20G) 34 1024 1 freebsd-boot (512K) 1058 39844864 2 freebsd-ufs (19G) 39845922 2097084 3 freebsd-swap (1.0G) 41943006 1 - free - (512B) => 40 209715120 ada1 GPT (100G) 40 209715120 - free - (100G)
gpart destroy ada1
などとすればよいgpart add -t freebsd-ufs ada1
を実行すると、 Partition を確保する。# gpart show ada1 => 40 209715120 ada1 GPT (100G) 40 209715120 1 freebsd-ufs (100G)
gpart modify -i 1 -l update-data ada1
などとするgpart show
した時の 左から3番目のフィールド(通常は1〜3程度だろう)の値を指定するgpart show -l
などとする# gpart show -l => 34 41942973 ada0 GPT (20G) 34 1024 1 (null) (512K) 1058 39844864 2 (null) (19G) 39845922 2097084 3 (null) (1.0G) 41943006 1 - free - (512B) => 40 209715120 ada1 GPT (100G) 40 209715120 1 update-data (100G)
gpart delete -i 1 ada1
などとするnewfs -J -U /dev/ada1p1
で、gjournal + soft-update を On にするtunefs -p /dev/ada1p1
などとする# tunefs -p /dev/ada1p1 tunefs: POSIX.1e ACLs: (-a) disabled tunefs: NFSv4 ACLs: (-N) disabled tunefs: MAC multilabel: (-l) disabled tunefs: soft updates: (-n) enabled tunefs: soft update journaling: (-j) disabled tunefs: gjournal: (-J) enabled tunefs: trim: (-t) disabled tunefs: maximum blocks per file in a cylinder group: (-e) 4096 tunefs: average file size: (-f) 16384 tunefs: average number of files in a directory: (-s) 64 tunefs: minimum percentage of free space: (-m) 8% tunefs: space to hold for metadata blocks: (-k) 6408 tunefs: optimization preference: (-o) time tunefs: volume label: (-L)
freebsd-update fetch
を実行してfreebsd-update install
するのが基本freebsd-update rollback
するFreeBSDの起動時処理を大雑把に言うと以下のとおり
各種daemonの起動には、/etc/rc.d 及び /usr/local/etc/rc.d に格納されている各種起動scriptを利用する。 最近のFreeBSD (おそらくFreeBSD 9.0以降) では、このscriptを呼び出すために、service コマンドが実装されている。起動時のscriptの実行順序を確認するには、service -eを実行すると良い
このscriptは、自身が実行されるタイミングを記載することが可能。
# REQUIRE: foo bar
このScriptはfoo,barが実行されたことを要求する# BEFORE: foo bar
このScriptはfoo,barが実行される前に実行されなければならない従って、起動順序などを細かく考慮したい場合には、
必要がある。