Virtualbox가 만들어진지는 꽤 오래되었습니다만 최신 커널에 언제나 대응하고 있었습니다.

다만 이번에는 조금 느려진 탓인지 대응이 좀 늦었군요.

 

커널 업데이트 후에 Virtualbox를 실행할때마다

vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.  If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

요런 문구가 뜨거나

 

메시지대로

sudo /sbin/vboxconfig 명령을 내려서

커널 모듈을 새로 설치를 하려고 하면

vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

요런 문구가 뜰 수가 있습니다.

 

이유는 커널 6.4버전이 되면서 일부 코드가 이사를 가서 그렇습니다.

 

힌트는 https://discussion.fedoraproject.org/t/6-4-10-200-fc38-x86-64-created-problems-with-virtual-box/87492/7

 

6.4.10-200.fc38.x86_64 - created problems with Virtual Box

Works great now, thanks to the package maintainer at rpmfusion. 🤠

discussion.fedoraproject.org

여기서 찾을 수 있는데 

/usr/share/virtualbox/src/vboxhost/vboxnetflt/linux/VBoxNetFlt-linux.c

위 파일을 열고

#include <net/gso.h>

위 코드를 추가해 주시면 됩니다.

 

 

그 다음 sudo /sbin/vboxconfig을 하면 문제없이 빌드가 되면서 실행이 잘 될겁니다.

이상하리 만큼 이번에는 대응이 늦었습니다.

,

CUDA는 언제나 문제를 일으킵니다

윈도우에선 화가날 지경으로 잡혔다 말았다 합니다. 이쪽은 그냥 포기하는게 낫습니다.

리눅스요? 그나마 낫지만 역시 잡혔다 말았다 합니다. 커널 업데이트라도 하면 안 잡히는 일이 잦아집니다

 

그럴때 가장 좋은건..

그냥 드라이버 다시 까는겁니다.

 

네 정말입니다. 간단하게도 업데이트나 그런게 아니라 지금까지 써온 버전을 다시 까는것이 가장 현명한 선택입니다.

 

sudo apt remove nvidia-*

재부팅

sudo apt install nvidia-driver

재부팅

 

이러니까 다시 잘 잡히네요. 아마도 CUDA관련 라이브러리를 싹 지웠다가 다시 깔면서 해결이 된 것 같습니다.

 

윈도우에서 안 잡힐때는 그냥 윈도우를 포맷하는게 정답같습니다...

,

결국 우분투에서 데비안으로 넘어갔습니다. 이쯤되니 우분투 분투기라는 블로그 이름하고 달라져버렸지만 어찌되었든 우분투를 안 쓰는건 아니기에 (업무상 써야합니다.) 이름을 바꾸지는 않을 겁니다.
 
처음 데비안으로 바꾸고 나서 고생한것이 LighDM이 불편하다는 것이었습니다.
 
우분투는 사용자 리스트가 있고 여기서 고른다음 비밀번호만 치면 되는 구조였는데 데비안은 사용자 이름도 치고 비밀번호도 처야 하는 구조더군요.
 
왠지 윈도8 시절의 로그온 화면같은 느낌?
 
하지만 LighhtDM설정만 바꾸면 될 일입니다.
 
우선은 관리자 모드로 전환합니다. root 계정이지요.  root로 로그온 하거나 sudo -s 명령으로 루트모드로 들어갑니다.
/etc/lightdm/lightdm.conf.d/  폴더에 (없다면 만듭시다) 50-myconfig.conf 파일을 만듭니다. 사실 파일명은 무엇이든 상관없습니다. 그냥 나만의 세팅이라는 이름하에 쓰는 것이지요.
 
sudo nano /etc/lightdm/lightdm.conf.d/50-myconfig.conf
 
그리고 다음 내용을 채웁니다.
[SeatDefaults]
allow-guest=false
greeter-show-manual-login=true
greeter-hide-users=false
 
이제 재부팅 하면 우분투처럼 사용자를 리스트에서 선택하는 식으로 바뀝니다. 편하죠.

,

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt install libgl1-mesa-dri:i386 libgl1:i386
sudo apt-get upgrade steam -f
sudo apt install nvidia-driver-libs:i386

 

이건 Nvidia유저들에게서만 나오는 문제라고 한다.

따라서 가장 마지막 명령어인 nvidia-driver-libs:i386 이 가장 핵심 명령어이다.

,

Nvidia 드라이버는 우분투에서 참 애환이 담긴 드라이버입니다.

바이너리 버전만 배포되기에 우분투 개발자들도 처리 하지 못할 문제를 일으킬 뿐더러 가끔 사용자들도 배포판 업그레이드를 못하게 막는 물건입니다.

 

하지만 이를 쓸 수 밖에 없는 이유가 이보다 더 안정적인 드라이버가 없습니다. Nouveau는 여전히 불안정한 면이  있고 그 외에는 드라이버가 전무합니다.

하드웨어적으로 라데온으로 바꾸는 방법도 있는데 이쪽은 아시다시피 더했으면 더했지 덜하지 않습니다. 그나마 오픈소스 드라이버가 안정적인 라데온이기에 이쪽은 대안이 있기는 합니다.

 

그럼에도 Nvidia카드를 선호하는이유는 아무래도 CUDA때문일 가능성이 높습니다. 현재 AI가 대두된 상황이고 AI개발에 가장 좋은 조합이 Nvidia카드에 우분투입니다. 대다수 라이브러리들이 우분투에서 Nvidia카드로 학습하는 것을 기반으로 내놓고 있지요.

 

그럼 Nvidia 드라이버를 안정적으로 쓰는 방법은 무엇이 있을까요?

 

그냥, 안정적이라고 검증된 구버전을 쓰는 것입니다. 하지만 가끔 멋대로 드라이버가 업그레이드 되기도 하며 이에 따라 꼬이기도 합니다.

이번에 제가 그런 꼴을 당했는데 원인은 우분투 저장소에서 제가 사용하던 버전을 내려버린 것입니다. 무슨 문제가 있긴 있었겠지요.

 

제가 사용하던 버전은 515버전입니다. 그전에 wayland에서 일어나던 문제가 처음으로 해결된 버전입니다. 그리고 전 여기에 정착해서 잘 쓰고 있었는데 우분투에서 멋대로 525버전을 설치하더니 환경이 모두 꼬이고 말았습니다. 그래서 드라이버를 재설치하려고보니 설치가 자꾸 안 되네요.

 

찾아보니 방법이...

 

우선 그래도 GUI로 부팅이 된다면 추가 드라이버를 실행합니다. 

그리고 Nouveau로 우선 되돌려 줍니다. 이건 우분투 개발자들이 관여하기에 다른게 꼬여도 문제는 일으키지 않습니다. 

그리고 재부팅 한 다음 다시 드라이버를 설치하면 됩니다.

 

하지만 GUI도 안 뜨고 완전 박살이 난 상태라면 콘솔까지는 뜰겁니다.

 

어찌됐든 인터넷은 연결될테니 다음 명령으로 처리합니다.

sudo apt update

sudo apt dist-upgrade

sudo apt install nvidia-driver-XXX

여기서 XXX는 설치가 가능한 버전입니다. 스마트폰이든 다른 PC든 인터넷에 들어가서 현재 우분투 버전에서 설치가 가능한 드라이버 버전을 찾아보세요. 그리고 재부팅하면 정상적으로 드라이버가 설치되어 작동할 겁니다.

,

일부러 픽셀 느낌을 내는 게임도 있지만 그냥 오래되서 고전 느낌이 나는 게임들이 의외로 많습니다. 대부분은 필터로 처리하지만 그래도 뭔가 이상한건 사실이지요.

 

3D게임에서는 FSR이라던가 DLSS라던가 하는 기술이 만들어졌습니다. 낮은 해상도로 렌더링 한다음 이를 AI로 업스케일링 하는 기술인데 GPU성능 발전이 슬슬 한계를 맞이하고 있다보니 FHD수준으로 렌더링한 다음 4k이상의 화질로 뽑는 것이지요. 그런데 사실 2023년 현재 FHD면 아직 충분하다는 소리를 듣고 있고 굳이 4k까지 욕심을 내지 않다보니 이쪽은 없어도 그만이라는 소리를 주로 듣습니다.

 

그렇다면 옛날 게임은 어떨까요? 옛날에는 640x480이면 고화질이란 소리를 들었습니다. 그리고 이 화질로만 구동되는 게임들이 꽤 있었습니다. 그래서 그런지 옛날 게임을 요즘 돌리면 옛날보다 화질이 더 구립니다. 아티팩트가 튄다고 하는데 말그대로 뭔가 튀어 보이니 화질이 더 구려보이는 겁니다.

 

옛날 게임중에 Need for Speed Underground라는 게임을 예로 들면 메뉴에선 640x480으로 렌더링하고 게임안에서는 1024x728 정도로 렌더링 되도록 짜여있는데 이를 Hook해서 1920x1080으로 렌더링 하는 파일이 배포되고 있습니다. DirectX 구조가 분석이 되다보니 이런것이 가능한 것이지요. 이런 류의 프로그램들은 많이 개발 되었고 지금도 만들어지고 있습니다. 특히 DirectX구버전에서 신버전으로 구동시키는 라이브러리(dgVoodoo같은)들이 이런 기능들을 같이 내장하고 있거나 별도의 플러그인 형태로 지원합니다.

 

3D게임들이야 렌더링 해상도를 강제로 변경하면 되니까 그렇다 치는데 2D게임들은 어떨까요?

이게 참 문제인데 기본적인 2D 이미지들은 해당해상도에서 굴리는 것을 전제로 그려졌기에 픽셀이 튑니다. 그래서 이를 뭉개는 필터들이 만들어졌습니다. 하지만 필터로 뭉개면 또 그건 그것대로 보기가 안 좋습니다. 색감도 죽어버리고요.

 

그래서 개인적으로 2D게임에도 이와 비슷한 DLSS같은 업스케일링 기능이 있었으면 좋겠는데 아직 이런 것이 만들어지지는 않은 것 같습니다. 옛날 게임인 쿠키샵을 해봤는데 해상도가 참...

 그래서 생각한 것이 고전게임을 창모드로 띄운 다음 이를 업스케일링해서 또 띄워주는 그런 프로그램은 없을까하는 것입니다. Waifu2X 라는 것이 느리긴 해도 확실히 아니메풍 2D게임의 업스케일링을 잘 해주고 있고 이와 비슷한 알고리즘들도 많이 만들어져있습니다.(Anime4k, Real-ESRGAN  등) Anime4k는 fast모드로 프레임당 5ms속도로 스케일을 올린다는데 가능하다면 이런 빠른 기술로 어떻게든 가능하지 않겠는가 하는게 제 생각입니다.

 

라고 생각하고 찾아본 순간..

Magpie 라는 프로그램이 있군요... 역시 세상은 좁다..

,

오래만의 넋두리입니다

요즘 전자기기들은 펌웨어라는게 대부분 들어갑니다. 전자기기들에게 있어서 이 펌웨어는 최소 구동을 위한 요소입니다. 즉, 이 펌웨어가 없으면 전자기기들은 그냥 벽돌이됩니다.

펌웨어는 엄연히 소프트웨어이기에 버그란게 당연히 존재합니다. 걔중에는 치명적인 버그도 있고 하드웨어에 밀접한 이상 기기를 망가뜨리기도 합니다.

----------------------------
최근 ESP8266모듈을 쓸일이 있었습니다.  교육용 키트로 와이파이 기능을 쓸 수 있게하는 제품입니다.  인기가 많아서 후속작인 ESP32가 기업용 제품에 쓰이기까지 하지요.

그런데 "교육용"이기에 당연히 저는 이 제품이 아두이노처럼 그냥 예제따라 하면 작동할 줄 알았습니다. 그런데 이상하게 동작이 안 되길래 찾던중 "펌웨어업데이트의 지옥에 온걸 환영한다"라는 글이 있더군요. ESP8266모듈은 펌웨어 업데이트가 엄청 빡세기로 유명하고 시중에 도는 제품은 펌웨어가 있기도 하고 없기도 하답니다.

이게 뭔 소리인가 싶었는데 칩셋제조국을 보고 이해했습니다. 본사가 상하이...
아무래도 칩셋 구하기 쉽다보니 짝퉁도 엄청 많아서(그런데 어찌어찌 동작은 합니다) 펌웨어 버전이 낮거나 없이 파는게 많은듯 하더군요.

결국 20개의 모듈을 개삽질해가면서 펌웨어 업데이트를 했고 지금은 정상작동합니다.
하지만 업데이트 하면서 펌웨어도 안 넣고 판다고 쌍욕을 엄청 했지요.
----------------------------
얼마전에 SSD 인클로저라는걸 샀습니다.
말이 거창해서 그렇지 SSD를 USB로 연결할 수 있게하는 제품입니다.

이쪽은 그래도 나름 유명업체것을 썼기에 큰불만 없었는데 이상하게 사용하고 30분만 지나면 열이 미친듯이 나더군요. 심지어 5기가 이상 파일을 넣으면 작동을 멈춥니다.

알고보니 펌웨어 버그였고 펌웨어 업데이트를 하고나니 정상적으로 작동합니다. 심지어 작년에 핫픽스수준으로 나온것이더군요. 그냥 펌웨어가 초기 버전이었던겁니다.
원인을 알고보니 제가 산건 한국정식업체것이 아니라 병행수입제품이었고 병행수입한곳이 펌웨어업데이트를 할리가 없으니 1년동안 먼지쌓인걸 그냥 배송한겁니다.

저야 이상해서 인터넷을 찾아서 원인을 펌웨어가 문제라고 알았지만 보통사람들은 모르겠지요. 그냥 고장난줄 알거고 버릴겁니다. 정식수입업체는 펌웨어 업데이트를 직접 해준다고 하는데 저는 그것도 불가능했지요.

----------------------------------
한때 닌텐도의 위유가 펌웨어 업데이트로 곤혹을 치뤘습니다.  새제품을 사면 업데이트로 허송세월을 보냈거든요. 그런데 인터넷 상태가 좋은 집만 있는게 아니죠. 그래서 사람들이 펌웨어를 업데이트해서 팔아달라고 하니(어차피 공장에서 나오는 족족 팔려나가고 있었으니) 닌텐도가 "선물하기전에 업데이트해주세요"라는 망발을 해서 욕을 먹었습니다. 포장을 풀어서 선물을 하면 쓰던거 주는거 같아서 좀 그렇잖아요.

플레이스테이션이 구버전 펌웨어에서 보안이 뚫려서 작살난거 생각하면 펌웨어를 미리 올려야 자사에 더 이득이었을텐데요.

스위치부터는 새제품에는 그 당시 최신 펌웨어가 들어있는것 같은데 펌웨어를 공장출고단계에서 올려주는게 이래저래 더 이득이었다는걸 몰랐던것 같습니다.
---------------------------------

그러니까 제발 펌웨어좀 최신버전 넣어서 팔아주세요...

,

노래를 불러주는 AI가 있습니다. Diff-SVC라고 부릅니다.
물론 정확히 말하면 stable-diffusion을 기반으로 목소리를 변환해주는것에 가깝습니다. 뒤에 SVC는 Singing Vocal Conversion이라고 해서 대놓고 목소리변환이라고 정의합니다.

누군가의 목소리를 학습한 AI가 다른 사람이 부른 노래의 목소리를 학습한 목소리로 바꿔주는 겁니다.

방법은 Stable-Diffusion과 동일한데

1. 목소리를 학습한 AI를 준비합니다. 이 AI는 사실 MEL-Spectrogram형태로 목소리를 학습했습니다.
2. 타겟의 음성을 준비합니다.
3. 여기에 각종노이즈를 섞어줍니다. 그냥 전파가 잘 안잡히는 라디오 수준으로 만든다고 생각하면 됩니다. 노래가 잡음과 함께 들려서 "노래가 들린다"수준으로 만드는겁니다.
4. 이걸 AI한테 "복원"하라고 시킵니다. AI는 자기나름대로 "복원"작업을 해서 돌려줍니다. 물론 아는 목소리는 자기가 학습한 목소리 뿐이라 오리지널이 아닌 학습한 그 목소리로 복원해줍니다.

...?

5. 보컬의 목소리가 바뀌었습니다.


그래서 이것저것 해보던 중 굉장한 사실을 알았습니다. 분명 "복원"이지만 원래 파일상태가 개판인 타겟을 넣으면 복원된것도 개판으로 나오더군요.

전 이걸 가이드보컬이라고 부르고 있습니다. 실제 녹음실에서 가수들이 노래부를때 가이드보컬의 노래를 듣고 이에 맞춰서 자신의 목소리로 부르거든요. 가이드보컬은 주로 오래된 경력자나 진짜 실력자가 합니다. 그래야 신인 가수들이 따라오니까요.

꼭 AI가 하는 짓이 가이드보컬을 따라 부르는 느낌이네요. 괜찮은 보컬은 AI가 변환했을때 상당히 훌륭한 결과가 나오는 반면 엉망인(특히 음반에서 보컬추출 등으로 만들어서 여기저기 망가진)걸 타겟으로하면 AI도 이상하게 만듭니다.

재미있지요.
TTS의 경우 학습초기를 보면 옹알이를 들을 수 있는데 꼭 애기들이 말을 배우는 느낌이 듭니다. 그런데 보컬AI도 좋은 가이드를 만나야 좋은 결과가 나온다는게 참 신기하네요.

,

요즘 스마트폰들은 3.5파이 스테레오 구멍이 없습니다.
그냥 블루투스 쓰라는 것처럼 들리는데 삼성의 경우 USB-C형태의 이어폰을 번들로 줍니다. 이걸로 라디오도 들으라는 의미인데 라디오를 위해 굳이 그걸 챙길리가...

그리고 이어폰을 쓰면서 충전도 안 되지요. 이어폰이 USB를 점령하고 있으니까요.

하지만 사람들은 다 계획이 있었나봅니다.

이런 케이블을 하나 사면 충전과 동시에 3.5파이 이어폰을 쓸 수 있습니다.

더 웃긴건 케이블안에 DAC가 내장되어있는건지 소리가 노이즈없이 더 깨끗하게 들립니다.

USB-C AUX Y젠더라고 검색하면 비슷한것들이 나오고 케이블류는 다 파는걸로 유명한 Coms에서 팝니다.
일단 제가 구매한건 IH618이라는 품목인데 인터넷에는 안 나오네요.

어쨌건 굳이 3.5파이 구멍이 없어도 되겠네요

,

우선 고등학교에서 수열은 배우셨을거라고 생각하고 간단한걸 이야기해보겠습니다

1 2 4 8 16 32 64 ?

다음에는 무엇이 올까요?
눈치빠른 사람은 128이라고 할겁니다.

이런걸 많이 해보셨다면 패턴이 눈에 보이니까요.
뒤의숫자=2x앞의숫자

2 3 5 9 17 33 65 ?
이건요?

129라는 숫자가 보이셨나요? 아까 수열에 +1이 된 패턴입니다. 생각보다 쉽죠?
뒤의숫자 = 2x앞의숫자+1

이제부터는 조금 다른 문제입니다.

0 1 3 7 15 29 63 127

여기서 잘못 된 숫자를 고쳐보세요.

이것의 답은 29가 아닌 31입니다. 아까 패턴에서 -1을 한건데 엉뚱한 녀석이 있습니다.
그래서 그 부분을 수열의 패턴을 "학습"을 통해 알아냈고 잘못 된 부분을 "복원"했습니다.

어쨌건 우린 일부가 망가진 수열에서 잘 못된 부분을 찾아서 고칠 수 있게 되었습니다. 왜냐하면 패턴을 함수형태로 알고 있으니 이 함수에서 벗어난 부분을 고치면 되니까요.

이번엔 일부가 망가진 수준이 아닌 모두 망가진 수열을 준비해봅니다.
이 수열은 우리가 알아낸 함수와 맞는 부분이 하나도 없습니다.

3 54 19 7 284 16 34 18

이중에 아무거나 하나를 붙잡고 복원해봅시다
저는 19를 기준으로 하겠습니다
7 11 19 36 67 131

역시 제일 위에서 알아낸 수열에서 -3을 한 것으로 했습니다. 하지만 19말곤 같은 숫자가 없네요.
이건 거의 "무에서 유를 창조"한 수준입니다. 어찌됐건 우리가 학습한 패턴에 맞게 "복원"을 했습니다.

우리는 이런식으로 "패턴을 학습"했고 이에 맞추어 "복원"했지만 사실상 "창조"에 가까운 짓을 해버렸습니다.


그런데 이 수열이라는게 말입니다. 우리가 보자마자 알아낼 수 있을 정도로 쉬운녀석들만 있는 것이 아닙니다.

이게 뭐지 싶은 규칙성따위 안 보이는 수열도 참 많습니다. 대부분의 자연현상들이 그러합니다. 그러나 과학자들은 그걸 최대한 복잡한 함수화해서 근사값형태로 중간값들을 뽑아내지요. 데이터들을 최대한 모아서 오차를 점점 줄여나가서 기어코 설명할 수 있을 정도로 수치화 합니다.

그림도 사실 규칙성따위 보이지 않는 수열입니다. 심지어 이건 그냥 수열도 아니고 2차원 수열입니다. 이걸 우린 행렬이라고 부릅니다. 고등학생때 수학을 포기한적이 없다면 한번은 들어보셨을겁니다.

정제가 잘 된 그림들을 모아 행렬로 표시하고 행렬들의 패턴을 알아내 함수 형태로 가지고 있는겁니다. 다만 그 함수가 굉장히 길고 복잡해서 여백이 부족해 적기 힘든겁니다.

하지만 컴퓨터는 단순노동으로 그 긴 함수계산을 빠르게 할 수 있고 "학습"이라는 이름하에 패턴파악을 할 수 있습니다. 그리고 인간이라는 놈들은 말도 안되는 다 망가진 노이즈 덩어리를 가지고 복원하라고 던지는거고 컴퓨터는 불평없이 복원을 하는겁니다.
매번 그림을 뽑을때마다 결과가 달라지는 것도 던지는 노이즈그림이 달라지기 때문입니다.

그렇기에 학습되지 못 한 그림은 만들지 못 하는 것이고 단순히 기존 그림들을 조합하는것도 아니라는 이야기가 되는 겁니다. 그렇기에 단순히 기존 그림들의 조합이 아니라는 것일 겁니다.

여기까지가 가장 이미지 생성알고리즘, 그 중 Stable-diffusion의 기초적인 이론입니다.

,