Today I tested the new GNOME environment and these are the screeenshot I get:
Look's good ..., see the tour idea ...
tutorials, tips, tricks, commands, programming, linux, windows, database, sql, python, programming language, Fedora, drawing, painting, tutorial, tutorials
[root@fedora mythcat]# dnf5 clean all
[root@fedora mythcat]# dnf5 install qemu-system-arm
[root@fedora mythcat]# dnf5 install arm-none-eabi-gcc gcc-arm-linux-gnu gcc-c++-arm-linux-gnu
[root@fedora mythcat]# dnf5 install arm-none-eabi-newlib.noarch
...
[root@fedora mythcat]# dnf5 install binutils-devel
[mythcat@fedora mythcat]$ mkdir ARMProjects
[mythcat@fedora mythcat]$ cd ARMProjects/
[mythcat@fedora ARMProjects]$ qemu-system-arm --version
QEMU emulator version 9.1.0 (qemu-9.1.0-2.fc42)
[mythcat@fedora ARMProjects]$ cat hello.s
.global _start
_start:
mov r0, #1
mov r7, #4
str r0, [r7]
bx lr
- global _start: This declares the _start label as global, making it
accessible from outside the file.
- _start:: This marks the beginning of the program.
- mov r0, #1: Moves the immediate value 1 into register R0.
- mov r7, #4: Moves the immediate value 4 into register R7. This represents the system call number for write().
- str r0, [r7]: Stores the contents of R0 (which contains 1) into the memory address pointed to by R7.
- bx lr: Branches to the address in Link Register (LR). In this case, it loops indefinitely because there's no return instruction.
[mythcat@fedora ARMProjects]$ arm-none-eabi-gcc -nostartfiles -lc hello.s -o hello.o
[mythcat@fedora ARMProjects]$ ls
hello.o hello.s
[mythcat@fedora ARMProjects]$ nm hello.o
00008000 t $a
00009010 T __bss_end__
00009010 T _bss_end__
00009010 T __bss_start
00009010 T __bss_start__
00009010 T __data_start
00009010 T _edata
00009010 T __end__
00009010 T _end
00080000 B _stack
00008000 T _start
[mythcat@fedora ARMProjects]$ objdump -f hello.o
hello.o: file format elf32-little
architecture: UNKNOWN!, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00008000
[mythcat@fedora ~]$ sudo dmesg | grep Error
[ 1.274790] tpm tpm0: [Hardware Error]: Adjusting reported timeouts: A 750->750000us B 2000->2000000us C 750->750000us D 750->750000us
[ 2.240276] ima: Error Communicating to TPM chip
[ 2.243913] ima: Error Communicating to TPM chip
[ 2.246923] ima: Error Communicating to TPM chip
[ 2.249919] ima: Error Communicating to TPM chip
[ 2.253088] ima: Error Communicating to TPM chip
[ 2.255923] ima: Error Communicating to TPM chip
[ 2.258921] ima: Error Communicating to TPM chip
[ 2.261938] ima: Error Communicating to TPM chip
[ 2.415255] RAS: Correctable Errors collector initia
[root@fedora mythcat]# dnf5 upgrade
...
[root@fedora mythcat]# dnf install tpm-tools
...
[mythcat@fedora ~]$ ls /dev/tpm*
/dev/tpm0
[mythcat@fedora ~]$ lsmod | grep tpm
tpm_infineon 20480 0
[mythcat@fedora ~]$ tpm_
tpm_changeownerauth tpm_nvwrite tpm_setclearable
tpm_clear tpm_resetdalock tpm_setenable
tpm_createek tpm_restrictpubek tpm_setoperatorauth
tpm_getpubek tpm_restrictsrk tpm_setownable
tpm_nvdefine tpm_revokeek tpm_setpresence
tpm_nvinfo tpm_sealdata tpm_takeownership
tpm_nvread tpm_selftest tpm_unsealdata
tpm_nvrelease tpm_setactive tpm_version
[root@fedora mythcat]# dnf install tcsd
...
[mythcat@fedora ~]$ sudo usermod -a -G tss $USER
[root@fedora mythcat]# systemctl daemon-reload
[root@fedora mythcat]# systemctl start tcsd
[root@fedora mythcat]# systemctl status tcsd
[mythcat@fedora ~]$ tpm_version
TPM 1.2 Version Info:
Chip Version: 1.2.1.2
Spec Level: 2
Errata Revision: 0
TPM Vendor ID: IFX
TPM Version: 01010000
Manufacturer Info: 49465800
[mythcat@fedora ~]$ sudo dnf5 search tpm2-tools
Updating and loading repositories:
Repositories loaded.
Matched fields: name (exact)
tpm2-tools.x86_64: A bunch of TPM testing toolS build upon tpm2-tss
[mythcat@fedora ~]$ sudo dnf5 install tpm2-tools
...
Package "tpm2-tools-5.7-2.fc41.x86_64" is already installed.
[mythcat@fedora ~]$ sudo tpm2_startup
ERROR:tcti:src/tss2-tcti/tcti-device.c:455:Tss2_Tcti_Device_Init() Failed to open specified TCTI device file /dev/tpmrm0: No such file or directory
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:149:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-device.so.0
ERROR:tcti:src/tss2-tcti/tcti-device.c:455:Tss2_Tcti_Device_Init() Failed to open specified TCTI device file /dev/tpm0: Device or resource busy
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:149:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-device.so.0
ERROR:tcti:src/tss2-tcti/tcti-device.c:455:Tss2_Tcti_Device_Init() Failed to open specified TCTI device file /dev/tcm0: No such file or directory
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:149:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-device.so.0
WARNING:tcti:src/util-io/io.c:262:socket_connect() Failed to connect to host 127.0.0.1, port 2321: errno 111: Connection refused
ERROR:tcti:src/tss2-tcti/tcti-swtpm.c:617:Tss2_Tcti_Swtpm_Init() Cannot connect to swtpm TPM socket
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:149:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-swtpm.so.0
WARNING:tcti:src/util-io/io.c:262:socket_connect() Failed to connect to host 127.0.0.1, port 2321: errno 111: Connection refused
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:149:tcti_from_file() Could not initialize TCTI file: libtss2-tcti-mssim.so.0
ERROR:tcti:src/tss2-tcti/tctildr-dl.c:263:tctildr_get_default() No standard TCTI could be loaded
ERROR:tcti:src/tss2-tcti/tctildr.c:477:tctildr_init_context_data() Failed to instantiate TCTI
ERROR: Could not load tcti, got: "(null)"
import pygame
from pygame.math import Vector2
import random
import os
username = os.getlogin()
# Initialize Pygame
pygame.init()
# Set up the display
width, height = 800, 800
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Eight-in-a-Row")
# Font setup
font = pygame.font.Font(None, 74)
# Colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
BLUE = (0, 0, 120)
# Game board dimensions
BOARD_WIDTH = 8
BOARD_HEIGHT = 8
class Player:
def __init__(self, color, is_computer=False):
self.color = color
self.pieces = set()
self.is_computer = is_computer
self.svg_image = self.load_svg_image()
def add_piece(self, x, y):
self.pieces.add((x, y))
# def draw_pieces(self):
# for x, y in self.pieces:
# pygame.draw.circle(screen, self.color,
# (x * width // BOARD_WIDTH + width // (2 * BOARD_WIDTH),
# y * height // BOARD_HEIGHT + height // (2 * BOARD_HEIGHT)),
# min(width, height) // (2 * BOARD_WIDTH) - 5)
def load_svg_image(self):
if self.color == BLUE:
svg_path = "penguin-svgrepo-com.svg"
elif self.color == WHITE:
svg_path = "cube-svgrepo-com.svg"
else:
svg_path = "cube-svgrepo-com.svg"
return pygame.image.load(svg_path)
def draw_pieces(self):
piece_size = min(width, height) // (BOARD_WIDTH) - 10
for x, y in self.pieces:
pos = Vector2(x * width // BOARD_WIDTH + width // (2 * BOARD_WIDTH),
y * height // BOARD_HEIGHT + height // (2 * BOARD_HEIGHT))
scaled_image = pygame.transform.scale(self.svg_image, (piece_size, piece_size))
image_rect = scaled_image.get_rect(center=pos)
screen.blit(scaled_image, image_rect)
def make_move(self, board):
if self.is_computer:
empty_squares = [(x, y) for x in range(BOARD_WIDTH) for y in range(BOARD_HEIGHT)
if (x, y) not in board[0] and (x, y) not in board[1]]
if empty_squares:
return random.choice(empty_squares)
return None
def check_winner(player):
directions = [(0, 1), (1, 0), (1, 1), (1, -1)]
for x, y in player.pieces:
for dx, dy in directions:
if all((x + i*dx, y + i*dy) in player.pieces for i in range(8)):
return True
return False
def display_winner(winner):
text = font.render(f"Player {winner} wins!", True, [145,190,190])
text_rect = text.get_rect(center=(width // 2, height // 2))
screen.blit(text, text_rect)
pygame.display.flip()
pygame.time.wait(3000) # Display the message for 3 seconds
# Create players
player1 = Player(BLUE)
player2 = Player(WHITE, is_computer=True)
# Game loop
running = True
turn = 0
game_over = False
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONDOWN and not game_over:
if turn % 2 == 0: # Human player's turn
mouse_x, mouse_y = event.pos
column = mouse_x // (width // BOARD_WIDTH)
row = mouse_y // (height // BOARD_HEIGHT)
if (column, row) not in player1.pieces and (column, row) not in player2.pieces:
player1.add_piece(column, row)
if check_winner(player1):
# print("Player 1 wins!")
display_winner(username)
game_over = True
turn += 1
if not game_over and turn % 2 == 1: # Computer player's turn
move = player2.make_move((player1.pieces, player2.pieces))
if move:
player2.add_piece(*move)
if check_winner(player2):
# print("Player 2 (Computer) wins!")
display_winner("Computer")
game_over = True
turn += 1
screen.fill(BLACK)
# Draw game board
for i in range(BOARD_WIDTH + 1):
pygame.draw.line(screen, WHITE, (i * width // BOARD_WIDTH, 0), (i * width // BOARD_WIDTH, height), 2)
for i in range(BOARD_HEIGHT + 1):
pygame.draw.line(screen, WHITE, (0, i * height // BOARD_HEIGHT), (width, i * height // BOARD_HEIGHT), 2)
# Draw pieces
player1.draw_pieces()
player2.draw_pieces()
pygame.display.flip()
pygame.quit()
[mythcat@fedora fedora_game]$ uname -a
Linux fedora 6.11.0-63.fc42.x86_64 #1 SMP PREEMPT_DYNAMIC Sun Sep 15 17:14:12 UTC 2024 x86_64 GNU/Linux
Python 3.12.3 (main, Apr 17 2024, 00:00:00) [GCC 14.0.1 20240411 (Red Hat 14.0.1-0)] on linux
[root@fedora mythcat]# nano /etc/conky/conky.conf
-- Conky, a system monitor https://github.com/brndnmtthws/conky
--
-- This configuration file is Lua code. You can write code in here, and it will
-- execute when Conky loads. You can use it to generate your own advanced
-- configurations.
--
-- Try this (remove the `--`):
--
-- print("Loading Conky config")
--
-- For more on Lua, see:
-- https://www.lua.org/pil/contents.html
conky.config = {
alignment = 'top_left',
background = false,
border_width = 1,
cpu_avg_samples = 2,
default_color = 'white',
default_outline_color = 'white',
default_shade_color = 'white',
double_buffer = true,
draw_borders = false,
draw_graph_borders = true,
draw_outline = false,
draw_shades = false,
extra_newline = false,
font = 'DejaVu Sans Mono:size=12',
gap_x = 60,
gap_y = 60,
minimum_height = 5,
minimum_width = 5,
net_avg_samples = 2,
no_buffers = true,
out_to_console = false,
out_to_ncurses = false,
out_to_stderr = false,
out_to_x = true,
own_window = true,
own_window_class = 'Conky',
own_window_type = 'desktop',
show_graph_range = false,
show_graph_scale = false,
stippled_borders = 0,
update_interval = 1.0,
uppercase = false,
use_spacer = 'none',
use_xft = true,
}
conky.text = [[
${color grey}Info:$color ${scroll 32 Conky $conky_version - $sysname $nodename $kernel $machine}
$hr
${color grey}Uptime:$color $uptime
${color grey}Frequency (in MHz):$color $freq
${color grey}Frequency (in GHz):$color $freq_g
${color grey}RAM Usage:$color $mem/$memmax - $memperc% ${membar 4}
${color grey}Swap Usage:$color $swap/$swapmax - $swapperc% ${swapbar 4}
${color grey}CPU Usage:$color $cpu% ${cpubar 4}
${color grey}Processes:$color $processes ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
/ $color${fs_used /}/${fs_size /} ${fs_bar 6 /}
${color cyan}Networking:
${color grey}Up: ${upspeed ens1} ${color grey} - Down: ${downspeed ens1}
$hr
${color grey}Name PID CPU% MEM%
${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}
]]
import fedmsg
from fedmsg import *
import os
# Set the routing_nitpicky flag to True
os.environ['FEDMSG_ROUTING_NITPICKY'] = 'True'
config = fedmsg.config.load_config([],None)
config['mute'] = True
config['timeout'] = 0
for name, endpoint, topic, msg in fedmsg.tail_messages(**config):
print ("name ", name)
[mythcat@fedora FedoraMessaging]$ python fedmsg_001.py
No routing policy defined for "org.fedoraproject.prod.copr.build.start" but routing_nitpicky is False so the message is being treated as authorized.
name fedora-infrastructure
No routing policy defined for "org.fedoraproject.prod.copr.chroot.start" but routing_nitpicky is False so the message is being treated as authorized.
name fedora-infrastructure
No routing policy defined for "org.fedoraproject.prod.github.check_run" but routing_nitpicky is False so the message is being treated as authorized.
name fedora-infrastructure
No routing policy defined for "org.fedoraproject.prod.github.pull_request_review" but routing_nitpicky is False so the message is being treated as authorized.
name fedora-infrastructure
No routing policy defined for "org.fedoraproject.prod.github.pull_request_review_comment" but routing_nitpicky is False so the message is being treated as authorized.
name fedora-infrastructure ...
[mythcat@fedora PythonProjects]$ mkdir FedoraMessaging
[mythcat@fedora PythonProjects]$ cd FedoraMessaging
[root@fedora FedoraMessaging]# dnf5 install fedora-messaging
Updating and loading repositories:
Repositories loaded.
Package Arch Version Repository Size
Installing:
fedora-messaging noarch 3.5.0-1.fc41 rawhide 38.6 KiB
...
[root@fedora FedoraMessaging]# dnf install rabbitmq-server
[root@fedora FedoraMessaging]# pip install --user fedora-messaging
Collecting fedora-messaging
...
Installing collected packages: pytz, incremental, wrapt, tomli, rpds-py, pyasn1, pika, hyperlink, constantly, attrs,
referencing, pyasn1-modules, automat, twisted, jsonschema-specifications, service-identity, jsonschema, crochet,
fedora-messaging
Successfully installed attrs-23.2.0 automat-22.10.0 constantly-23.10.4 crochet-2.1.1 fedora-messaging-3.5.0
hyperlink-21.0.0 incremental-22.10.0 jsonschema-4.21.1 jsonschema-specifications-2023.12.1 pika-1.3.2 pyasn1-0.6.0
pyasn1-modules-0.4.0 pytz-2024.1 referencing-0.34.0 rpds-py-0.18.0 service-identity-24.1.0 tomli-2.0.1 twisted-24.3.0
wrapt-1.16.0
[mythcat@fedora FedoraMessaging]$ sudo systemctl start rabbitmq-server
from fedora_messaging import api, config
config.conf.setup_logging()
api.consume(lambda message: print(message))
from fedora_messaging import api, config
config.conf.setup_logging()
api.publish(api.Message(topic="hello by mythcat", body={"Hello": "world!"}))
[mythcat@fedora FedoraMessaging]$ python hello_test.py
[fedora_messaging.message INFO] Registering the 'base.message' key as the '<class 'fedora_messaging.message.Message'>'
class in the Message class registry
[fedora_messaging.twisted.protocol INFO] Waiting for 0 consumer(s) to finish processing before halting
[fedora_messaging.twisted.protocol INFO] Finished canceling 0 consumers
[fedora_messaging.twisted.protocol INFO] Disconnect requested, but AMQP connection already gone
from fedora_messaging import api, config
# Setup logging
config.conf.setup_logging()
# Define the callback function to process messages
def process_message(message):
# Check if the message topic matches "hello by mythcat"
if message.topic == "hello by mythcat":
print(f"Received message: {message.body}")
else:
print(f"Ignoring message with topic: {message.topic}")
# Consume messages
api.consume(process_message)
[mythcat@fedora FedoraMessaging]$ python my_consumer.py
[fedora_messaging.twisted.protocol INFO] Successfully registered AMQP consumer Consumer(queue=amq.gen-9lKk7sGeYY5I40bdc5VrzQ,
callback=<function process_message at 0x7fdb0f5da160>)
[fedora_messaging.message INFO] Registering the 'base.message' key as the '<class 'fedora_messaging.message.Message'>'
class in the Message class registry
[fedora_messaging.twisted.consumer INFO] Consuming message from topic hello by mythcat
(message id 800a1540-1e91-4b4a-a125-15e33eebb699)
Received message: {'Hello': 'world!'}
[fedora_messaging.twisted.consumer INFO] Successfully consumed message from topic hello by mythcat
(message id 800a1540-1e91-4b4a-a125-15e33eebb699)