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