Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions fboss-image/image_builder/bin/build_image_in_container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,10 @@ cp /etc/resolv.conf "${DESCRIPTION_DIR}/root/etc/"
# Add build timestamp to the image
echo "Built on: $(date -u)" >"$DESCRIPTION_DIR/root/etc/build-info"

# Copy rootfs template files to overlay
dprint "Copying rootfs files to overlay..."
cp -R ${DESCRIPTION_DIR}/root_files/* ${DESCRIPTION_DIR}/root/

# Generate the images
PXE_RC=0
ONIE_RC=0
Expand Down
15 changes: 15 additions & 0 deletions fboss-image/image_builder/templates/centos-09.0/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ echo "--- Executing $0 ---"
sed -i 's/^PRETTY_NAME=.*/PRETTY_NAME="FBOSS Distro Image"/' /usr/lib/os-release
sed -i 's/^NAME=.*/NAME="FBOSS Distro Image"/' /usr/lib/os-release

# All dnf invocations with an invalid RPM repo configured will fail. Create the
# metadata for the local_rpm_repo now to prevent that.
createrepo /usr/local/share/local_rpm_repo

# 1. Install our custom kernel RPMs
#
# On purpose we don't install any kernel rpms as part of
Expand Down Expand Up @@ -51,6 +55,17 @@ env -i \
PATH="/usr/bin:/usr/sbin:/bin:/sbin" \
kernel-install add "${KERNEL_VERSION}" "${VMLINUZ_PATH}" --initrd-file "${INITRD_PATH}"

# 5. Enable systemd services
echo "Enabling FBOSS systemd services..."
systemctl enable local_rpm_repo.service
systemctl enable platform_manager.service
systemctl enable data_corral_service.service
systemctl enable fan_service.service
systemctl enable sensor_service.service
systemctl enable fsdb.service
systemctl enable qsfp_service.service
systemctl enable wedge_agent.service

# 6. Use system GRUB 2.06 from packages
# The grub2-efi-x64 package already provides grubx64.efi with all necessary modules
# We just need to make sure the btrfs module is accessible on the EFI partition
Expand Down
1 change: 1 addition & 0 deletions fboss-image/image_builder/templates/centos-09.0/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
<package name="vim"/>
<package name="vi"/>
<package name="btrfs-progs"/>
<package name="createrepo"/>
<package name="re2"/>
<package name="libsodium"/>
<package name="double-conversion"/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[local_rpm_repo]
name=Local Platform RPM repo
baseurl=file:///usr/local/share/local_rpm_repo
gpgcheck=0
metadata_expire=6h
enabled=1
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# /usr/lib/systemd/system/data_corral_service.service
[Unit]
Description=FBOSS Data Corral Service
After=platform_manager.service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/data_corral_service'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Capabilities
AmbientCapabilities=CAP_SYS_RAWIO
CapabilityBoundingSet=CAP_SYS_RAWIO

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=data_corral_service

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# /usr/lib/systemd/system/fan_service.service
[Unit]
Description=FBOSS Fan Service
After=platform_manager.service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/fan_service --subscribe_to_stats_from_fsdb --subscribe_to_qsfp_data_from_fsdb'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=fan_service

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# /usr/lib/systemd/system/fboss_init.service
[Unit]
Description=FBOSS Initialization
DefaultDependencies=no
Before=platform_manager.service
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/local/bin/fboss_init.sh

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=fboss_init

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# /usr/lib/systemd/system/fsdb.service
[Unit]
Description=FBOSS FSDB Service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=simple
LimitNOFILE=65535
LimitCORE=32G

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/fsdb'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=fsdb

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[Unit]
Description=Enable local_rpm_repo

[Service]
Type=oneshot
ExecStart=/usr/bin/createrepo /usr/local/share/local_rpm_repo
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# /usr/lib/systemd/system/platform_manager.service
[Unit]
Description=FBOSS Platform Manager
Before=sensor_service.service
Before=fan_service.service
Before=data_corral_service.service
Before=led_service.service
Before=qsfp_service.service
Before=fruid.service
After=rc-local.service
After=fboss_init.service
Wants=local_rpm_repo.service
Wants=fboss_init.service

StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/platform_manager --run_once=false'

Restart=on-failure
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=platform_manager

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# /usr/lib/systemd/system/qsfp_service.service
[Unit]
Description=FBOSS QSFP Service
After=platform_manager.service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G
MemoryMax=3.75G
MemorySwapMax=0

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/qsfp_service'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=qsfp_service

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# /usr/lib/systemd/system/sensor_service.service
[Unit]
Description=FBOSS Sensor Service
After=platform_manager.service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/sensor_service --subscribe_to_stats_from_fsdb'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=sensor_service

[Install]
WantedBy=multi-user.target
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# /usr/lib/systemd/system/wedge_agent.service
[Unit]
Description=FBOSS Wedge Agent
After=platform_manager.service
After=qsfp_service.service
After=rc-local.service
StartLimitIntervalSec=600
StartLimitBurst=5

[Service]
Type=notify
LimitNOFILE=10000000
LimitCORE=32G
MemoryMax=3.75G
MemorySwapMax=0

Environment="PATH=/opt/fboss/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
Environment="LD_LIBRARY_PATH=/opt/fboss/lib"
WorkingDirectory=/opt/fboss
ExecStart=/bin/bash -c 'source /opt/fboss/bin/setup_fboss_env && exec /opt/fboss/bin/wedge_agent-sai_impl'

Restart=always
RestartSec=30
TimeoutStartSec=180s

# Logging to journald
StandardOutput=journal
StandardError=journal
SyslogIdentifier=wedge_agent

[Install]
WantedBy=multi-user.target
Loading
Loading